Mercurial > dive4elements > gnv-client
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;