annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FacetCalculator.java @ 9614:d889ffe2fb05

Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
author mschaefer
date Wed, 09 Oct 2019 19:17:06 +0200
parents f8308db94634
children
rev   line source
9612
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
2 * Software engineering by
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
5 *
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
9 */
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
10 package org.dive4elements.river.artifacts.sinfo.flood_duration;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
11
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
12 import java.util.ArrayList;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
13 import java.util.Collection;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
14 import java.util.Collections;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
15 import java.util.List;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
16
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
17 import org.dive4elements.artifacts.CallContext;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
18 import org.dive4elements.river.artifacts.common.GeneralResultType;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
19 import org.dive4elements.river.artifacts.common.ResultRow;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
20 import org.dive4elements.river.artifacts.model.Calculation;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
21 import org.dive4elements.river.artifacts.resources.Resources;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
22 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
23 import org.dive4elements.river.jfree.StickyAxisAnnotation;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
24 import org.dive4elements.river.jfree.StickyAxisAnnotation.SimpleAxis;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
25 import org.dive4elements.river.model.Attribute.AttributeKey;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
26
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
27 /**
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
28 * @author Domenico Nardi Tironi
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
29 *
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
30 */
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
31 public class FacetCalculator {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
32
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
33 private static final double DELTA_KM = 0.0001;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
34
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
35 private final CallContext m_context;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
36
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
37 public FacetCalculator(final CallContext context) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
38 this.m_context = context;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
39 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
40
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
41 /**
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
42 * Calculates the data for the W main value lines in the duration curve chart
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
43 */
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
44 public List<StickyAxisAnnotation> calcMainValueWAnnotations(final Calculation problems, final double station, final FloodDurationCalculationResult result) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
45
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
46 final List<ResultRow> stationRows = searchStation(station, result.getAllRows(), AttributeKey.NONE);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
47 if (stationRows.isEmpty())
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
48 return Collections.emptyList();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
49
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
50 final List<StickyAxisAnnotation> annotations = new ArrayList<>();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
51 final ResultRow row = stationRows.get(0);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
52 final List<DurationWaterlevel> wqds = (List<DurationWaterlevel>) row.getValue(SInfoResultType.customMultiRowColWaterlevel);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
53 for (final DurationWaterlevel wqd : wqds) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
54 final String label = !wqd.getBezeichnung().startsWith("W=") ? "W(" + wqd.getBezeichnung() + ")" : wqd.getBezeichnung();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
55 final StickyAxisAnnotation annotation = new StickyAxisAnnotation(label, (float) wqd.getWaterlevel(), SimpleAxis.Y_AXIS,
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
56 FloodDurationCurveGenerator.YAXIS.W.idx);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
57 annotation.setHitPoint((float) wqd.getFloodDurDaysPerYear());
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
58 annotations.add(annotation);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
59 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
60 return annotations;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
61 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
62
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
63 /**
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
64 * Calculates the data for the Q main value lines in the duration curve chart
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
65 *
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
66 * @param infrastructure
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
67 */
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
68 public List<StickyAxisAnnotation> calcMainValueQAnnotations(final Calculation problems, final double station, final FloodDurationCalculationResult result) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
69
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
70 final List<ResultRow> stationRows = searchStation(station, result.getAllRows(), AttributeKey.NONE);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
71 if (stationRows.isEmpty())
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
72 return Collections.emptyList();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
73
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
74 final ResultRow row = stationRows.get(0);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
75 final List<StickyAxisAnnotation> annotations = new ArrayList<>();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
76 final List<DurationWaterlevel> wqds = (List<DurationWaterlevel>) row.getValue(SInfoResultType.customMultiRowColWaterlevel);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
77 for (final DurationWaterlevel wqd : wqds) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
78 final String label = wqd.getBezeichnung().startsWith("W=") ? "Q(" + wqd.getBezeichnung() + ")" : wqd.getBezeichnung();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
79 final StickyAxisAnnotation annotation = new StickyAxisAnnotation(label, (float) wqd.getDischarge(), SimpleAxis.Y_AXIS,
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
80 FloodDurationCurveGenerator.YAXIS.Q.idx);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
81 annotation.setHitPoint((float) wqd.getFloodDurDaysPerYear());
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
82 annotations.add(annotation);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
83 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
84 return annotations;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
85 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
86
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
87 /**
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
88 * Find and return the W or Q annotation(s) of a station and a riverside in a previously calculated result
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
89 *
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
90 * @param key
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
91 */
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
92 public List<StickyAxisAnnotation> calcInfrastructureAnnotations(final Calculation problems, final double station, final boolean isW,
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
93 final FloodDurationCalculationResult result, final AttributeKey riverside) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
94
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
95 final List<ResultRow> stationRows = searchStation(station, result.getAllRows(), riverside);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
96 if (stationRows.isEmpty())
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
97 return Collections.emptyList();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
98
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
99 // Same way as in MainValueWFacet and ..QFacet
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
100 final List<StickyAxisAnnotation> annotations = new ArrayList<>();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
101 for (final ResultRow row : stationRows) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
102 if (isW)
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
103 annotations.add(calcInfrastructureWAnnotation(row));
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
104 else
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
105 annotations.add(calcInfrastructureQAnnotation(row));
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
106 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
107 return annotations;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
108 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
109
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
110 /**
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
111 * Calculates the Q annotation lines of an infrastructure
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
112 */
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
113 private StickyAxisAnnotation calcInfrastructureQAnnotation(final ResultRow row) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
114 final String label = Resources.getMsg(this.m_context.getMeta(), "sinfo.chart.flood_duration.curve.infrastructure",
9614
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
115 "sinfo.chart.flood_duration.curve.infrastructure", getInfrastructureLabel(row));
9612
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
116 final StickyAxisAnnotation annotation = new StickyAxisAnnotation(label, (float) row.getDoubleValue(SInfoResultType.floodDischarge), SimpleAxis.Y_AXIS,
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
117 FloodDurationCurveGenerator.YAXIS.Q.idx);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
118 annotation.setHitPoint((float) row.getDoubleValue(SInfoResultType.floodDuration));
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
119 return annotation;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
120 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
121
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
122 /**
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
123 * Calculates the W annotation lines of an infrastructure
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
124 */
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
125 private StickyAxisAnnotation calcInfrastructureWAnnotation(final ResultRow row) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
126 final String label = Resources.getMsg(this.m_context.getMeta(), "sinfo.chart.flood_duration.curve.infrastructure",
9614
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
127 "sinfo.chart.flood_duration.curve.infrastructure", getInfrastructureLabel(row));
9612
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
128 final StickyAxisAnnotation annotation = new StickyAxisAnnotation(label, (float) row.getDoubleValue(SInfoResultType.infrastructureHeight),
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
129 SimpleAxis.Y_AXIS, FloodDurationCurveGenerator.YAXIS.W.idx);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
130 annotation.setHitPoint((float) row.getDoubleValue(SInfoResultType.floodDuration));
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
131 return annotation;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
132 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
133
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
134 /**
9614
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
135 * Builds the label of the type and bank location of the infrastructure of a result row
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
136 */
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
137 private String getInfrastructureLabel(final ResultRow row) {
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
138 return SInfoResultType.getInfrastructureLabel(this.m_context, (String) row.getValue(SInfoResultType.infrastructuregroup),
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
139 (String) row.getValue(SInfoResultType.infrastructuretype), (AttributeKey) row.getValue(SInfoResultType.riverside));
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
140 }
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
141
d889ffe2fb05 Nachtrag Pos. 20: rename type/part to group/type, group added in Infrastructure class
mschaefer
parents: 9612
diff changeset
142 /**
9612
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
143 * Searches the one or two rows of a station in a result rows collection
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
144 *
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
145 * @param m_riverside
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
146 */
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
147 private List<ResultRow> searchStation(final double station, final Collection<ResultRow> rows, final AttributeKey riverside) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
148
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
149 final double searchStation = findSearchStation(rows, station, riverside);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
150 if (Double.isNaN(searchStation))
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
151 return Collections.emptyList();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
152
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
153 final List<ResultRow> found = new ArrayList<>();
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
154
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
155 for (final ResultRow row : rows) { // rows are not sorted
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
156 final String riversideStr = String.valueOf(row.getValue(SInfoResultType.riverside));
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
157 if (riversideStr.equals("null"))
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
158 continue;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
159
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
160 if (Math.abs(row.getDoubleValue(GeneralResultType.station) - station) > DELTA_KM)
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
161 continue;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
162
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
163 if (riverside.equals(AttributeKey.NONE) || riverside.equals(AttributeKey.valueOf(String.valueOf(row.getValue(SInfoResultType.riverside)))))
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
164 found.add(row);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
165 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
166 return found;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
167 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
168
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
169 @Deprecated
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
170 private double findSearchStation(final Collection<ResultRow> rows, final double station, final AttributeKey riverside) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
171
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
172 if (!Double.isNaN(station))
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
173 return station;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
174
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
175 for (final ResultRow row : rows) {
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
176 final String riversideStr = String.valueOf(row.getValue(SInfoResultType.riverside));
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
177 if (riversideStr.equals("null"))
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
178 continue;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
179
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
180 if (riverside.equals(AttributeKey.NONE) || riverside.equals(AttributeKey.valueOf(riversideStr)))
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
181 return row.getDoubleValue(GeneralResultType.station);
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
182 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
183
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
184 return Double.NaN;
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
185 }
f8308db94634 #20 UI, Diagramme
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
186 }

http://dive4elements.wald.intevation.org