comparison 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
comparison
equal deleted inserted replaced
29:bba8fd97e549 30:07e9c137a2f1
6 import java.io.IOException; 6 import java.io.IOException;
7 import java.io.InputStream; 7 import java.io.InputStream;
8 import java.io.OutputStream; 8 import java.io.OutputStream;
9 import java.util.ArrayList; 9 import java.util.ArrayList;
10 import java.util.Collection; 10 import java.util.Collection;
11 import java.util.HashMap;
11 import java.util.Iterator; 12 import java.util.Iterator;
13 import java.util.Map;
12 14
13 import org.apache.log4j.Logger; 15 import org.apache.log4j.Logger;
14 import org.restlet.Client; 16 import org.restlet.Client;
15 import org.restlet.data.Method; 17 import org.restlet.data.Method;
16 import org.restlet.data.Protocol; 18 import org.restlet.data.Protocol;
26 import de.intevation.gnv.artifactdatabase.client.exception.ArtifactDatabaseClientException; 28 import de.intevation.gnv.artifactdatabase.client.exception.ArtifactDatabaseClientException;
27 import de.intevation.gnv.artifactdatabase.objects.Artifact; 29 import de.intevation.gnv.artifactdatabase.objects.Artifact;
28 import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription; 30 import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription;
29 import de.intevation.gnv.artifactdatabase.objects.ArtifactFactory; 31 import de.intevation.gnv.artifactdatabase.objects.ArtifactFactory;
30 import de.intevation.gnv.artifactdatabase.objects.ArtifactObject; 32 import de.intevation.gnv.artifactdatabase.objects.ArtifactObject;
33 import de.intevation.gnv.artifactdatabase.objects.DefaultOutputMode;
34 import de.intevation.gnv.artifactdatabase.objects.DefaultOutputParameter;
31 import de.intevation.gnv.artifactdatabase.objects.InputParameter; 35 import de.intevation.gnv.artifactdatabase.objects.InputParameter;
36 import de.intevation.gnv.artifactdatabase.objects.OutputMode;
37 import de.intevation.gnv.artifactdatabase.objects.OutputParameter;
32 import de.intevation.gnv.propertiesreader.PropertiesReader; 38 import de.intevation.gnv.propertiesreader.PropertiesReader;
33 import de.intevation.gnv.propertiesreader.PropertiesReaderFactory; 39 import de.intevation.gnv.propertiesreader.PropertiesReaderFactory;
34 import de.intevation.gnv.util.XMLUtils; 40 import de.intevation.gnv.util.XMLUtils;
35 41
36 /** 42 /**
287 XMLUtils xmlUtils = new XMLUtils(); 293 XMLUtils xmlUtils = new XMLUtils();
288 if (artifact instanceof ArtifactDescription){ 294 if (artifact instanceof ArtifactDescription){
289 ArtifactDescription ad = (ArtifactDescription)artifact; 295 ArtifactDescription ad = (ArtifactDescription)artifact;
290 Node uiNode = xmlUtils.getNodeXPath(document, "/result/ui"); 296 Node uiNode = xmlUtils.getNodeXPath(document, "/result/ui");
291 Node outputNode = xmlUtils.getNodeXPath(document, "/result/outputs"); 297 Node outputNode = xmlUtils.getNodeXPath(document, "/result/outputs");
298
299 Map<String, OutputMode> outputModes = null;
300 if (outputNode != null){
301 NodeList outputModesNodes = xmlUtils.getNodeSetXPath(outputNode, "output");
302 if (outputModesNodes != null){
303 outputModes = new HashMap<String, OutputMode>(outputModesNodes.getLength());
304 for (int i = 0; i < outputModesNodes.getLength(); i++){
305 Node outputModeNode = outputModesNodes.item(i);
306 String name = xmlUtils.getStringXPath(outputModeNode, "@name");
307 String mimeType = xmlUtils.getStringXPath(outputModeNode, "@mime-type");
308
309 NodeList parameterNodes = xmlUtils.getNodeSetXPath(outputModeNode, "parameter/parameter");
310 Collection<OutputParameter> parameter = null;
311 if (parameterNodes != null){
312 parameter = new ArrayList<OutputParameter>(parameterNodes.getLength());
313 for (int j = 0; j < parameterNodes.getLength(); j++){
314 Node outputParameterNode = parameterNodes.item(j);
315 parameter.add(new DefaultOutputParameter(xmlUtils.getStringXPath(outputParameterNode,"@name"),xmlUtils.getStringXPath(outputParameterNode,"@value"),xmlUtils.getStringXPath(outputParameterNode,"@name"),xmlUtils.getStringXPath(outputParameterNode,"@type")));
316 }
317 }
318 outputModes.put(name,new DefaultOutputMode(name, mimeType, parameter));
319 }
320
321 }
322 }
323
292 String currentState = xmlUtils.getStringXPath(document, "/result/state/@name"); 324 String currentState = xmlUtils.getStringXPath(document, "/result/state/@name");
293 NodeList statesList = xmlUtils.getNodeSetXPath(document, "/result/reachable-states/state/@name"); 325 NodeList statesList = xmlUtils.getNodeSetXPath(document, "/result/reachable-states/state/@name");
294 Collection<String> reachableStates = new ArrayList<String>(statesList.getLength()); 326 Collection<String> reachableStates = new ArrayList<String>(statesList.getLength());
295 for (int i = 0; i < statesList.getLength(); i++){ 327 for (int i = 0; i < statesList.getLength(); i++){
296 reachableStates.add(statesList.item(i).getNodeValue()); 328 reachableStates.add(statesList.item(i).getNodeValue());
305 inputParameter.add(name); 337 inputParameter.add(name);
306 } 338 }
307 ad.setInputParameter(inputParameter); 339 ad.setInputParameter(inputParameter);
308 } 340 }
309 341
342 ad.setOutputModes(outputModes);
310 ad.setCurrentOut(outputNode); 343 ad.setCurrentOut(outputNode);
311 ad.setCurrentUI(uiNode); 344 ad.setCurrentUI(uiNode);
312 ad.setCurrentState(currentState); 345 ad.setCurrentState(currentState);
313 ad.setReachableStates(reachableStates); 346 ad.setReachableStates(reachableStates);
314 return ad; 347 return ad;

http://dive4elements.wald.intevation.org