comparison gnv-artifacts/src/main/java/de/intevation/gnv/state/MinMaxDateState.java @ 725:dde7f51dbe1e

Improved exception handling while feeding an artifact. gnv-artifacts/trunk@757 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 10 Mar 2010 13:27:14 +0000
parents
children 9a828e5a2390
comparison
equal deleted inserted replaced
724:9ba6bb85d6dd 725:dde7f51dbe1e
1 package de.intevation.gnv.state;
2
3 import de.intevation.artifactdatabase.XMLUtils;
4
5 import de.intevation.artifacts.CallContext;
6 import de.intevation.artifacts.CallMeta;
7
8 import de.intevation.gnv.artifacts.ressource.RessourceFactory;
9
10 import de.intevation.gnv.geobackend.base.Result;
11
12 import de.intevation.gnv.geobackend.util.DateUtils;
13
14 import de.intevation.gnv.state.describedata.DefaultMinMaxDescribeData;
15 import de.intevation.gnv.state.describedata.DescribeData;
16 import de.intevation.gnv.state.describedata.MinMaxDescribeData;
17
18 import de.intevation.gnv.state.exception.StateException;
19
20 import de.intevation.gnv.utils.InputValidator;
21
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.Date;
25 import java.util.GregorianCalendar;
26 import java.util.Iterator;
27 import java.util.List;
28 import java.util.Locale;
29
30 import org.apache.log4j.Logger;
31
32 import org.w3c.dom.Document;
33 import org.w3c.dom.Element;
34 import org.w3c.dom.Node;
35
36 /**
37 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
38 */
39 public class MinMaxDateState extends MinMaxState {
40
41
42 public static final String EXCEPTION_DATE_REQUIRED =
43 "input.is.not.valid.date.required";
44
45 public static final String EXCEPTION_START_AFTER_END =
46 "start.date.after.end.date";
47
48 private static Logger logger = Logger.getLogger(MinMaxDateState.class);
49
50
51 public MinMaxDateState() {
52 super();
53 }
54
55
56 /**
57 * @see de.intevation.gnv.state.StateBase#feed(java.util.Collection,
58 * java.lang.String)
59 */
60 @Override
61 public Document feed(
62 CallContext context,
63 Collection<InputData> inputData,
64 String uuid)
65 throws StateException {
66 RessourceFactory resFactory = RessourceFactory.getInstance();
67 Locale[] serverLocales = resFactory.getLocales();
68 Locale locale = context.getMeta().getPreferredLocale(
69 serverLocales);
70
71 if (inputData == null) {
72 String msg = "No input data given.";
73 logger.warn(msg);
74 return feedFailure(msg);
75 }
76
77 InputValidator iv = new InputValidator();
78 Iterator iter = inputData.iterator();
79
80 Object min = null;
81 Object max = null;
82
83 while (iter.hasNext()) {
84 InputData tmp = (InputData) iter.next();
85 InputValue meta = inputValues.get(tmp.getName());
86 String type = meta.getType();
87 String value = tmp.getValue();
88 String name = tmp.getName();
89
90 if (meta == null) {
91 String msg = "Input data not expected here. Data will be ignored.";
92 logger.warn(msg);
93 return feedFailure(msg);
94 }
95
96 boolean valid = iv.isInputValid(value, type);
97 if (!valid) {
98 String msg = resFactory.getRessource(
99 locale, EXCEPTION_DATE_REQUIRED, EXCEPTION_DATE_REQUIRED);
100 logger.error(msg);
101 return feedFailure(msg);
102 }
103
104 if (name.equals(MINVALUEFIELDNAME)) {
105 min = value;
106 }
107
108 if (name.equals(MAXVALUEFIELDNAME)) {
109 max = value;
110 }
111
112 if (min != null && max != null) {
113 if (!iv.isInputValid((String) min, (String) max, type)) {
114 String msg = resFactory.getRessource(
115 locale,
116 EXCEPTION_START_AFTER_END,
117 EXCEPTION_START_AFTER_END);
118 logger.error(msg);
119 return feedFailure(msg);
120 }
121 }
122 }
123
124 DescribeData values = new DefaultMinMaxDescribeData(
125 dataName, min, max, getID());
126
127 this.inputData.put(dataName, new DefaultInputData(dataName, values));
128
129 return feedSuccess();
130 }
131 }
132 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

http://dive4elements.wald.intevation.org