comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/FloodDurationProcessor.java @ 9202:b4402594213b

More work on calculations and output for S-Info flood duration workflow (chart types 1 and 2)
author mschaefer
date Mon, 02 Jul 2018 07:33:53 +0200
parents 1614cb14308f
children 9831f6c60473
comparison
equal deleted inserted replaced
9201:491e1a434457 9202:b4402594213b
14 import java.util.Set; 14 import java.util.Set;
15 15
16 import org.dive4elements.artifactdatabase.state.Facet; 16 import org.dive4elements.artifactdatabase.state.Facet;
17 import org.dive4elements.artifacts.CallContext; 17 import org.dive4elements.artifacts.CallContext;
18 import org.dive4elements.river.artifacts.common.AbstractCalculationResult; 18 import org.dive4elements.river.artifacts.common.AbstractCalculationResult;
19 import org.dive4elements.river.artifacts.resources.Resources;
20 import org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationCalculationResult;
21 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
19 22
20 /** 23 /**
21 * Processor to generate the facet and data series of infrastructure flood durations 24 * Processor to generate the facet and data series of infrastructure flood durations
22 * 25 *
23 * @author Matthias Schäfer 26 * @author Matthias Schäfer
29 32
30 public static final String FACET_FLOOD_DURATION_DESCRIPTION = "sinfo_facet_flood_duration.description"; 33 public static final String FACET_FLOOD_DURATION_DESCRIPTION = "sinfo_facet_flood_duration.description";
31 34
32 public static final String FACET_MAIN_VALUE_1_DURATION = "mainvalue.1.duration"; 35 public static final String FACET_MAIN_VALUE_1_DURATION = "mainvalue.1.duration";
33 36
37 public static final String FACET_MAIN_VALUE_2_DURATION = "mainvalue.2.duration";
38
39 public static final String FACET_MAIN_VALUE_3_DURATION = "mainvalue.3.duration";
40
34 public static final String FACET_MAIN_VALUE_DURATION_DESCRIPTION = "mainvalue.duration.description"; 41 public static final String FACET_MAIN_VALUE_DURATION_DESCRIPTION = "mainvalue.duration.description";
35 42
36 private static final String I18N_AXIS_LABEL = "sinfo.chart.flood_duration.section.yaxis.label"; 43 private static final String I18N_AXIS_LABEL = "sinfo.chart.flood_duration.section.yaxis.label";
37 44
38 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>(); 45 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>();
39 46
40 static { 47 static {
41 HANDLED_FACET_TYPES.add(FACET_FLOOD_DURATION); 48 HANDLED_FACET_TYPES.add(FACET_FLOOD_DURATION);
42 HANDLED_FACET_TYPES.add(FACET_MAIN_VALUE_1_DURATION); 49 HANDLED_FACET_TYPES.add(FACET_MAIN_VALUE_1_DURATION);
50 HANDLED_FACET_TYPES.add(FACET_MAIN_VALUE_2_DURATION);
51 HANDLED_FACET_TYPES.add(FACET_MAIN_VALUE_3_DURATION);
43 } 52 }
44 53
45 public FloodDurationProcessor() { 54 public FloodDurationProcessor() {
46 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES); 55 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES);
47 } 56 }
48 57
49 58
50 @Override 59 @Override
51 protected double[][] doGetPoints(final AbstractCalculationResult data, final String facetName) { 60 protected double[][] doGetPoints(final AbstractCalculationResult data, final String facetName) {
61
52 if (FACET_FLOOD_DURATION.contentEquals(facetName)) 62 if (FACET_FLOOD_DURATION.contentEquals(facetName))
53 return data.getStationPoints(SInfoResultType.floodDuration); 63 return ((FloodDurationCalculationResult) data).fetchInfrastructurePoints(SInfoResultType.floodDuration);
54 64
55 if (FACET_MAIN_VALUE_1_DURATION.contentEquals(facetName)) 65 if (FACET_MAIN_VALUE_1_DURATION.contentEquals(facetName))
56 return data.getStationPoints(SInfoResultType.mainValue1Duration); 66 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue1Duration);
67
68 if (FACET_MAIN_VALUE_2_DURATION.contentEquals(facetName))
69 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue2Duration);
70
71 if (FACET_MAIN_VALUE_3_DURATION.contentEquals(facetName))
72 return ((FloodDurationCalculationResult) data).fetchMainValuePoints(SInfoResultType.mainValue3Duration);
57 73
58 final String error = String.format("Unknown facet name: %s", facetName); 74 final String error = String.format("Unknown facet name: %s", facetName);
59 throw new UnsupportedOperationException(error); 75 throw new UnsupportedOperationException(error);
60 } 76 }
61 77
62 public static Facet createFloodDurationFacet(final CallContext context, final String hash, final String id, 78 public static Facet createFloodDurationFacet(final CallContext context, final String hash, final String id,
63 final AbstractCalculationResult result, final int index) { 79 final AbstractCalculationResult result, final int index) {
80
64 return AbstractSInfoLineProcessor.createFacet(context, hash, id, result, index, I18N_AXIS_LABEL, 81 return AbstractSInfoLineProcessor.createFacet(context, hash, id, result, index, I18N_AXIS_LABEL,
65 FACET_MAIN_VALUE_1_DURATION, FACET_MAIN_VALUE_DURATION_DESCRIPTION); 82 FACET_FLOOD_DURATION, FACET_FLOOD_DURATION_DESCRIPTION);
66 } 83 }
67 84
68 public static Facet createMainValueDurationFacet(final CallContext context, final String hash, final String id, 85 public static Facet createMainValueDurationFacet(final CallContext context, final String hash, final String id,
69 final AbstractCalculationResult result, final int index) { 86 final FloodDurationCalculationResult result, final int index) {
70 return AbstractSInfoLineProcessor.createFacet(context, hash, id, result, index, I18N_AXIS_LABEL, 87
71 FACET_FLOOD_DURATION, FACET_FLOOD_DURATION_DESCRIPTION); 88 final String description = Resources.getMsg(context.getMeta(), FACET_MAIN_VALUE_DURATION_DESCRIPTION, FACET_MAIN_VALUE_DURATION_DESCRIPTION,
89 result.getMainValueLabel(index));
90 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];
92 return new SInfoResultFacet(0, facetName, description, I18N_AXIS_LABEL, ComputeType.ADVANCE, id, hash);
72 } 93 }
73 } 94 }

http://dive4elements.wald.intevation.org