annotate artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstHeightProcessor.java @ 9583:2a67d05a1af0

Punkt 10.4 Sohlhöhe (rechts)/(links)
author gernotbelger
date Wed, 09 Jan 2019 14:48:53 +0100
parents 3fa8551c3d1b
children 5395c6d4ca50
rev   line source
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
2 * Software engineering by
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
5 *
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
9 */
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
10
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
11 package org.dive4elements.river.artifacts.bundu.bezugswst;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
12
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
13 import java.util.HashSet;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
14 import java.util.Set;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
15
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
16 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
17 import org.dive4elements.artifactdatabase.state.Facet;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
18 import org.dive4elements.artifacts.CallContext;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
19 import org.dive4elements.river.artifacts.bundu.BunduResultType;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
20 import org.dive4elements.river.artifacts.common.AbstractProcessor;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
21 import org.dive4elements.river.artifacts.common.AbstractResultType;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
22 import org.dive4elements.river.artifacts.resources.Resources;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
23 import org.dive4elements.river.exports.DiagramGenerator;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
24 import org.dive4elements.river.exports.LongitudinalSectionGenerator;
9444
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
25 import org.dive4elements.river.model.BedHeightValueType;
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
26 import org.dive4elements.river.themes.ThemeDocument;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
27
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
28 /**
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
29 * Processor to generate the facets and data series of a bundu bezugswst depth longitudinal section
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
30 *
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
31 * @author Matthias Schäfer
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
32 *
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
33 */
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
34 public final class BezugswstHeightProcessor extends AbstractProcessor {
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
35
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
36 private static final String FACET_CHANNELMIN = "bundu_facet_channelmin";
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
37
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
38 private static final String FACET_CHANNELMIN_DESCRIPTION = "bundu_facet_channelmin.description";
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
39
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
40 private static final String FACET_BEDHEIGHT = "bundu_facet_bedheight";
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
41
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
42 private static final String FACET_BEDHEIGHT_DESCRIPTION = "bundu_facet_bedheight.description";
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
43
9444
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
44 public static final String FACET_FIELD_BEDHEIGHT_PREFIX = "bundu_facet_bedheight_";
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
45
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
46 private static final String FACET_FIELD_BEDHEIGHT_FORMAT = FACET_FIELD_BEDHEIGHT_PREFIX + "%02d";
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
47
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
48 private static final String FACET_FIELD_BEDHEIGHT_DESCRIPTION = "bundu_facet_field_bedheight.description";
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
49
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
50 private static final String AXIS_LABEL = LongitudinalSectionGenerator.I18N_YAXIS_LABEL;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
51
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
52 private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>();
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
53
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
54 static {
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
55 HANDLED_FACET_TYPES.add(FACET_CHANNELMIN);
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
56 HANDLED_FACET_TYPES.add(FACET_BEDHEIGHT);
9444
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
57 for (int i = BedHeightValueType.FIELD_FIRST_INDEX; i <= BedHeightValueType.FIELD_LAST_INDEX; i++)
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
58 HANDLED_FACET_TYPES.add(String.format(FACET_FIELD_BEDHEIGHT_FORMAT, i));
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
59 }
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
60
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
61 public BezugswstHeightProcessor() {
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
62 super(AXIS_LABEL, HANDLED_FACET_TYPES);
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
63 }
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
64
9583
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
65 public static Facet createChannelminFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex) {
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
66
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
67 final String description = Resources.getMsg(context.getMeta(), FACET_CHANNELMIN_DESCRIPTION, FACET_CHANNELMIN_DESCRIPTION);
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
68 return new BezugswstResultFacet(facetIndex, resultIndex, FACET_CHANNELMIN, description, AXIS_LABEL, id, hash);
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
69 }
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
70
9583
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
71 public static Facet createBedheightFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex,
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
72 final String seriesName) {
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
73
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
74 final String description = Resources.getMsg(context.getMeta(), FACET_BEDHEIGHT_DESCRIPTION, FACET_BEDHEIGHT_DESCRIPTION, seriesName);
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
75 return new BezugswstResultFacet(facetIndex, resultIndex, FACET_BEDHEIGHT, description, AXIS_LABEL, id, hash);
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
76 }
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
77
9583
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
78 public static Facet createFieldBedheightFacet(final CallContext context, final String hash, final String id, final int facetIndex, final int resultIndex,
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
79 final int fieldIndex) {
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
80 final String leftRightAppendixKey = BedHeightValueType.field(fieldIndex).getLeftRightStringAppendix();
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
81 final String leftRightAppendix = Resources.getMsg(context.getMeta(), leftRightAppendixKey, leftRightAppendixKey);
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
82 final String description = Resources.getMsg(context.getMeta(), FACET_FIELD_BEDHEIGHT_DESCRIPTION, FACET_FIELD_BEDHEIGHT_DESCRIPTION, fieldIndex,
2a67d05a1af0 Punkt 10.4 Sohlhöhe (rechts)/(links)
gernotbelger
parents: 9535
diff changeset
83 leftRightAppendix);
9444
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
84
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
85 final String facetName = String.format(FACET_FIELD_BEDHEIGHT_FORMAT, fieldIndex);
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
86 return new BezugswstResultFacet(facetIndex, resultIndex, facetName, description, AXIS_LABEL, id, hash);
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
87 }
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
88
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
89 @Override
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
90 protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
91
9444
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
92 if (bundle.getFacetName().startsWith(FACET_FIELD_BEDHEIGHT_PREFIX)) {
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
93 final int fieldIndex = Integer.parseInt(bundle.getFacetName().substring(FACET_FIELD_BEDHEIGHT_PREFIX.length()));
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
94 return generateFieldHeightSeries(generator, bundle, theme, visible, fieldIndex);
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
95 }
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
96
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
97 return buildSeriesForType(generator, bundle, theme, visible, doGetType(bundle.getFacetName()), null);
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
98 }
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
99
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
100 protected AbstractResultType doGetType(final String facetName) {
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
101
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
102 if (FACET_CHANNELMIN.contentEquals(facetName))
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
103 return BunduResultType.channelLowerEdge;
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
104 if (FACET_BEDHEIGHT.contentEquals(facetName))
9535
3fa8551c3d1b Fixed error in bundu bzws missing volume calculation for mean bed height;
mschaefer
parents: 9444
diff changeset
105 return BunduResultType.heightMeanBed;
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
106
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
107 final String error = String.format("Unknown facet name: %s", facetName);
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
108 throw new UnsupportedOperationException(error);
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
109 }
9444
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
110
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
111 private final String generateFieldHeightSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme,
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
112 final boolean visible, final int fieldIndex) {
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
113
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
114 final BezugswstMainCalculationResult data = (BezugswstMainCalculationResult) getResult(generator, bundle);
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
115 final double[][] points = data.getFieldValuePoints(fieldIndex, BunduResultType.bedHeightFields);
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
116
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
117 return buildSeriesForPoints(points, generator, bundle, theme, visible, null);
ecadc9ed0ba0 Added heights and depths of cross section fields in the bundu bzws calculation and longitudinal section charts
mschaefer
parents: 9438
diff changeset
118 }
9432
d194c5b24bf8 Added bundu bzws w calculation and longitudinal sections of wspl and depth
mschaefer
parents:
diff changeset
119 }

http://dive4elements.wald.intevation.org