annotate artifacts/src/main/java/org/dive4elements/river/artifacts/common/EpochYearAccessHelper.java @ 9070:611a523fc42f

VegetationZoneAccessHelper, VegetationTablePanels verbessert
author gernotbelger
date Tue, 15 May 2018 18:04:36 +0200
parents artifacts/src/main/java/org/dive4elements/river/artifacts/common/AccessHelper.java@1ffd38826175
children 9b4f5e61c02e
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 */
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
23 // TODO: rename?
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
24 public class EpochYearAccessHelper extends Access {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
25
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
26 private static Logger log = Logger.getLogger(EpochYearAccessHelper.class);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
27
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
28 // private final Artifact artifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
29
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
30 public EpochYearAccessHelper(final Artifact artifact) {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
31 this.artifact = (D4EArtifact) artifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
32 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
33
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
34 public String getYearEpoch() {
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 /** [year1, years2,..] if its about years. */
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
39 public int[] getYears(final String yearSelectedValue, final String yearKey) {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
40 int[] years = null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
41 // if (years != null) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
42 // return years;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
43 // }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
44 if (getYearEpoch().equals(yearSelectedValue)) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
45 final TIntArrayList ints = new TIntArrayList();
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
46 final String yearsData = getString(yearKey);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
47 if (yearsData == null || yearsData.isEmpty()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
48 log.warn("No years provided");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
49 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
50 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
51 for (final String sValue : yearsData.split(" ")) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
52 try {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
53 ints.add(Integer.parseInt(sValue));
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
54 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
55 catch (final NumberFormatException e) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
56 /* Client should prevent this */
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
57 log.warn("Invalid year value: " + sValue);
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
58 continue;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
59 }
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 if (!ints.isEmpty()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
63 ints.sort();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
64 years = ints.toNativeArray();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
65 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
66 return years;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
67 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
68 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
69 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
70
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
71 public int[][] getEpochs(final String epochSelectedValue, final String epochKey) {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
72 int epochs[][] = null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
73 // if (epochs != null) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
74 // return epochs;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
75 // }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
76
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
77 if (!getYearEpoch().equals(epochSelectedValue)) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
78 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
79 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
80
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
81 final String data = getString(epochKey);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
82
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
83 if (data == null) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
84 log.warn("No 'epochs' parameter specified!");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
85 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
86 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
87
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
88 final String[] parts = data.split(";");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
89
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
90 epochs = new int[parts.length][];
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
91
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
92 for (int i = 0; i < parts.length; i++) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
93 final String[] values = parts[i].split(",");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
94 final TIntArrayList ints = new TIntArrayList();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
95 try {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
96 ints.add(Integer.parseInt(values[0]));
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
97 ints.add(Integer.parseInt(values[1]));
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
98 epochs[i] = ints.toNativeArray();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
99 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
100 catch (final NumberFormatException nfe) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
101 log.warn("Cannot parse int from string: '" + values + "'");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
102 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
103 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
104 return epochs;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
105 }
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
106 }

http://dive4elements.wald.intevation.org