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