comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/FloodDurationProcessor.java @ 9203:9831f6c60473

AbstractSInfoLineProcessor refactoring
author gernotbelger
date Mon, 02 Jul 2018 13:00:59 +0200
parents b4402594213b
children 3dae6b78e1da
comparison
equal deleted inserted replaced
9202:b4402594213b 9203:9831f6c60473
11 package org.dive4elements.river.artifacts.sinfo.common; 11 package org.dive4elements.river.artifacts.sinfo.common;
12 12
13 import java.util.HashSet; 13 import java.util.HashSet;
14 import java.util.Set; 14 import java.util.Set;
15 15
16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
16 import org.dive4elements.artifactdatabase.state.Facet; 17 import org.dive4elements.artifactdatabase.state.Facet;
17 import org.dive4elements.artifacts.CallContext; 18 import org.dive4elements.artifacts.CallContext;
18 import org.dive4elements.river.artifacts.common.AbstractCalculationResult; 19 import org.dive4elements.river.artifacts.common.AbstractCalculationResult;
19 import org.dive4elements.river.artifacts.resources.Resources; 20 import org.dive4elements.river.artifacts.resources.Resources;
20 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult; 21 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult;
21 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; 22 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
23 import org.dive4elements.river.exports.DiagramGenerator;
24 import org.dive4elements.river.themes.ThemeDocument;
22 25
23 /** 26 /**
24 * Processor to generate the facet and data series of infrastructure flood durations 27 * Processor to generate the facet and data series of infrastructure flood durations
25 * 28 *
26 * @author Matthias Schäfer 29 * @author Matthias Schäfer
27 * 30 *
28 */ 31 */
29 public final class FloodDurationProcessor extends AbstractSInfoLineProcessor<AbstractCalculationResult> { 32 public final class FloodDurationProcessor extends AbstractSInfoProcessor {
30 33
31 public static final String FACET_FLOOD_DURATION = "sinfo_facet_flood_duration"; 34 public static final String FACET_FLOOD_DURATION = "sinfo_facet_flood_duration";
32 35
33 public static final String FACET_FLOOD_DURATION_DESCRIPTION = "sinfo_facet_flood_duration.description"; 36 public static final String FACET_FLOOD_DURATION_DESCRIPTION = "sinfo_facet_flood_duration.description";
34 37
53 56
54 public FloodDurationProcessor() { 57 public FloodDurationProcessor() {
55 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); 58 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES);
56 } 59 }
57 60
61 // @Override TODO: REMOVE (has been replaced by doGetType
62 // protected double[][] doGetPoints(final AbstractCalculationResult data, final String facetName) {
63 //
64 // if (FACET_FLOOD_DURATION.contentEquals(facetName))
65 // return ((FloodDurationCalculationResult) data).fetchInfrastructurePoints(SInfoResultType.floodDuration);
66 //
67 // if (FACET_MAIN_VALUE_1_DURATION.contentEquals(facetName))
68 // return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue1Duration);
69 //
70 // if (FACET_MAIN_VALUE_2_DURATION.contentEquals(facetName))
71 // return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue2Duration);
72 //
73 // if (FACET_MAIN_VALUE_3_DURATION.contentEquals(facetName))
74 // return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue3Duration);
75 //
76 // final String error = String.format("Unknown facet name: %s", facetName);
77 // throw new UnsupportedOperationException(error);
78 // }
58 79
59 @Override 80 public static Facet createFloodDurationFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result,
60 protected double[][] doGetPoints(final AbstractCalculationResult data, final String facetName) { 81 final int index) {
82
83 return AbstractSInfoProcessor.createFacet(context, hash, id, result, index, I18N_AXIS_LABEL, FACET_FLOOD_DURATION, FACET_FLOOD_DURATION_DESCRIPTION);
84 }
85
86 private SInfoResultType doGetType(final String facetName) {
61 87
62 if (FACET_FLOOD_DURATION.contentEquals(facetName)) 88 if (FACET_FLOOD_DURATION.contentEquals(facetName))
63 return ((FloodDurationCalculationResult) data).fetchInfrastructurePoints(SInfoResultType.floodDuration); 89 return SInfoResultType.floodDuration;
64 90
65 if (FACET_MAIN_VALUE_1_DURATION.contentEquals(facetName)) 91 if (FACET_MAIN_VALUE_1_DURATION.contentEquals(facetName))
66 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue1Duration); 92 return SInfoResultType.mainValue1Duration;
67 93
68 if (FACET_MAIN_VALUE_2_DURATION.contentEquals(facetName)) 94 if (FACET_MAIN_VALUE_2_DURATION.contentEquals(facetName))
69 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue2Duration); 95 return SInfoResultType.mainValue2Duration;
70 96
71 if (FACET_MAIN_VALUE_3_DURATION.contentEquals(facetName)) 97 if (FACET_MAIN_VALUE_3_DURATION.contentEquals(facetName))
72 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue3Duration); 98 return SInfoResultType.mainValue3Duration;
73 99
74 final String error = String.format("Unknown facet name: %s", facetName); 100 final String error = String.format("Unknown facet name: %s", facetName);
75 throw new UnsupportedOperationException(error); 101 throw new UnsupportedOperationException(error);
102
76 } 103 }
77 104
78 public static Facet createFloodDurationFacet(final CallContext context, final String hash, final String id, 105 public static Facet createMainValueDurationFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result,
79 final AbstractCalculationResult result, final int index) { 106 final int index) {
80
81 return AbstractSInfoLineProcessor.createFacet(context, hash, id, result, index, I18N_AXIS_LABEL,
82 FACET_FLOOD_DURATION, FACET_FLOOD_DURATION_DESCRIPTION);
83 }
84
85 public static Facet createMainValueDurationFacet(final CallContext context, final String hash, final String id,
86 final FloodDurationCalculationResult result, final int index) {
87 107
88 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_DURATION_DESCRIPTION, FACET_MAIN_VALUE_DURATION_DESCRIPTION, 108 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_DURATION_DESCRIPTION, FACET_MAIN_VALUE_DURATION_DESCRIPTION,
89 result.getMainValueLabel(index)); 109 result.getMainValueLabel(index));
90 assert ((index >= 0) && (index <= 2)); 110 assert ((index >= 0) && (index <= 2));
91 final String facetName = new String[] { FACET_MAIN_VALUE_1_DURATION, FACET_MAIN_VALUE_2_DURATION, FACET_MAIN_VALUE_3_DURATION }[index]; 111 final String facetName = new String[] { FACET_MAIN_VALUE_1_DURATION, FACET_MAIN_VALUE_2_DURATION, FACET_MAIN_VALUE_3_DURATION }[index];
92 return new SInfoResultFacet(0, facetName, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash); 112 return new SInfoResultFacet(0, facetName, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
93 } 113 }
114
115 @Override
116 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
117
118 return buildSeriesForType(generator, bundle, theme, visible, doGetType(bundle.getFacetName()), GAP_DISTANCE);
119 }
94 } 120 }

http://dive4elements.wald.intevation.org