Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/state/MinMaxState.java @ 607:292fbcd5e9ac
Parted the cache blob into pieces and changed the way how user input is stored on each state.
gnv-artifacts/trunk@673 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 10 Feb 2010 11:43:35 +0000 |
parents | a6a33ef35809 |
children | 74dfb9346574 |
comparison
equal
deleted
inserted
replaced
606:9efc1c256dbb | 607:292fbcd5e9ac |
---|---|
1 /** | |
2 * | |
3 */ | |
4 package de.intevation.gnv.state; | 1 package de.intevation.gnv.state; |
2 | |
3 import de.intevation.artifactdatabase.XMLUtils; | |
4 | |
5 import de.intevation.artifacts.CallMeta; | |
6 | |
7 import de.intevation.gnv.artifacts.ressource.RessourceFactory; | |
8 | |
9 import de.intevation.gnv.geobackend.base.Result; | |
10 | |
11 import de.intevation.gnv.geobackend.util.DateUtils; | |
12 | |
13 import de.intevation.gnv.state.describedata.DefaultMinMaxDescribeData; | |
14 import de.intevation.gnv.state.describedata.DescribeData; | |
15 import de.intevation.gnv.state.describedata.MinMaxDescribeData; | |
16 | |
17 import de.intevation.gnv.state.exception.StateException; | |
18 | |
19 import de.intevation.gnv.utils.InputValidator; | |
5 | 20 |
6 import java.util.ArrayList; | 21 import java.util.ArrayList; |
7 import java.util.Collection; | 22 import java.util.Collection; |
23 import java.util.Date; | |
24 import java.util.GregorianCalendar; | |
25 import java.util.Iterator; | |
8 import java.util.List; | 26 import java.util.List; |
9 | 27 |
10 import org.apache.log4j.Logger; | 28 import org.apache.log4j.Logger; |
11 | 29 |
12 import de.intevation.gnv.geobackend.base.Result; | 30 import org.w3c.dom.Document; |
13 import de.intevation.gnv.state.describedata.DefaultMinMaxDescribeData; | 31 import org.w3c.dom.Element; |
14 import de.intevation.gnv.state.describedata.DescribeData; | 32 import org.w3c.dom.Node; |
33 import org.w3c.dom.NodeList; | |
15 | 34 |
16 /** | 35 /** |
17 * @author Tim Englich <tim.englich@intevation.de> | 36 * @author Tim Englich (tim.englich@intevation.de) |
18 * | 37 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) |
19 */ | 38 */ |
20 public class MinMaxState extends StateBase { | 39 public class MinMaxState extends StateBase { |
21 | 40 |
22 /** | 41 /** |
23 * The UID of this Class | 42 * The UID of this Class |
38 /** | 57 /** |
39 * @see de.intevation.gnv.state.StateBase#purifyResult(java.util.Collection, | 58 * @see de.intevation.gnv.state.StateBase#purifyResult(java.util.Collection, |
40 * java.lang.String) | 59 * java.lang.String) |
41 */ | 60 */ |
42 @Override | 61 @Override |
43 protected void purifyResult(Collection<Result> result, String uuid) { | 62 protected List<Object> purifyResult( |
44 log.debug("MinMaxState.purifyResult"); | 63 Collection<Result> result, String uuid) |
45 List<Object> describeData = this.getDescibeData(uuid); | 64 { |
46 if (describeData == null) { | 65 List<Object> describeData = new ArrayList<Object>(); |
47 describeData = new ArrayList<Object>(); | 66 |
48 } | |
49 if (result != null && result.size() == 1) { | 67 if (result != null && result.size() == 1) { |
50 | |
51 Result value = result.iterator().next(); | 68 Result value = result.iterator().next(); |
52 DescribeData values = new DefaultMinMaxDescribeData( | 69 DescribeData values = new DefaultMinMaxDescribeData( |
53 dataName, | 70 dataName, |
54 value.getObject("MIN"), | 71 value.getObject("MIN"), |
55 value.getObject("MAX"), | 72 value.getObject("MAX"), |
56 getID()); | 73 getID()); |
57 log.debug(values.toString()); | |
58 describeData.add(values); | 74 describeData.add(values); |
59 } else { | 75 } else { |
60 log.warn("Result cannot be handled as MinMax Resultset"); | 76 log.warn("Result cannot be handled as MinMax Resultset"); |
61 } | 77 } |
62 this.setDescibeData(uuid, describeData); | 78 |
63 } | 79 return describeData; |
64 | 80 } |
81 | |
82 | |
83 /** | |
84 * @see de.intevation.gnv.state.StateBase#feed(java.util.Collection, | |
85 * java.lang.String) | |
86 */ | |
87 @Override | |
88 public void feed(Collection<InputData> inputData, String uuid) | |
89 throws StateException | |
90 { | |
91 if (inputData == null) | |
92 return; | |
93 | |
94 InputValidator iv = new InputValidator(); | |
95 Iterator iter = inputData.iterator(); | |
96 | |
97 Object min = null; | |
98 Object max = null; | |
99 | |
100 while (iter.hasNext()) { | |
101 InputData tmp = (InputData) iter.next(); | |
102 InputValue meta = inputValues.get(tmp.getName()); | |
103 String value = tmp.getValue(); | |
104 String name = tmp.getName(); | |
105 | |
106 if (meta == null) { | |
107 log.warn("Input data not expected here. Data will be ignored."); | |
108 return; | |
109 } | |
110 | |
111 boolean valid = iv.isInputValid(value, meta.getType()); | |
112 if (!valid) { | |
113 String msg = "Input is not valid for this state."; | |
114 log.error(msg); | |
115 throw new StateException(msg); | |
116 } | |
117 | |
118 if (name.equals(MINVALUEFIELDNAME)) { | |
119 min = value; | |
120 } | |
121 | |
122 if (name.equals(MAXVALUEFIELDNAME)) { | |
123 max = value; | |
124 } | |
125 } | |
126 | |
127 if (min != null && max != null) { | |
128 DescribeData values = new DefaultMinMaxDescribeData( | |
129 dataName, min, max, getID()); | |
130 | |
131 this.inputData.put(dataName, new DefaultInputData(dataName, values)); | |
132 } | |
133 } | |
134 | |
135 | |
136 @Override | |
137 protected void appendToStaticNode( | |
138 XMLUtils.ElementCreator artCreator, | |
139 XMLUtils.ElementCreator creator, | |
140 Document document, | |
141 Node staticNode, | |
142 CallMeta callMeta, | |
143 String inputKey | |
144 ) { | |
145 InputData data = inputData.get(dataName); | |
146 | |
147 if (data == null) { | |
148 return; | |
149 } | |
150 | |
151 MinMaxDescribeData minMax = (MinMaxDescribeData) data.getObject(); | |
152 | |
153 Object min = minMax.getMinValue(); | |
154 Object max = minMax.getMaxValue(); | |
155 if (min instanceof GregorianCalendar) { | |
156 Date d = ((GregorianCalendar) min).getTime(); | |
157 min = DateUtils.getPatternedDateAmer(d); | |
158 } | |
159 | |
160 if (max instanceof GregorianCalendar) { | |
161 Date d = ((GregorianCalendar) max).getTime(); | |
162 max = DateUtils.getPatternedDateAmer(d); | |
163 } | |
164 | |
165 Element groupNode = creator.create("group"); | |
166 artCreator.addAttr(groupNode, "state", minMax.getState(), true); | |
167 | |
168 creator.addAttr(groupNode, "ref", minMax.getName()); | |
169 Element groupNodeLableNode = creator.create("label"); | |
170 groupNodeLableNode.setTextContent(RessourceFactory | |
171 .getInstance().getRessource( | |
172 callMeta.getLanguages(), | |
173 minMax.getName(), | |
174 minMax.getName())); | |
175 groupNode.appendChild(groupNodeLableNode); | |
176 | |
177 Element inputMinNode = creator.create("input"); | |
178 creator.addAttr(inputMinNode, "ref", MINVALUEFIELDNAME); | |
179 Element inputMinLableNode = creator.create("label"); | |
180 inputMinLableNode.setTextContent(RessourceFactory | |
181 .getInstance().getRessource( | |
182 callMeta.getLanguages(), MINVALUEFIELDNAME, | |
183 MINVALUEFIELDNAME)); | |
184 inputMinNode.appendChild(inputMinLableNode); | |
185 | |
186 Element inputMinValueNode = creator.create("value"); | |
187 inputMinValueNode.setTextContent(min.toString()); | |
188 inputMinNode.appendChild(inputMinValueNode); | |
189 | |
190 Element inputMaxNode = creator.create("input"); | |
191 creator.addAttr(inputMaxNode, "ref", MAXVALUEFIELDNAME); | |
192 Element inputMaxLableNode = creator.create("label"); | |
193 inputMaxLableNode.setTextContent(RessourceFactory | |
194 .getInstance().getRessource( | |
195 callMeta.getLanguages(), MAXVALUEFIELDNAME, | |
196 MAXVALUEFIELDNAME)); | |
197 inputMaxNode.appendChild(inputMaxLableNode); | |
198 | |
199 Element inputMaxValueNode = creator.create("value"); | |
200 inputMaxValueNode.setTextContent(max.toString()); | |
201 inputMaxNode.appendChild(inputMaxValueNode); | |
202 | |
203 groupNode.appendChild(inputMinNode); | |
204 groupNode.appendChild(inputMaxNode); | |
205 | |
206 staticNode.appendChild(groupNode); | |
207 } | |
65 } | 208 } |
209 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: |