annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationAccess.java @ 9070:611a523fc42f

VegetationZoneAccessHelper, VegetationTablePanels verbessert
author gernotbelger
date Tue, 15 May 2018 18:04:36 +0200
parents 2ed3824a3d53
children e6b63b2b41b9
rev   line source
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
2 * Software engineering by
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
5 *
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
9 */
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
10
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
11 package org.dive4elements.river.artifacts.sinfo.flood_duration;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
12
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
13 import org.apache.log4j.Logger;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
14 import org.dive4elements.river.artifacts.access.RangeAccess;
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9067
diff changeset
15 import org.dive4elements.river.artifacts.common.EpochYearAccessHelper;
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
16 import org.dive4elements.river.artifacts.sinfo.SINFOArtifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
17 import org.dive4elements.river.artifacts.sinfo.SinfoCalcMode;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
18
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
19 import gnu.trove.TDoubleArrayList;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
20
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
21 /**
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
22 * Access to the flow depth calculation type specific SInfo artifact data.
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
23 * REMARK: this class is NOT intended to be hold in the results (or anywhere else), in order to avoid a permanent
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
24 * reference to the artifact instance.
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
25 * Hence we do NOT cache any data.
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
26 *
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
27 * @author Gernot Belger
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
28 */
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
29 final class FloodDurationAccess extends RangeAccess {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
30
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
31 private static Logger log = Logger.getLogger(FloodDurationAccess.class);
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
32
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9067
diff changeset
33 private final EpochYearAccessHelper helper;
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
34
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
35 /// Fields from state:
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
36
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
37 // calculation_mode (String), sollte sinfo_calc_flood_duration sein
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
38 // ld_from, ld_to, ld_step
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
39 // riverside, mögliche werte: "state.sinfo.riverside.left" "state.sinfo.riverside.right" "state.sinfo.riverside.both"
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
40 // wspl
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
41 // State.sinfo.WQ:
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
42 // <data name="wq_isq" type="Boolean" />
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
43 // <data name="wq_isfree" type="Boolean" />
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
44 // <data name="wq_isrange" type="Boolean" />
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
45 // <data name="wq_from" type="Double" />
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
46 // <data name="wq_to" type="Double" />
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
47 // <data name="wq_step" type="Double" />
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
48 // <data name="wq_single" type="Double[]" />
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
49 public FloodDurationAccess(final SINFOArtifact artifact) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
50 super(artifact);
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
51
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
52 /* assert calculation mode */
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
53 final SinfoCalcMode calculationMode = artifact.getCalculationMode();
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9067
diff changeset
54 this.helper = new EpochYearAccessHelper(artifact);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
55 assert (calculationMode == SinfoCalcMode.sinfo_calc_flood_duration);
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
56 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
57
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
58 @Override
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
59 public Double getStep() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
60 return super.getStep();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
61 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
62
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
63 public String getRiverside() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
64 return super.getString("riverside");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
65 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
66
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
67 public Boolean getWspl() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
68 return super.getBoolean("wspl");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
69 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
70
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
71 public Boolean getWqIsQ() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
72 if (!getWspl()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
73 return null;//
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
74 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
75 return super.getBoolean("wq_isq");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
76 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
77
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
78 public Boolean getWqIsFree() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
79 if (!getWspl()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
80 return null;//
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
81 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
82 return super.getBoolean("wq_isfree");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
83 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
84
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
85 public Boolean getWqIsRange() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
86 if (!getWspl()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
87 return null;//
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
88 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
89 return super.getBoolean("wq_isrange");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
90 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
91
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
92 public Double getWqFrom() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
93 if (!getWspl()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
94 return null;//
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
95 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
96 if (!getWqIsRange())
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
97 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
98
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
99 return super.getDouble("wq_from");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
100 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
101
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
102 public Double getWqTo() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
103 if (!getWspl()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
104 return null;//
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
105 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
106 if (!getWqIsRange())
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
107 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
108 return super.getDouble("wq_to");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
109 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
110
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
111 public Double getWqStep() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
112 if (!getWspl()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
113 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
114 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
115 if (!getWqIsRange())
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
116 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
117
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
118 return super.getDouble("wq_step");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
119 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
120
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
121 public double[] getWqSingle() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
122 if (!getWspl()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
123 return null;//
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
124 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
125 if (getWqIsRange())
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
126 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
127
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
128 final String wqSingles = super.getString("wq_single");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
129
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
130 if (wqSingles == null || wqSingles.isEmpty()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
131 log.warn("No wqSingles provided");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
132 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
133 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
134 final TDoubleArrayList doubles = new gnu.trove.TDoubleArrayList();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
135 for (final String value : wqSingles.split(" ")) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
136 try {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
137
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
138 doubles.add(Double.parseDouble(value));// Punkt/komma?
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
139 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
140 catch (final NumberFormatException e) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
141 /* Client should prevent this */
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
142 log.warn("Invalid wqsingle value: " + value);
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
143 continue;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
144 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
145 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
146 return doubles.toNativeArray();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
147 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
148
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
149 }

http://dive4elements.wald.intevation.org