annotate artifacts/src/main/java/org/dive4elements/river/artifacts/common/EpochYearAccessHelper.java @ 9178:2f5052835b76

uinfo inundationduration langjähr. Mittel, Uedauern.properties, Meldung
author gernotbelger
date Tue, 26 Jun 2018 19:48:35 +0200
parents 9b4f5e61c02e
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
9155
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
12 import java.util.ArrayList;
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
13 import java.util.List;
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
14
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
15 import org.apache.log4j.Logger;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
16 import org.dive4elements.artifacts.Artifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
17 import org.dive4elements.river.artifacts.D4EArtifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
18 import org.dive4elements.river.artifacts.access.Access;
9155
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
19 import org.dive4elements.river.artifacts.model.DateRange;
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
20 import org.dive4elements.river.backend.utils.DateUtil;
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
21
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
22 import gnu.trove.TIntArrayList;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
23
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
24 /**
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
25 * @author Domenico Nardi Tironi
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
26 *
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
27 */
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
28 // TODO: rename?
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
29 public class EpochYearAccessHelper extends Access {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
30
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
31 private static Logger log = Logger.getLogger(EpochYearAccessHelper.class);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
32
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
33 // private final Artifact artifact;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
34
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
35 public EpochYearAccessHelper(final Artifact artifact) {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
36 this.artifact = (D4EArtifact) artifact;
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 public String getYearEpoch() {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
40 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
41 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
42
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
43 /** [year1, years2,..] if its about years. */
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
44 public int[] getYears(final String yearSelectedValue, final String yearKey) {
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
45 int[] years = null;
9178
2f5052835b76 uinfo inundationduration langjähr. Mittel, Uedauern.properties, Meldung
gernotbelger
parents: 9155
diff changeset
46
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
47 if (getYearEpoch().equals(yearSelectedValue)) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
48 final TIntArrayList ints = new TIntArrayList();
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
49 final String yearsData = getString(yearKey);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
50 if (yearsData == null || yearsData.isEmpty()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
51 log.warn("No years provided");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
52 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
53 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
54 for (final String sValue : yearsData.split(" ")) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
55 try {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
56 ints.add(Integer.parseInt(sValue));
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
57 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
58 catch (final NumberFormatException e) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
59 /* Client should prevent this */
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
60 log.warn("Invalid year value: " + sValue);
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
61 continue;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
62 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
63 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
64
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
65 if (!ints.isEmpty()) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
66 ints.sort();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
67 years = ints.toNativeArray();
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
68 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
69 return years;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
70 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
71 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
72 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
73
9155
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
74 public List<DateRange> getEpochs(final String epochSelectedValue, final String epochKey) {
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
75 final List<DateRange> epochs = new ArrayList<>();
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
76 // if (epochs != null) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
77 // return epochs;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
78 // }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
79
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
80 if (!getYearEpoch().equals(epochSelectedValue)) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
81 return null;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
82 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
83
9069
1ffd38826175 access uinfo.vegetationzones+inundation_duration
gernotbelger
parents: 9067
diff changeset
84 final String data = getString(epochKey);
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
85 if (data == null) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
86 log.warn("No 'epochs' parameter specified!");
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
9155
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
90 for (final String part : data.split(";")) {
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
91 final String[] values = part.split(",");
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
92 try {
9155
9b4f5e61c02e Changed to list of DateRange, added methods in DateRange to support year ranges
mschaefer
parents: 9070
diff changeset
93 epochs.add(new DateRange(DateUtil.getStartDateFromYear(Integer.parseInt(values[0])), DateUtil.getEndDateFromYear(Integer.parseInt(values[1]))));
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
94 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
95 catch (final NumberFormatException nfe) {
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
96 log.warn("Cannot parse int from string: '" + values + "'");
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
97 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
98 }
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
99 return epochs;
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents:
diff changeset
100 }
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
101 }

http://dive4elements.wald.intevation.org