annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/FlowDepthDevelopmentProcessor.java @ 8980:b194fa64506a

SINFO - show results themes according to spec, either raw data or floating mean values. Some improvements to error handling and handling of empty results.
author gernotbelger
date Thu, 05 Apr 2018 18:30:34 +0200
parents ee5ce13016ed
children 1cc7653ca84f
rev   line source
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
2 * Software engineering by
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
5 *
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
9 */
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
10
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
11 package org.dive4elements.river.artifacts.sinfo.common;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
12
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
13 import java.util.HashSet;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
14 import java.util.Set;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
15
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
16 import org.dive4elements.artifactdatabase.state.Facet;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
17 import org.dive4elements.artifacts.CallContext;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
18 import org.dive4elements.river.artifacts.resources.Resources;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
19 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
20
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
21 public final class FlowDepthDevelopmentProcessor extends AbstractSInfoLineProcessor<AbstractSInfoCalculationResult> {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
22
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
23 private static final String I18N_AXIS_LABEL = "sinfo.chart.flow_depth_development.section.yaxis.label";
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
24
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
25 private static final String SINFO_CHART_FLOW_DEPTH_DEVELOPMENT_YAXIS_LABEL = "sinfo.chart.flow_depth.yaxis.label";
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
26
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
27 /* Theme name, usually defined in 'FacetTypes', but that is soooo bad dependencies... */
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
28 // REMARK: these must end with 'filtered' so extra handling happens in chart: point are always recalculated, because
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
29 // data changes depending on zoom state
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
30 public static final String FACET_FLOW_DEPTH_DEVELOPMENT_FILTERED = "sinfo_facet_flow_depth_development.filtered";
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
31
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
32 private static final String FACET_FLOW_DEPTH_DEVELOPMENT_FILTERED_DESCRIPTION = "sinfo.facet.flow_depth_development.filtered.description";
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
33
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
34 public static final String FACET_FLOW_DEPTH_DEVELOPMENT_RAW = "sinfo_facet_flow_depth_development";
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
35
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
36 private static final String FACET_FLOW_DEPTH_DEVELOPMENT_RAW_DESCRIPTION = "sinfo.facet.flow_depth_development.raw.description";
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
37
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
38 public static final String FACET_WATERLEVEL_DIFFERENCE_FILTERED = "sinfo_facet_waterlevel_difference.filtered";
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
39
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
40 private static final String FACET_WATERLEVEL_DIFFERENCE_FILTERED_DESCRIPTION = "sinfo.facet.waterlevel_difference.filtered.description";
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
41
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
42 public static final String FACET_BEDHEIGHT_DIFFERENCE_FILTERED = "sinfo_facet_bedheight_difference.filtered";
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
43
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
44 private static final String FACET_BEDHEIGHT_DIFFERENCE_FILTERED_DESCRIPTION = "sinfo.facet.bedheight_difference.filtered.description";
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
45
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
46 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>();
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
47
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
48 static {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
49 HANDLED_FACET_TYPES.add(FACET_FLOW_DEPTH_DEVELOPMENT_FILTERED);
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
50 HANDLED_FACET_TYPES.add(FACET_FLOW_DEPTH_DEVELOPMENT_RAW);
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
51 HANDLED_FACET_TYPES.add(FACET_WATERLEVEL_DIFFERENCE_FILTERED);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
52 HANDLED_FACET_TYPES.add(FACET_BEDHEIGHT_DIFFERENCE_FILTERED);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
53 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
54
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
55 public FlowDepthDevelopmentProcessor() {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
56 super(I18N_AXIS_LABEL, HANDLED_FACET_TYPES);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
57 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
58
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
59 @Override
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
60 protected double[][] doGetPoints(final AbstractSInfoCalculationResult data, final String facetName) {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
61
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
62 if (FACET_FLOW_DEPTH_DEVELOPMENT_FILTERED.contentEquals(facetName))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
63 return data.getStationPoints(SInfoResultType.flowdepthDevelopment);
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
64 if (FACET_FLOW_DEPTH_DEVELOPMENT_RAW.contentEquals(facetName))
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
65 return data.getStationPoints(SInfoResultType.flowdepthDevelopment);
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
66
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
67 if (FACET_WATERLEVEL_DIFFERENCE_FILTERED.contentEquals(facetName))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
68 return data.getStationPoints(SInfoResultType.waterlevelDifference);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
69
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
70 if (FACET_BEDHEIGHT_DIFFERENCE_FILTERED.contentEquals(facetName))
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
71 return data.getStationPoints(SInfoResultType.bedHeightDifference);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
72
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
73 final String error = String.format("Unknown facet name: %s", facetName);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
74 throw new UnsupportedOperationException(error);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
75 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
76
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
77 public static Facet createFlowDepthDevelopmentFilteredFacet(final CallContext context, final String hash, final String id,
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
78 final AbstractSInfoCalculationResult result, final int index) {
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
79 return AbstractSInfoLineProcessor.createFacet(context, hash, id, result, index, SINFO_CHART_FLOW_DEPTH_DEVELOPMENT_YAXIS_LABEL,
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
80 FACET_FLOW_DEPTH_DEVELOPMENT_FILTERED, FACET_FLOW_DEPTH_DEVELOPMENT_FILTERED_DESCRIPTION);
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
81 }
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
82
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
83 public static Facet createFlowDepthDevelopmentRawFacet(final CallContext context, final String hash, final String id,
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
84 final AbstractSInfoCalculationResult result, final int index) {
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
85 return AbstractSInfoLineProcessor.createFacet(context, hash, id, result, index, SINFO_CHART_FLOW_DEPTH_DEVELOPMENT_YAXIS_LABEL,
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
86 FACET_FLOW_DEPTH_DEVELOPMENT_RAW, FACET_FLOW_DEPTH_DEVELOPMENT_RAW_DESCRIPTION);
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
87 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
88
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
89 public static Facet createWaterlevelDifferenceFacet(final CallContext context, final String hash, final String id,
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
90 final AbstractSInfoCalculationResult result, final int index) {
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
91 final String facetFlowDepthTkhFilteredDescription = Resources.getMsg(context.getMeta(), FACET_WATERLEVEL_DIFFERENCE_FILTERED_DESCRIPTION,
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
92 FACET_WATERLEVEL_DIFFERENCE_FILTERED_DESCRIPTION, result.getLabel());
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
93 return new SInfoResultFacet(index, FACET_WATERLEVEL_DIFFERENCE_FILTERED, facetFlowDepthTkhFilteredDescription,
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
94 SINFO_CHART_FLOW_DEPTH_DEVELOPMENT_YAXIS_LABEL, ComputeType.ADVANCE, id, hash);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
95 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
96
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
97 public static Facet createBedHeightDifferenceFacet(final CallContext context, final String hash, final String id,
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
98 final AbstractSInfoCalculationResult result, final int index) {
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
99
8980
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
100 final String facetFlowDepthFilteredDescription = Resources.getMsg(context.getMeta(), FACET_BEDHEIGHT_DIFFERENCE_FILTERED_DESCRIPTION,
b194fa64506a SINFO - show results themes according to spec, either raw data or floating mean values.
gernotbelger
parents: 8956
diff changeset
101 FACET_BEDHEIGHT_DIFFERENCE_FILTERED_DESCRIPTION, result.getLabel());
8956
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
102 return new SInfoResultFacet(index, FACET_BEDHEIGHT_DIFFERENCE_FILTERED, facetFlowDepthFilteredDescription,
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
103 SINFO_CHART_FLOW_DEPTH_DEVELOPMENT_YAXIS_LABEL, ComputeType.ADVANCE, id, hash);
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
104 }
ee5ce13016ed Work on SINFO-Fließtiefenentwicklung
gernotbelger
parents:
diff changeset
105 }

http://dive4elements.wald.intevation.org