Mercurial > dive4elements > river
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 | 1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
2 * Software engineering by | |
3 * Björnsen Beratende Ingenieure GmbH | |
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt | |
5 * | |
6 * This file is Free Software under the GNU AGPL (>=v3) | |
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the | |
8 * documentation coming with Dive4Elements River for details. | |
9 */ | |
10 package org.dive4elements.river.artifacts.common; | |
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 | 15 import org.apache.log4j.Logger; |
16 import org.dive4elements.artifacts.Artifact; | |
17 import org.dive4elements.river.artifacts.D4EArtifact; | |
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 | 21 |
22 import gnu.trove.TIntArrayList; | |
23 | |
24 /** | |
25 * @author Domenico Nardi Tironi | |
26 * | |
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 | 30 |
9070
611a523fc42f
VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents:
9069
diff
changeset
|
31 private static Logger log = Logger.getLogger(EpochYearAccessHelper.class); |
9067 | 32 |
33 // private final Artifact artifact; | |
34 | |
9070
611a523fc42f
VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents:
9069
diff
changeset
|
35 public EpochYearAccessHelper(final Artifact artifact) { |
9067 | 36 this.artifact = (D4EArtifact) artifact; |
37 } | |
38 | |
39 public String getYearEpoch() { | |
40 return getString("ye_select"); // ACHTUNG, Ergebniswerte wurden geändert in state.sinfo.epoch und state.sinfo.year | |
41 } | |
42 | |
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 | 45 int[] years = null; |
9178
2f5052835b76
uinfo inundationduration langjähr. Mittel, Uedauern.properties, Meldung
gernotbelger
parents:
9155
diff
changeset
|
46 |
9067 | 47 if (getYearEpoch().equals(yearSelectedValue)) { |
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 | 50 if (yearsData == null || yearsData.isEmpty()) { |
51 log.warn("No years provided"); | |
52 return null; | |
53 } | |
54 for (final String sValue : yearsData.split(" ")) { | |
55 try { | |
56 ints.add(Integer.parseInt(sValue)); | |
57 } | |
58 catch (final NumberFormatException e) { | |
59 /* Client should prevent this */ | |
60 log.warn("Invalid year value: " + sValue); | |
61 continue; | |
62 } | |
63 } | |
64 | |
65 if (!ints.isEmpty()) { | |
66 ints.sort(); | |
67 years = ints.toNativeArray(); | |
68 } | |
69 return years; | |
70 } | |
71 return null; | |
72 } | |
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 | 76 // if (epochs != null) { |
77 // return epochs; | |
78 // } | |
79 | |
80 if (!getYearEpoch().equals(epochSelectedValue)) { | |
81 return null; | |
82 } | |
83 | |
9069
1ffd38826175
access uinfo.vegetationzones+inundation_duration
gernotbelger
parents:
9067
diff
changeset
|
84 final String data = getString(epochKey); |
9067 | 85 if (data == null) { |
86 log.warn("No 'epochs' parameter specified!"); | |
87 return null; | |
88 } | |
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 | 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 | 94 } |
95 catch (final NumberFormatException nfe) { | |
96 log.warn("Cannot parse int from string: '" + values + "'"); | |
97 } | |
98 } | |
99 return epochs; | |
100 } | |
9070
611a523fc42f
VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents:
9069
diff
changeset
|
101 } |