annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineAccess.java @ 9394:439699ff9b2d

Added U-Info iota (prev. salix) calculation for historical scenario
author mschaefer
date Fri, 10 Aug 2018 17:31:46 +0200
parents 2da486c7c05f
children 8b7bf26b8782
rev   line source
9062
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
2 * Software engineering by
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
5 *
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
9 */
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
10
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
11 package org.dive4elements.river.artifacts.uinfo.salix;
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
12
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
13 import org.dive4elements.river.artifacts.access.BedHeightAccess;
9062
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
14 import org.dive4elements.river.artifacts.access.RangeAccess;
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
15 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
16 import org.dive4elements.river.artifacts.uinfo.UinfoCalcMode;
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
17 import org.dive4elements.river.model.BedHeight;
9062
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
18
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
19 /**
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
20 * Access to the flow depth calculation type specific SInfo artifact data.
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
21 * REMARK: this class is NOT intended to be hold in the results (or anywhere else), in order to avoid a permanent
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
22 * reference to the artifact instance.
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
23 * Hence we do NOT cache any data.
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
24 *
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
25 * @author Gernot Belger
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
26 */
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
27 final class SalixLineAccess extends RangeAccess {
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
28
9309
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
29 /**
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
30 * Type of a salix line scenario with key property used by the client
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
31 */
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
32 public enum ScenarioType {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
33 NONE(""), //
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
34 REGIONAL("scenarioType.option1"), //
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
35 SUPRAREGIONAL("scenarioType.option2"), //
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
36 HISTORICAL("scenarioType.option3");
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
37
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
38 private String key;
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
39
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
40 private ScenarioType(final String key) {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
41 this.key = key;
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
42 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
43
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
44 public static ScenarioType forKey(final String key) {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
45 for (final ScenarioType st : ScenarioType.values()) {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
46 if (st.getKey().equals(key))
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
47 return st;
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
48 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
49 return NONE;
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
50 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
51
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
52 public String getKey() {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
53 return this.key;
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
54 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
55 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
56
9062
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
57 public SalixLineAccess(final UINFOArtifact artifact) {
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
58 super(artifact);
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
59
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
60 /* assert calculation mode */
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
61 final UinfoCalcMode calculationMode = artifact.getCalculationMode();
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
62 assert (calculationMode == UinfoCalcMode.uinfo_salix_line);
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
63 }
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
64
9321
a978b601a034 Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9309
diff changeset
65 private boolean getUseScenario() {
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
66 return super.getBoolean("use_scenario");
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
67 }
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
68
9309
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
69 public ScenarioType getScenario() {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
70 if (getUseScenario())
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
71 return ScenarioType.forKey(getString("scenario_selection"));
9321
a978b601a034 Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9309
diff changeset
72
a978b601a034 Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9309
diff changeset
73 return ScenarioType.NONE;
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
74 }
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
75
9222
5a0e8d76582e uinfo.salix regional workflow
gernotbelger
parents: 9070
diff changeset
76 public Double getFromPart() {
5a0e8d76582e uinfo.salix regional workflow
gernotbelger
parents: 9070
diff changeset
77 return getDouble("ld_from_part");
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
78 }
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
79
9222
5a0e8d76582e uinfo.salix regional workflow
gernotbelger
parents: 9070
diff changeset
80 public Double getToPart() {
5a0e8d76582e uinfo.salix regional workflow
gernotbelger
parents: 9070
diff changeset
81 return getDouble("ld_to_part");
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
82 }
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
83
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
84 public int[] getRegionalScenarioIntegers() {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
85 // super.getIntArray("sedimentheight"); DOES NOT WORK!
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
86 final String ints = super.getString("sedimentheight");
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
87 if (ints != null) {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
88 final String[] intsSplit = ints.split(" ");
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
89 final int[] values = new int[intsSplit.length];
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
90 for (int i = 0; i < intsSplit.length; i++) {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
91 values[i] = Integer.valueOf(intsSplit[i]);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
92 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
93 return values;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
94 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
95 return null;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
96 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
97
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
98 public String getSupraRegionalString() {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
99 return super.getString("supraregional_table");
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
100 }
9246
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
101
9394
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
102 /**
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
103 * Database id of the selected sounding, or 0
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
104 */
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
105 public int getBedHeightId() {
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
106 final BedHeightAccess access = new BedHeightAccess(this.artifact);
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
107 final int[] ids = access.getBedHeightIDs();
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
108 if ((ids != null) && (ids.length > 0)) {
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
109 return ids[0];
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
110 }
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
111 return 0;
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
112 }
439699ff9b2d Added U-Info iota (prev. salix) calculation for historical scenario
mschaefer
parents: 9391
diff changeset
113
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
114 public BedHeight getBedHeight() { // TODO: make lazy? Aber achtung, falls der user zurückgeht und ne andere Peilung auswählt...
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
115 final BedHeightAccess access = new BedHeightAccess(this.artifact);
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
116 final int[] ids = access.getBedHeightIDs();
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
117 if (ids != null && ids.length > 0) {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
118 return BedHeight.getBedHeightById(ids[0]); // es nur eine bedheight ausgewählt werden; ist aber noch nicht implementiert...
9246
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
119 }
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
120 return null;
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
121 }
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
122
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
123 public Integer getYearEpoch() { // TODO: make lazy?
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
124 final BedHeight bh = this.getBedHeight();
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
125 if (bh != null) {
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
126 return bh.getYear();
9246
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
127 }
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
128 return null;
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
129 }
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9321
diff changeset
130
9062
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
131 }

http://dive4elements.wald.intevation.org