comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/FloodHeightProcessor.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;
22 import org.dive4elements.river.exports.LongitudinalSectionGenerator; 24 import org.dive4elements.river.exports.LongitudinalSectionGenerator;
25 import org.dive4elements.river.themes.ThemeDocument;
23 26
24 /** 27 /**
25 * Processor to generate the facet and data series of infrastructure flood heights 28 * Processor to generate the facet and data series of infrastructure flood heights
26 * 29 *
27 * @author Matthias Schäfer 30 * @author Matthias Schäfer
28 * 31 *
29 */ 32 */
30 public final class FloodHeightProcessor extends AbstractSInfoLineProcessor<AbstractCalculationResult> { 33 public final class FloodHeightProcessor extends AbstractSInfoProcessor {
31 34
32 public static final String FACET_FLOOD_HEIGHT = "sinfo_facet_flood_height"; 35 public static final String FACET_FLOOD_HEIGHT = "sinfo_facet_flood_height";
33 36
34 public static final String FACET_FLOOD_HEIGHT_DESCRIPTION = "sinfo_facet_flood_height.description"; 37 public static final String FACET_FLOOD_HEIGHT_DESCRIPTION = "sinfo_facet_flood_height.description";
35 38
54 57
55 public FloodHeightProcessor() { 58 public FloodHeightProcessor() {
56 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); 59 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES);
57 } 60 }
58 61
59 62 protected SInfoResultType doGetType(final String facetName) {
60 @Override
61 protected double[][] doGetPoints(final AbstractCalculationResult data, final String facetName) {
62 if (FACET_FLOOD_HEIGHT.contentEquals(facetName)) 63 if (FACET_FLOOD_HEIGHT.contentEquals(facetName))
63 return ((FloodDurationCalculationResult) data).fetchInfrastructurePoints(SInfoResultType.infrastructureHeight); 64 return SInfoResultType.infrastructureHeight;
64 65
65 if (FACET_MAIN_VALUE_1_HEIGHT.contentEquals(facetName)) 66 if (FACET_MAIN_VALUE_1_HEIGHT.contentEquals(facetName))
66 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.waterlevel1); 67 return SInfoResultType.waterlevel1;
67 68
68 if (FACET_MAIN_VALUE_2_HEIGHT.contentEquals(facetName)) 69 if (FACET_MAIN_VALUE_2_HEIGHT.contentEquals(facetName))
69 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.waterlevel2); 70 return SInfoResultType.waterlevel2;
70 71
71 if (FACET_MAIN_VALUE_3_HEIGHT.contentEquals(facetName)) 72 if (FACET_MAIN_VALUE_3_HEIGHT.contentEquals(facetName))
72 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.waterlevel3); 73 return SInfoResultType.waterlevel3;
73 74
74 final String error = String.format("Unknown facet name: %s", facetName); 75 final String error = String.format("Unknown facet name: %s", facetName);
75 throw new UnsupportedOperationException(error); 76 throw new UnsupportedOperationException(error);
76 } 77 }
77 78
78 public static Facet createFloodHeightFacet(final CallContext context, final String hash, final String id, 79 public static Facet createFloodHeightFacet(final CallContext context, final String hash, final String id, final AbstractCalculationResult result,
79 final AbstractCalculationResult result, final int index) { 80 final int index) {
80 return AbstractSInfoLineProcessor.createFacet(context, hash, id, result, index, I18N_AXIS_LABEL, 81 return AbstractSInfoProcessor.createFacet(context, hash, id, result, index, I18N_AXIS_LABEL, FACET_FLOOD_HEIGHT, FACET_FLOOD_HEIGHT_DESCRIPTION);
81 FACET_FLOOD_HEIGHT, FACET_FLOOD_HEIGHT_DESCRIPTION);
82 } 82 }
83 83
84 public static Facet createMainValueHeightFacet(final CallContext context, final String hash, final String id, 84 public static Facet createMainValueHeightFacet(final CallContext context, final String hash, final String id, final FloodDurationCalculationResult result,
85 final FloodDurationCalculationResult result, final int index) { 85 final int index) {
86 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, 86 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_HEIGHT_DESCRIPTION, FACET_MAIN_VALUE_HEIGHT_DESCRIPTION,
87 result.getMainValueLabel(index)); 87 result.getMainValueLabel(index));
88 assert ((index >= 0) && (index <= 2)); 88 assert ((index >= 0) && (index <= 2));
89 final String facetName = new String[] { FACET_MAIN_VALUE_1_HEIGHT, FACET_MAIN_VALUE_2_HEIGHT, FACET_MAIN_VALUE_3_HEIGHT }[index]; 89 final String facetName = new String[] { FACET_MAIN_VALUE_1_HEIGHT, FACET_MAIN_VALUE_2_HEIGHT, FACET_MAIN_VALUE_3_HEIGHT }[index];
90 return new SInfoResultFacet(0, facetName, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash); 90 return new SInfoResultFacet(0, facetName, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
91 } 91 }
92
93 @Override
94 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
95
96 return buildSeriesForType(generator, bundle, theme, visible, doGetType(bundle.getFacetName()), null);
97 }
92 } 98 }

http://dive4elements.wald.intevation.org