Mercurial > dive4elements > gnv-client
diff gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java @ 30:07e9c137a2f1
Added dynamic Outputparameter Support and Outputparameter-manipulation
gnv/trunk@134 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Fri, 25 Sep 2009 14:24:08 +0000 |
parents | 13ba9f6e87a2 |
children | 0f4362d75e9e |
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java Fri Sep 25 07:28:49 2009 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java Fri Sep 25 14:24:08 2009 +0000 @@ -8,7 +8,9 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import org.apache.log4j.Logger; import org.restlet.Client; @@ -28,7 +30,11 @@ import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription; import de.intevation.gnv.artifactdatabase.objects.ArtifactFactory; import de.intevation.gnv.artifactdatabase.objects.ArtifactObject; +import de.intevation.gnv.artifactdatabase.objects.DefaultOutputMode; +import de.intevation.gnv.artifactdatabase.objects.DefaultOutputParameter; import de.intevation.gnv.artifactdatabase.objects.InputParameter; +import de.intevation.gnv.artifactdatabase.objects.OutputMode; +import de.intevation.gnv.artifactdatabase.objects.OutputParameter; import de.intevation.gnv.propertiesreader.PropertiesReader; import de.intevation.gnv.propertiesreader.PropertiesReaderFactory; import de.intevation.gnv.util.XMLUtils; @@ -289,6 +295,32 @@ ArtifactDescription ad = (ArtifactDescription)artifact; Node uiNode = xmlUtils.getNodeXPath(document, "/result/ui"); Node outputNode = xmlUtils.getNodeXPath(document, "/result/outputs"); + + Map<String, OutputMode> outputModes = null; + if (outputNode != null){ + NodeList outputModesNodes = xmlUtils.getNodeSetXPath(outputNode, "output"); + if (outputModesNodes != null){ + outputModes = new HashMap<String, OutputMode>(outputModesNodes.getLength()); + for (int i = 0; i < outputModesNodes.getLength(); i++){ + Node outputModeNode = outputModesNodes.item(i); + String name = xmlUtils.getStringXPath(outputModeNode, "@name"); + String mimeType = xmlUtils.getStringXPath(outputModeNode, "@mime-type"); + + NodeList parameterNodes = xmlUtils.getNodeSetXPath(outputModeNode, "parameter/parameter"); + Collection<OutputParameter> parameter = null; + if (parameterNodes != null){ + parameter = new ArrayList<OutputParameter>(parameterNodes.getLength()); + for (int j = 0; j < parameterNodes.getLength(); j++){ + Node outputParameterNode = parameterNodes.item(j); + parameter.add(new DefaultOutputParameter(xmlUtils.getStringXPath(outputParameterNode,"@name"),xmlUtils.getStringXPath(outputParameterNode,"@value"),xmlUtils.getStringXPath(outputParameterNode,"@name"),xmlUtils.getStringXPath(outputParameterNode,"@type"))); + } + } + outputModes.put(name,new DefaultOutputMode(name, mimeType, parameter)); + } + + } + } + String currentState = xmlUtils.getStringXPath(document, "/result/state/@name"); NodeList statesList = xmlUtils.getNodeSetXPath(document, "/result/reachable-states/state/@name"); Collection<String> reachableStates = new ArrayList<String>(statesList.getLength()); @@ -307,6 +339,7 @@ ad.setInputParameter(inputParameter); } + ad.setOutputModes(outputModes); ad.setCurrentOut(outputNode); ad.setCurrentUI(uiNode); ad.setCurrentState(currentState);