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

http://dive4elements.wald.intevation.org