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 }

http://dive4elements.wald.intevation.org