Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityPeriodsSelect.java @ 8637:5a5331dd3e8d
(issue1755) Validate selected periods and ranges.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Fri, 27 Mar 2015 16:55:58 +0100 |
parents | 362abb64e897 |
children | 97d60b0afe24 |
comparison
equal
deleted
inserted
replaced
8636:7d1a32a543cb | 8637:5a5331dd3e8d |
---|---|
9 package org.dive4elements.river.artifacts.states.minfo; | 9 package org.dive4elements.river.artifacts.states.minfo; |
10 | 10 |
11 import java.util.List; | 11 import java.util.List; |
12 import java.util.Date; | 12 import java.util.Date; |
13 import java.util.TreeSet; | 13 import java.util.TreeSet; |
14 import java.text.DateFormat; | |
14 | 15 |
15 import org.apache.log4j.Logger; | 16 import org.apache.log4j.Logger; |
16 | 17 |
17 import org.dive4elements.river.artifacts.states.DefaultState; | 18 import org.dive4elements.river.artifacts.states.DefaultState; |
18 | 19 |
19 import org.w3c.dom.Element; | 20 import org.w3c.dom.Element; |
20 | 21 |
21 import org.dive4elements.river.artifacts.access.RangeAccess; | 22 import org.dive4elements.river.artifacts.access.RangeAccess; |
23 import org.dive4elements.river.artifacts.access.BedQualityAccess; | |
22 import org.dive4elements.river.artifacts.D4EArtifact; | 24 import org.dive4elements.river.artifacts.D4EArtifact; |
23 import org.dive4elements.river.artifacts.model.minfo.BedOverview; | 25 import org.dive4elements.river.artifacts.model.minfo.BedOverview; |
24 import org.dive4elements.river.artifacts.model.minfo.BedOverviewFactory; | 26 import org.dive4elements.river.artifacts.model.minfo.BedOverviewFactory; |
25 import org.dive4elements.river.artifacts.model.minfo.BedloadOverview; | 27 import org.dive4elements.river.artifacts.model.minfo.BedloadOverview; |
26 import org.dive4elements.river.artifacts.model.minfo.BedloadOverviewFactory; | 28 import org.dive4elements.river.artifacts.model.minfo.BedloadOverviewFactory; |
29 import org.dive4elements.river.artifacts.model.DateRange; | |
30 import org.dive4elements.river.artifacts.resources.Resources; | |
27 | 31 |
32 import org.dive4elements.river.utils.Formatter; | |
28 import org.dive4elements.river.utils.KMIndex; | 33 import org.dive4elements.river.utils.KMIndex; |
29 | 34 |
30 import org.dive4elements.artifacts.common.utils.XMLUtils; | 35 import org.dive4elements.artifacts.common.utils.XMLUtils; |
31 import org.dive4elements.artifacts.Artifact; | 36 import org.dive4elements.artifacts.Artifact; |
32 import org.dive4elements.artifacts.CallContext; | 37 import org.dive4elements.artifacts.CallContext; |
37 public class BedQualityPeriodsSelect extends DefaultState { | 42 public class BedQualityPeriodsSelect extends DefaultState { |
38 | 43 |
39 /** The log used in this class. */ | 44 /** The log used in this class. */ |
40 private static Logger log = Logger.getLogger(BedQualityPeriodsSelect.class); | 45 private static Logger log = Logger.getLogger(BedQualityPeriodsSelect.class); |
41 | 46 |
47 private static final String I18N_NO_DATA = | |
48 "state.minfo.bed.error.no_data"; | |
49 | |
50 private static final String I18N_NO_DATA_FOR_PERIOD = | |
51 "state.minfo.bed.error.no_data_for_period"; | |
42 | 52 |
43 /** | 53 /** |
44 * The default constructor that initializes an empty State object. | 54 * The default constructor that initializes an empty State object. |
45 */ | 55 */ |
46 public BedQualityPeriodsSelect() { | 56 public BedQualityPeriodsSelect() { |
106 | 116 |
107 return new Element[] { def }; | 117 return new Element[] { def }; |
108 } | 118 } |
109 | 119 |
110 @Override | 120 @Override |
121 public void validate(Artifact artifact, CallContext context) | |
122 throws IllegalArgumentException { | |
123 D4EArtifact arti = (D4EArtifact) artifact; | |
124 BedQualityAccess access = new BedQualityAccess(arti, context); | |
125 | |
126 Long[] minMax = getDataMinMaxDate(artifact); | |
127 if (minMax == null) { | |
128 throw new IllegalArgumentException(Resources.getMsg(context.getMeta(), | |
129 I18N_NO_DATA, | |
130 I18N_NO_DATA)); | |
131 } | |
132 | |
133 long min = minMax[0]; | |
134 long max = minMax[1]; | |
135 for (DateRange range: access.getDateRanges()) { | |
136 long a = range.getFrom().getTime(); | |
137 long b = range.getFrom().getTime(); | |
138 if ((a < min || a > max) && | |
139 ( b < min || b > max)) { | |
140 DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy"); | |
141 throw new IllegalArgumentException(Resources.getMsg(context.getMeta(), | |
142 I18N_NO_DATA_FOR_PERIOD, | |
143 I18N_NO_DATA_FOR_PERIOD, | |
144 new Object[] {df.format(range.getFrom()), | |
145 df.format(range.getTo())})); | |
146 } | |
147 } | |
148 } | |
149 | |
150 @Override | |
111 protected String getUIProvider() { | 151 protected String getUIProvider() { |
112 return "bedquality_periods_select"; | 152 return "bedquality_periods_select"; |
113 } | 153 } |
114 | 154 |
115 } | 155 } |