annotate artifacts/src/main/java/org/dive4elements/river/artifacts/common/AccessHelper.java @ 9069:1ffd38826175

access uinfo.vegetationzones+inundation_duration
author gernotbelger
date Tue, 15 May 2018 12:00:26 +0200
parents 2ed3824a3d53
children
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 package org.dive4elements.river.artifacts.common;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
11
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
12 import org.apache.log4j.Logger;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
13 import org.dive4elements.artifacts.Artifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
14 import org.dive4elements.river.artifacts.D4EArtifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
15 import org.dive4elements.river.artifacts.access.Access;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
16
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
17 import gnu.trove.TIntArrayList;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
18
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
19 /**
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
20 * @author Domenico Nardi Tironi
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
21 *
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
22 */
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
23 public class AccessHelper extends Access {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
24
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
25 private static Logger log = Logger.getLogger(AccessHelper.class);
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
26
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
27 // private final Artifact artifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
28
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
29 public AccessHelper(final Artifact artifact) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
30 this.artifact = (D4EArtifact) artifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
31 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
32
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
33 public String getYearEpoch() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
34
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
35 return getString("ye_select"); // ACHTUNG, Ergebniswerte wurden geändert in state.sinfo.epoch und state.sinfo.year
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
36
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
37 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
38
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
39 /** [year1, years2,..] if its about years. */
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
40 public int[] getYears(final String yearSelectedValue, final String yearKey) {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
41 int[] years = null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
42 // if (years != null) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
43 // return years;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
44 // }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
45 if (getYearEpoch().equals(yearSelectedValue)) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
46 final TIntArrayList ints = new TIntArrayList();
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
47 final String yearsData = getString(yearKey);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
48 if (yearsData == null || yearsData.isEmpty()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
49 log.warn("No years provided");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
50 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
51 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
52 for (final String sValue : yearsData.split(" ")) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
53 try {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
54 ints.add(Integer.parseInt(sValue));
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
55 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
56 catch (final NumberFormatException e) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
57 /* Client should prevent this */
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
58 log.warn("Invalid year value: " + sValue);
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
59 continue;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
60 }
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 if (!ints.isEmpty()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
64 ints.sort();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
65 years = ints.toNativeArray();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
66 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
67 return years;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
68 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
69 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
70 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
71
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
72 public int[][] getEpochs(final String epochSelectedValue, final String epochKey) {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
73 int epochs[][] = null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
74 // if (epochs != null) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
75 // return epochs;
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 if (!getYearEpoch().equals(epochSelectedValue)) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
79 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
80 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
81
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
82 final String data = getString(epochKey);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
83
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
84 if (data == null) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
85 log.warn("No 'epochs' parameter specified!");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
86 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
87 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
88
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
89 final String[] parts = data.split(";");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
90
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
91 epochs = new int[parts.length][];
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
92
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
93 for (int i = 0; i < parts.length; i++) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
94 final String[] values = parts[i].split(",");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
95 final TIntArrayList ints = new TIntArrayList();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
96 try {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
97 ints.add(Integer.parseInt(values[0]));
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
98 ints.add(Integer.parseInt(values[1]));
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
99 epochs[i] = ints.toNativeArray();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
100 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
101 catch (final NumberFormatException nfe) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
102 log.warn("Cannot parse int from string: '" + values + "'");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
103 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
104 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
105 return epochs;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
106 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
107
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
108 }

http://dive4elements.wald.intevation.org