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);

http://dive4elements.wald.intevation.org