Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java @ 598:9681ac6b6527
Added the possibility to use the data which are send using the MapServer-Interface during the Workflow of the GNV-Artifacts.
gnv-artifacts/trunk@656 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Tue, 02 Feb 2010 13:12:11 +0000 |
parents | cef17cc90fd0 |
children | e8ebdbc7f1e3 |
comparison
equal
deleted
inserted
replaced
597:cf38b983d1f3 | 598:9681ac6b6527 |
---|---|
1 /** | 1 /** |
2 * | 2 * |
3 */ | 3 */ |
4 package de.intevation.gnv.state; | 4 package de.intevation.gnv.state; |
5 | 5 |
6 import de.intevation.artifactdatabase.Config; | |
7 import de.intevation.artifactdatabase.XMLUtils; | |
8 | |
9 import de.intevation.artifacts.ArtifactNamespaceContext; | |
10 import de.intevation.artifacts.CallContext; | |
11 import de.intevation.artifacts.CallMeta; | |
12 | |
13 import de.intevation.gnv.artifacts.GNVArtifactBase; | |
14 | |
15 import de.intevation.gnv.artifacts.cache.CacheFactory; | |
16 | |
17 import de.intevation.gnv.artifacts.ressource.RessourceFactory; | |
18 | |
19 import de.intevation.gnv.geobackend.base.Result; | |
20 | |
21 import de.intevation.gnv.geobackend.base.query.QueryExecutor; | |
22 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; | |
23 | |
24 import de.intevation.gnv.geobackend.base.query.exception.QueryException; | |
25 | |
26 import de.intevation.gnv.geobackend.util.DateUtils; | |
27 | |
28 import de.intevation.gnv.state.describedata.DefaultKeyValueDescribeData; | |
29 import de.intevation.gnv.state.describedata.KeyValueDescibeData; | |
30 import de.intevation.gnv.state.describedata.MinMaxDescribeData; | |
31 import de.intevation.gnv.state.describedata.NamedArrayList; | |
32 import de.intevation.gnv.state.describedata.NamedCollection; | |
33 import de.intevation.gnv.state.describedata.SingleValueDescribeData; | |
34 | |
35 import de.intevation.gnv.state.exception.StateException; | |
36 | |
37 import de.intevation.gnv.utils.InputValidator; | |
38 | |
39 import java.util.ArrayList; | 6 import java.util.ArrayList; |
7 import java.util.Arrays; | |
40 import java.util.Collection; | 8 import java.util.Collection; |
41 import java.util.Date; | 9 import java.util.Date; |
42 import java.util.GregorianCalendar; | 10 import java.util.GregorianCalendar; |
43 import java.util.HashMap; | 11 import java.util.HashMap; |
44 import java.util.HashSet; | 12 import java.util.HashSet; |
48 import java.util.Set; | 16 import java.util.Set; |
49 | 17 |
50 import javax.xml.xpath.XPathConstants; | 18 import javax.xml.xpath.XPathConstants; |
51 | 19 |
52 import org.apache.log4j.Logger; | 20 import org.apache.log4j.Logger; |
53 | |
54 import org.w3c.dom.Document; | 21 import org.w3c.dom.Document; |
55 import org.w3c.dom.Element; | 22 import org.w3c.dom.Element; |
56 import org.w3c.dom.Node; | 23 import org.w3c.dom.Node; |
57 import org.w3c.dom.NodeList; | 24 import org.w3c.dom.NodeList; |
25 | |
26 import de.intevation.artifactdatabase.Config; | |
27 import de.intevation.artifactdatabase.XMLUtils; | |
28 import de.intevation.artifacts.ArtifactNamespaceContext; | |
29 import de.intevation.artifacts.CallContext; | |
30 import de.intevation.artifacts.CallMeta; | |
31 import de.intevation.gnv.artifacts.GNVArtifactBase; | |
32 import de.intevation.gnv.artifacts.cache.CacheFactory; | |
33 import de.intevation.gnv.artifacts.ressource.RessourceFactory; | |
34 import de.intevation.gnv.geobackend.base.Result; | |
35 import de.intevation.gnv.geobackend.base.query.QueryExecutor; | |
36 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; | |
37 import de.intevation.gnv.geobackend.base.query.exception.QueryException; | |
38 import de.intevation.gnv.geobackend.util.DateUtils; | |
39 import de.intevation.gnv.state.describedata.DefaultKeyValueDescribeData; | |
40 import de.intevation.gnv.state.describedata.KeyValueDescibeData; | |
41 import de.intevation.gnv.state.describedata.MinMaxDescribeData; | |
42 import de.intevation.gnv.state.describedata.NamedArrayList; | |
43 import de.intevation.gnv.state.describedata.NamedCollection; | |
44 import de.intevation.gnv.state.describedata.SingleValueDescribeData; | |
45 import de.intevation.gnv.state.exception.StateException; | |
46 import de.intevation.gnv.utils.InputValidator; | |
58 | 47 |
59 /** | 48 /** |
60 * @author Tim Englich (tim.englich@intevation.de) | 49 * @author Tim Englich (tim.englich@intevation.de) |
61 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) | 50 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) |
62 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) | 51 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) |
86 private String id = null; | 75 private String id = null; |
87 | 76 |
88 private String description = null; | 77 private String description = null; |
89 | 78 |
90 protected String dataName = null; | 79 protected String dataName = null; |
80 | |
81 protected String preSettingsName = null; | |
91 | 82 |
92 protected boolean dataMultiSelect = false; | 83 protected boolean dataMultiSelect = false; |
93 | 84 |
94 protected boolean dataNoSelect = false; | 85 protected boolean dataNoSelect = false; |
95 | 86 |
101 | 92 |
102 private State parent = null; | 93 private State parent = null; |
103 | 94 |
104 protected Map<String, InputData> inputData = null; | 95 protected Map<String, InputData> inputData = null; |
105 | 96 |
97 private Map<String, InputData> preSettings = null; | |
106 | 98 |
107 /** | 99 /** |
108 * Constructor | 100 * Constructor |
109 */ | 101 */ |
110 public StateBase() { | 102 public StateBase() { |
194 String dataNoSelectValue =Config.getStringXPath(configuration, | 186 String dataNoSelectValue =Config.getStringXPath(configuration, |
195 "data-noselect"); | 187 "data-noselect"); |
196 if (dataNoSelectValue != null) { | 188 if (dataNoSelectValue != null) { |
197 this. dataNoSelect = Boolean.parseBoolean(dataNoSelectValue); | 189 this. dataNoSelect = Boolean.parseBoolean(dataNoSelectValue); |
198 } | 190 } |
191 | |
192 this.preSettingsName = Config.getStringXPath(configuration, "presettings-name"); | |
199 | 193 |
200 } | 194 } |
201 | 195 |
202 /** | 196 /** |
203 * @see de.intevation.gnv.state.State#getParent() | 197 * @see de.intevation.gnv.state.State#getParent() |
294 } | 288 } |
295 } else { | 289 } else { |
296 log.warn("No Inputdata given"); | 290 log.warn("No Inputdata given"); |
297 } | 291 } |
298 } | 292 } |
299 | 293 |
294 /** | |
295 * | |
296 * @see de.intevation.gnv.state.State#setPreSettings(java.util.Map) | |
297 */ | |
298 public void setPreSettings(Map<String, InputData> preSettings) { | |
299 this.preSettings = preSettings; | |
300 } | |
301 | |
300 private String getInputValue4ID(Collection<InputData> inputData, String inputName){ | 302 private String getInputValue4ID(Collection<InputData> inputData, String inputName){ |
301 Iterator<InputData> it = inputData.iterator(); | 303 Iterator<InputData> it = inputData.iterator(); |
302 while (it.hasNext()) { | 304 while (it.hasNext()) { |
303 InputData tmpItem = it.next(); | 305 InputData tmpItem = it.next(); |
304 if (tmpItem.getName().equals(inputName)){ | 306 if (tmpItem.getName().equals(inputName)){ |
521 | 523 |
522 boolean initialized = false; | 524 boolean initialized = false; |
523 int keyPos = 0; | 525 int keyPos = 0; |
524 int valuePos = 1; | 526 int valuePos = 1; |
525 String previousKey = null; | 527 String previousKey = null; |
526 | 528 InputData preSettingsData = (this.preSettings != null && |
529 this.preSettingsName != null) ? | |
530 this.preSettings.get(this.preSettingsName) : | |
531 null; | |
532 boolean filterWithPresettings = preSettingsData != null; | |
533 | |
534 List<String> preSettingValues = null; | |
535 if(filterWithPresettings){ | |
536 preSettingValues = Arrays.asList(preSettingsData.splitValue()); | |
537 } | |
527 while (rit.hasNext()) { | 538 while (rit.hasNext()) { |
528 Result resultValue = rit.next(); | 539 Result resultValue = rit.next(); |
529 if (!initialized){ | 540 if (!initialized){ |
530 keyPos = resultValue.getResultDescriptor().getColumnIndex(keyid); | 541 keyPos = resultValue.getResultDescriptor().getColumnIndex(keyid); |
531 valuePos = resultValue.getResultDescriptor().getColumnIndex(valueid); | 542 valuePos = resultValue.getResultDescriptor().getColumnIndex(valueid); |
533 valuePos = 1; | 544 valuePos = 1; |
534 } | 545 } |
535 initialized = true; | 546 initialized = true; |
536 } | 547 } |
537 String tmpKey = resultValue.getString(keyPos); | 548 String tmpKey = resultValue.getString(keyPos); |
538 // TODO: FIXME: We have to do that because the arcsde does not support a distinct Query on Layers. | 549 |
550 // TODO: FIXME: We have to do that because the arcsde does not | |
551 // support a distinct Query on Layers. | |
539 if (previousKey == null || !tmpKey.equals(previousKey)){ | 552 if (previousKey == null || !tmpKey.equals(previousKey)){ |
540 previousKey = tmpKey; | 553 previousKey = tmpKey; |
541 keyValueDescibeData.add(new DefaultKeyValueDescribeData(tmpKey, resultValue.getString(valuePos), getID())); | 554 if (!filterWithPresettings || preSettingValues.contains(tmpKey)){ |
555 keyValueDescibeData.add( | |
556 new DefaultKeyValueDescribeData( | |
557 tmpKey, | |
558 resultValue.getString(valuePos), | |
559 getID()) | |
560 ); | |
561 } | |
542 } | 562 } |
543 } | 563 } |
544 return keyValueDescibeData; | 564 return keyValueDescibeData; |
545 } | 565 } |
546 | 566 |