Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/state/MeasurementState.java @ 785:e764cab8c885
Save the relation between selected measurement and the parameter it belongs to (issue210). TODO: Adapt sql statements.
gnv-artifacts/trunk@867 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 30 Mar 2010 14:05:22 +0000 |
parents | c4156275c1e1 |
children | a5526908f92f |
comparison
equal
deleted
inserted
replaced
784:7b81d563c8c0 | 785:e764cab8c885 |
---|---|
1 package de.intevation.gnv.state; | 1 package de.intevation.gnv.state; |
2 | 2 |
3 import de.intevation.artifactdatabase.XMLUtils; | 3 import de.intevation.artifactdatabase.XMLUtils; |
4 | 4 |
5 import de.intevation.artifacts.CallContext; | |
5 import de.intevation.artifacts.CallMeta; | 6 import de.intevation.artifacts.CallMeta; |
6 | 7 |
7 import de.intevation.gnv.artifacts.ressource.RessourceFactory; | 8 import de.intevation.gnv.artifacts.ressource.RessourceFactory; |
8 | 9 |
9 import de.intevation.gnv.geobackend.base.Result; | 10 import de.intevation.gnv.geobackend.base.Result; |
12 import de.intevation.gnv.state.describedata.ExtendedKeyValueData; | 13 import de.intevation.gnv.state.describedata.ExtendedKeyValueData; |
13 import de.intevation.gnv.state.describedata.KeyValueDescibeData; | 14 import de.intevation.gnv.state.describedata.KeyValueDescibeData; |
14 import de.intevation.gnv.state.describedata.NamedArrayList; | 15 import de.intevation.gnv.state.describedata.NamedArrayList; |
15 import de.intevation.gnv.state.describedata.NamedCollection; | 16 import de.intevation.gnv.state.describedata.NamedCollection; |
16 | 17 |
18 import de.intevation.gnv.state.exception.StateException; | |
19 | |
20 import de.intevation.gnv.utils.InputValidator; | |
21 | |
17 import java.util.ArrayList; | 22 import java.util.ArrayList; |
18 import java.util.Arrays; | 23 import java.util.Arrays; |
19 import java.util.Collection; | 24 import java.util.Collection; |
25 import java.util.HashMap; | |
20 import java.util.Iterator; | 26 import java.util.Iterator; |
21 import java.util.List; | 27 import java.util.List; |
28 import java.util.Locale; | |
22 | 29 |
23 import org.apache.log4j.Logger; | 30 import org.apache.log4j.Logger; |
24 | 31 |
25 import org.w3c.dom.Document; | 32 import org.w3c.dom.Document; |
26 import org.w3c.dom.Element; | 33 import org.w3c.dom.Element; |
34 { | 41 { |
35 private static Logger logger = Logger.getLogger(MeasurementState.class); | 42 private static Logger logger = Logger.getLogger(MeasurementState.class); |
36 | 43 |
37 public static final String SQL_KEY_PARAMETERID = "PARAMETERID"; | 44 public static final String SQL_KEY_PARAMETERID = "PARAMETERID"; |
38 | 45 |
46 public static final String SEPARATOR = ";"; | |
47 | |
39 | 48 |
40 private class ParameterMatrix { | 49 private class ParameterMatrix { |
41 private final Logger logger = | 50 private final Logger logger = |
42 Logger.getLogger(ParameterMatrix.class); | 51 Logger.getLogger(ParameterMatrix.class); |
43 | 52 |
93 } | 102 } |
94 } | 103 } |
95 } | 104 } |
96 | 105 |
97 private void initParameters(String[] parameter) { | 106 private void initParameters(String[] parameter) { |
98 int count = parameter.length; | 107 for (String param: parameter) { |
99 for (int i = 0; i < count; i++) { | 108 parameters.add(param); |
100 parameters.add(parameter[i]); | |
101 } | 109 } |
102 } | 110 } |
103 | 111 |
104 public int measurementSize() { | 112 public int measurementSize() { |
105 if (measurements != null) | 113 if (measurements != null) |
218 int measurements = matrix.measurementSize(); | 226 int measurements = matrix.measurementSize(); |
219 int parameters = matrix.parameterSize(); | 227 int parameters = matrix.parameterSize(); |
220 | 228 |
221 for (int i = 0; i < parameters; i++) { | 229 for (int i = 0; i < parameters; i++) { |
222 Element select = creator.create("select"); | 230 Element select = creator.create("select"); |
223 creator.addAttr(select, "label", inputParam.getDescription(matrix.getParameter(i))); | 231 String param = matrix.getParameter(i); |
232 creator.addAttr(select, "label", inputParam.getDescription(param)); | |
224 creator.addAttr(select, "ref", name); | 233 creator.addAttr(select, "ref", name); |
225 | 234 |
226 for (int j = 0; j < measurements; j++) { | 235 for (int j = 0; j < measurements; j++) { |
227 Element item = creator.create("item"); | 236 Element item = creator.create("item"); |
228 Element label = creator.create("label"); | 237 Element label = creator.create("label"); |
239 } | 248 } |
240 else { | 249 else { |
241 creator.addAttr(item, "disabled", "false"); | 250 creator.addAttr(item, "disabled", "false"); |
242 } | 251 } |
243 | 252 |
253 String tmpValue = matrix.getMeasurement(j) + ";" + param; | |
244 label.setTextContent(matrix.getMDescription(j)); | 254 label.setTextContent(matrix.getMDescription(j)); |
245 value.setTextContent(matrix.getMeasurement(j)); | 255 value.setTextContent(tmpValue); |
246 | 256 |
247 item.appendChild(label); | 257 item.appendChild(label); |
248 item.appendChild(value); | 258 item.appendChild(value); |
249 select.appendChild(item); | 259 select.appendChild(item); |
250 } | 260 } |
252 matrixNode.appendChild(select); | 262 matrixNode.appendChild(select); |
253 } | 263 } |
254 | 264 |
255 dynamicNode.appendChild(matrixNode); | 265 dynamicNode.appendChild(matrixNode); |
256 } | 266 } |
267 | |
268 | |
269 @Override | |
270 public Document feed( | |
271 CallContext context, | |
272 Collection<InputData> input, | |
273 String uuid) | |
274 throws StateException | |
275 { | |
276 RessourceFactory resFactory = RessourceFactory.getInstance(); | |
277 Locale[] serverLocales = resFactory.getLocales(); | |
278 Locale locale = context.getMeta().getPreferredLocale( | |
279 serverLocales); | |
280 | |
281 if (input == null) { | |
282 String msg = resFactory.getRessource( | |
283 locale, | |
284 EXCEPTION_NO_INPUT, | |
285 EXCEPTION_NO_INPUT); | |
286 logger.warn(msg); | |
287 return feedFailure(msg); | |
288 } | |
289 | |
290 for(InputData item: input) { | |
291 String name = item.getName(); | |
292 InputValue inputValue = inputValues.get(name); | |
293 | |
294 String[] tupel = extractValuesAndParams(item.getValue()); | |
295 String type = inputValue.getType(); | |
296 | |
297 if (inputValue == null) { | |
298 String msg = resFactory.getRessource( | |
299 locale, | |
300 EXCEPTION_INVALID_INPUT, | |
301 EXCEPTION_INVALID_INPUT); | |
302 logger.warn(msg); | |
303 return feedFailure(msg); | |
304 } | |
305 | |
306 if (!InputValidator.isInputValid(tupel[0], type)) { | |
307 String msg = resFactory.getRessource( | |
308 locale, | |
309 EXCEPTION_INVALID_INPUT, | |
310 EXCEPTION_INVALID_INPUT); | |
311 logger.warn(msg); | |
312 return feedFailure(msg); | |
313 } | |
314 | |
315 if (inputData == null) { | |
316 inputData = new HashMap<String, InputData>(); | |
317 } | |
318 | |
319 ExtendedInputData extended = new ExtendedInputData( | |
320 name, | |
321 tupel[0], | |
322 item.getObject(), | |
323 tupel[1]); | |
324 | |
325 if (name.equals(dataName)) { | |
326 String[] desc = getDescriptionForInputData(extended, uuid); | |
327 extended.setDescription(desc); | |
328 } | |
329 | |
330 inputData.put(name, extended); | |
331 } | |
332 | |
333 return feedSuccess(); | |
334 } | |
335 | |
336 | |
337 protected String[] extractValuesAndParams(String tmp) { | |
338 String[] array = tmp.split(DefaultInputData.VALUE_SEPARATOR); | |
339 | |
340 String[] extracted = new String[2]; | |
341 for (String item: array) { | |
342 String[] tupel = item.split(ExtendedInputData.SEPARATOR); | |
343 | |
344 if (extracted[0] == null) { | |
345 extracted[0] = tupel[0]; | |
346 } | |
347 else { | |
348 extracted[0] += | |
349 DefaultInputData.VALUE_SEPARATOR + tupel[0]; | |
350 } | |
351 | |
352 if (extracted[1] == null) { | |
353 extracted[1] = tupel[1]; | |
354 } | |
355 else { | |
356 extracted[1] += DefaultInputData.VALUE_SEPARATOR + tupel[1]; | |
357 } | |
358 } | |
359 | |
360 logger.debug("VALUES RESULT: " + extracted[0]); | |
361 logger.debug("PARAMS RESULT: " + extracted[1]); | |
362 | |
363 return extracted; | |
364 } | |
257 } | 365 } |
258 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: | 366 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |