diff 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
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java	Mon Feb 01 14:52:05 2010 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java	Tue Feb 02 13:12:11 2010 +0000
@@ -3,40 +3,8 @@
  */
 package de.intevation.gnv.state;
 
-import de.intevation.artifactdatabase.Config;
-import de.intevation.artifactdatabase.XMLUtils;
-
-import de.intevation.artifacts.ArtifactNamespaceContext;
-import de.intevation.artifacts.CallContext;
-import de.intevation.artifacts.CallMeta;
-
-import de.intevation.gnv.artifacts.GNVArtifactBase;
-
-import de.intevation.gnv.artifacts.cache.CacheFactory;
-
-import de.intevation.gnv.artifacts.ressource.RessourceFactory;
-
-import de.intevation.gnv.geobackend.base.Result;
-
-import de.intevation.gnv.geobackend.base.query.QueryExecutor;
-import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
-
-import de.intevation.gnv.geobackend.base.query.exception.QueryException;
-
-import de.intevation.gnv.geobackend.util.DateUtils;
-
-import de.intevation.gnv.state.describedata.DefaultKeyValueDescribeData;
-import de.intevation.gnv.state.describedata.KeyValueDescibeData;
-import de.intevation.gnv.state.describedata.MinMaxDescribeData;
-import de.intevation.gnv.state.describedata.NamedArrayList;
-import de.intevation.gnv.state.describedata.NamedCollection;
-import de.intevation.gnv.state.describedata.SingleValueDescribeData;
-
-import de.intevation.gnv.state.exception.StateException;
-
-import de.intevation.gnv.utils.InputValidator;
-
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Date;
 import java.util.GregorianCalendar;
@@ -50,12 +18,33 @@
 import javax.xml.xpath.XPathConstants;
 
 import org.apache.log4j.Logger;
-
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifactdatabase.XMLUtils;
+import de.intevation.artifacts.ArtifactNamespaceContext;
+import de.intevation.artifacts.CallContext;
+import de.intevation.artifacts.CallMeta;
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+import de.intevation.gnv.artifacts.cache.CacheFactory;
+import de.intevation.gnv.artifacts.ressource.RessourceFactory;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.geobackend.base.query.QueryExecutor;
+import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
+import de.intevation.gnv.geobackend.base.query.exception.QueryException;
+import de.intevation.gnv.geobackend.util.DateUtils;
+import de.intevation.gnv.state.describedata.DefaultKeyValueDescribeData;
+import de.intevation.gnv.state.describedata.KeyValueDescibeData;
+import de.intevation.gnv.state.describedata.MinMaxDescribeData;
+import de.intevation.gnv.state.describedata.NamedArrayList;
+import de.intevation.gnv.state.describedata.NamedCollection;
+import de.intevation.gnv.state.describedata.SingleValueDescribeData;
+import de.intevation.gnv.state.exception.StateException;
+import de.intevation.gnv.utils.InputValidator;
+
 /**
  * @author Tim Englich         (tim.englich@intevation.de)
  * @author Ingo Weinzierl      (ingo.weinzierl@intevation.de)
@@ -88,6 +77,8 @@
     private String description = null;
 
     protected String dataName = null;
+    
+    protected String preSettingsName = null;
 
     protected boolean dataMultiSelect = false;
     
@@ -103,6 +94,7 @@
 
     protected Map<String, InputData> inputData = null;
     
+    private Map<String, InputData> preSettings = null;
 
     /**
      * Constructor
@@ -197,6 +189,8 @@
             this. dataNoSelect = Boolean.parseBoolean(dataNoSelectValue);
         }
         
+        this.preSettingsName = Config.getStringXPath(configuration, "presettings-name"); 
+        
     }
 
     /**
@@ -296,7 +290,15 @@
             log.warn("No Inputdata given");
         }
     }
-    
+
+    /**
+     * 
+     * @see de.intevation.gnv.state.State#setPreSettings(java.util.Map)
+     */
+    public void setPreSettings(Map<String, InputData> preSettings) {
+        this.preSettings = preSettings;
+    }
+
     private String getInputValue4ID(Collection<InputData> inputData, String inputName){
         Iterator<InputData> it = inputData.iterator();
         while (it.hasNext()) {
@@ -523,7 +525,16 @@
         int     keyPos      = 0;
         int     valuePos    = 1;
         String  previousKey = null;
-
+        InputData preSettingsData = (this.preSettings != null && 
+                                    this.preSettingsName != null) ? 
+                                    this.preSettings.get(this.preSettingsName) :
+                                    null;
+        boolean filterWithPresettings = preSettingsData != null;
+        
+        List<String> preSettingValues = null;
+        if(filterWithPresettings){
+            preSettingValues = Arrays.asList(preSettingsData.splitValue());
+        }
         while (rit.hasNext()) {
             Result resultValue = rit.next();
             if (!initialized){
@@ -535,10 +546,19 @@
                 initialized = true;
             }
             String tmpKey = resultValue.getString(keyPos);
-            // TODO: FIXME: We have to do that because the arcsde does not support a distinct Query on Layers.
+           
+            // TODO: FIXME: We have to do that because the arcsde does not 
+            //       support a distinct Query on Layers.
             if (previousKey == null || !tmpKey.equals(previousKey)){
                 previousKey = tmpKey;
-                keyValueDescibeData.add(new DefaultKeyValueDescribeData(tmpKey, resultValue.getString(valuePos), getID()));
+                if (!filterWithPresettings || preSettingValues.contains(tmpKey)){
+                    keyValueDescibeData.add(
+                            new DefaultKeyValueDescribeData(
+                                                tmpKey, 
+                                                resultValue.getString(valuePos),
+                                                getID())
+                                );
+                }
             }
         }
         return keyValueDescibeData;

http://dive4elements.wald.intevation.org