Mercurial > dive4elements > gnv-client
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: |