annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineAccess.java @ 9321:a978b601a034

Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
author gernotbelger
date Fri, 27 Jul 2018 10:25:09 +0200
parents 9a9f076d5716
children 2da486c7c05f
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
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
13 import org.dive4elements.river.artifacts.access.RangeAccess;
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
14 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
15 import org.dive4elements.river.artifacts.uinfo.UinfoCalcMode;
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
16
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
17 /**
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
18 * Access to the flow depth calculation type specific SInfo artifact data.
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
19 * 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
20 * reference to the artifact instance.
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
21 * Hence we do NOT cache any data.
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
22 *
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
23 * @author Gernot Belger
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
24 */
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
25 final class SalixLineAccess extends RangeAccess {
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
26
9309
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
27 /**
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
28 * 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
29 */
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
30 public enum ScenarioType {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
31 NONE(""), //
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
32 REGIONAL("scenarioType.option1"), //
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
33 SUPRAREGIONAL("scenarioType.option2"), //
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
34 HISTORICAL("scenarioType.option3");
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
35
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
36 private String key;
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 ScenarioType(final String key) {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
39 this.key = key;
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
40 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
41
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
42 public static ScenarioType forKey(final String key) {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
43 for (final ScenarioType st : ScenarioType.values()) {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
44 if (st.getKey().equals(key))
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
45 return st;
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
46 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
47 return NONE;
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
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
50 public String getKey() {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
51 return this.key;
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
52 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
53 }
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
54
9062
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
55 public SalixLineAccess(final UINFOArtifact artifact) {
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
56 super(artifact);
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
57
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
58 /* assert calculation mode */
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
59 final UinfoCalcMode calculationMode = artifact.getCalculationMode();
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
60 assert (calculationMode == UinfoCalcMode.uinfo_salix_line);
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
61 }
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
62
9321
a978b601a034 Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9309
diff changeset
63 private boolean getUseScenario() {
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
64 return super.getBoolean("use_scenario");
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
65 }
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
66
9309
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
67 public ScenarioType getScenario() {
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
68 if (getUseScenario())
9a9f076d5716 Work on U-Info salix line calculation
mschaefer
parents: 9246
diff changeset
69 return ScenarioType.forKey(getString("scenario_selection"));
9321
a978b601a034 Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9309
diff changeset
70
a978b601a034 Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9309
diff changeset
71 return ScenarioType.NONE;
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
72 }
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
73
9222
5a0e8d76582e uinfo.salix regional workflow
gernotbelger
parents: 9070
diff changeset
74 public Double getFromPart() {
5a0e8d76582e uinfo.salix regional workflow
gernotbelger
parents: 9070
diff changeset
75 return getDouble("ld_from_part");
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
76 }
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
77
9222
5a0e8d76582e uinfo.salix regional workflow
gernotbelger
parents: 9070
diff changeset
78 public Double getToPart() {
5a0e8d76582e uinfo.salix regional workflow
gernotbelger
parents: 9070
diff changeset
79 return getDouble("ld_to_part");
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9062
diff changeset
80 }
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
81
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
82 public int[] getRegionalScenarioIntegers() {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
83 // super.getIntArray("sedimentheight"); DOES NOT WORK!
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
84 final String ints = super.getString("sedimentheight");
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
85 if (ints != null) {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
86 final String[] intsSplit = ints.split(" ");
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
87 final int[] values = new int[intsSplit.length];
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
88 for (int i = 0; i < intsSplit.length; i++) {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
89 values[i] = Integer.valueOf(intsSplit[i]);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
90 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
91 return values;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
92 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
93 return null;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
94 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
95
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
96 public String getSupraRegionalString() {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
97 return super.getString("supraregional_table");
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents: 9222
diff changeset
98 }
9246
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
99
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
100 public Integer getYear() {
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
101 if (getString("ye_select").equals("state.uinfo.year")) {
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
102 return super.getInteger("singleyear");
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
103 }
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
104 return null;
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
105 }
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
106
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
107 public Integer getEpoch() {
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
108 if (getString("ye_select").equals("state.uinfo.epoch")) {
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
109 return super.getInteger("singleepoch");
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
110 }
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
111 return null;
c08d5cfa4981 some hibernate queries on bedheigts for salix
gernotbelger
parents: 9243
diff changeset
112 }
9062
5198066492a9 Teilabschnitt Salix State
gernotbelger
parents:
diff changeset
113 }

http://dive4elements.wald.intevation.org