annotate gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java @ 36:ad381cc47217

Format Code to max 80 Chars per Row gnv/trunk@172 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Fri, 02 Oct 2009 08:54:13 +0000
parents 4405f31bbc30
children fccf90761825
rev   line source
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
1 /**
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
2 *
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
3 */
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
4 package de.intevation.gnv.artifactdatabase.client;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
5
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
6 import java.io.IOException;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
7 import java.io.InputStream;
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
8 import java.io.OutputStream;
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
9 import java.util.ArrayList;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
10 import java.util.Collection;
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
11 import java.util.HashMap;
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
12 import java.util.Iterator;
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
13 import java.util.Map;
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
14
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
15 import org.apache.log4j.Logger;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
16 import org.restlet.Client;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
17 import org.restlet.data.Method;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
18 import org.restlet.data.Protocol;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
19 import org.restlet.data.Request;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
20 import org.restlet.data.Response;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
21 import org.restlet.representation.Representation;
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
22 import org.restlet.representation.StringRepresentation;
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
23 import org.w3c.dom.Document;
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
24 import org.w3c.dom.Element;
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
25 import org.w3c.dom.Node;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
26 import org.w3c.dom.NodeList;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
27
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
28 import de.intevation.gnv.artifactdatabase.client.exception.ArtifactDatabaseClientException;
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
29 import de.intevation.gnv.artifactdatabase.objects.Artifact;
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
30 import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription;
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
31 import de.intevation.gnv.artifactdatabase.objects.ArtifactFactory;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
32 import de.intevation.gnv.artifactdatabase.objects.ArtifactObject;
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
33 import de.intevation.gnv.artifactdatabase.objects.ArtifactStatisticValue;
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
34 import de.intevation.gnv.artifactdatabase.objects.DefaultArtifactStatisticValue;
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
35 import de.intevation.gnv.artifactdatabase.objects.DefaultOutputMode;
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
36 import de.intevation.gnv.artifactdatabase.objects.DefaultOutputParameter;
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
37 import de.intevation.gnv.artifactdatabase.objects.InputParameter;
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
38 import de.intevation.gnv.artifactdatabase.objects.OutputMode;
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
39 import de.intevation.gnv.artifactdatabase.objects.OutputParameter;
23
b11f941f7eb2 Made ArtifactDatabase URL configurable
Tim Englich <tim.englich@intevation.de>
parents: 19
diff changeset
40 import de.intevation.gnv.propertiesreader.PropertiesReader;
b11f941f7eb2 Made ArtifactDatabase URL configurable
Tim Englich <tim.englich@intevation.de>
parents: 19
diff changeset
41 import de.intevation.gnv.propertiesreader.PropertiesReaderFactory;
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
42 import de.intevation.gnv.util.XMLUtils;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
43
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
44 /**
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
45 * @author Tim Englich <tim.englich@intevation.de>
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
46 *
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
47 */
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
48 public class DefaultArtifactDatabaseClient implements ArtifactDatabaseClient {
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
49 /**
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
50 * The URI of the namespace of the artifacts.
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
51 */
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
52 public final static String NAMESPACE_URI = "http://www.intevation.de/2009/artifacts";
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
53
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
54 /**
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
55 * The XML prefix for the artifacts namespace.
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
56 */
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
57 public final static String NAMESPACE_PREFIX = "art";
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
58
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
59 /**
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
60 * the logger, used to log exceptions and additonaly information
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
61 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
62 private static Logger log = Logger
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
63 .getLogger(DefaultArtifactDatabaseClient.class);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
64
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
65 /**
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
66 * The Databases which could be used
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
67 */
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
68 private static Collection<String> artifactDatabases = null;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
69
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
70 /**
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
71 * Is the Class initialized?
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
72 */
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
73 private static boolean initialized = false;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
74
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
75 /**
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
76 * Constructor
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
77 */
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
78 public DefaultArtifactDatabaseClient() {
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
79 super();
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
80 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
81
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
82 /**
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
83 * @see de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient#getArtifactFactories()
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
84 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
85 public Collection<ArtifactObject> getArtifactFactories()
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
86 throws ArtifactDatabaseClientException {
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
87 Collection<ArtifactObject> resultValues = null;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
88 if (!initialized) {
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
89 this.initialize();
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
90 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
91 try {
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
92 log.debug("DefaultArtifactDatabaseClient.getArtifactFactories");
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
93 Iterator<String> it = artifactDatabases.iterator();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
94 while (it.hasNext()) {
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
95 String server = it.next();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
96 String url = server + "/factories";
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
97 Document document = this.doGetRequest(url);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
98 if (resultValues == null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
99 resultValues = this.getArtifactFactories(document, server);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
100 } else {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
101 resultValues.addAll(this.getArtifactFactories(document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
102 server));
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
103 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
104 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
105 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
106 log.error(e, e);
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
107 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
108 return resultValues;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
109 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
110
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
111 private Collection<ArtifactObject> getArtifactFactories(Document document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
112 String server) {
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
113 XMLUtils xmlUtils = new XMLUtils();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
114 NodeList artifactFactories = xmlUtils.getNodeSetXPath(document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
115 "/result/factories/factory");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
116 Collection<ArtifactObject> resultValues = new ArrayList<ArtifactObject>(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
117 artifactFactories.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
118 if (artifactFactories != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
119 for (int i = 0; i < artifactFactories.getLength(); i++) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
120 Node artifactFactoryNode = artifactFactories.item(i);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
121 String name = xmlUtils.getStringXPath(artifactFactoryNode,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
122 "@name");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
123 String description = xmlUtils.getStringXPath(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
124 artifactFactoryNode, "@description");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
125 ArtifactFactory artifactFactory = new ArtifactFactory(name,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
126 description, server);
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
127 resultValues.add(artifactFactory);
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
128 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
129 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
130 return resultValues;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
131 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
132
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
133 /**
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
134 * @throws IOException
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
135 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
136 private Document doGetRequest(String requestUrl) throws IOException,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
137 ArtifactDatabaseClientException {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
138 return this.doGetRequest(requestUrl, null);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
139 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
140
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
141 /**
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
142 * @throws IOException
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
143 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
144 private Document doGetRequest(String requestUrl, Document requestBody)
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
145 throws IOException, ArtifactDatabaseClientException {
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
146 XMLUtils xmlUtils = new XMLUtils();
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
147 Representation output = doGetRequestInternal(requestUrl, requestBody);
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
148 Document document = xmlUtils.readDocument(output.getStream());
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
149 this.check4ExceptionReport(document);
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
150 return document;
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
151 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
152
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
153 /**
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
154 * @param requestUrl
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
155 * @param requestBody
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
156 * @return
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
157 */
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
158 private Representation doGetRequestInternal(String requestUrl,
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
159 Document requestBody) {
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
160 Client client = new Client(Protocol.HTTP);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
161 Request request = new Request(Method.GET, requestUrl);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
162 if (requestBody != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
163 String documentBody = new XMLUtils()
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
164 .writeDocument2String(requestBody);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
165 Representation representation = new StringRepresentation(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
166 documentBody);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
167 request.setEntity(representation);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
168 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
169 Response response = client.handle(request);
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
170 // TODO RESPONSESTATUS AUSWERTEN.
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
171 Representation output = response.getEntity();
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
172 return output;
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
173 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
174
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
175 /**
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
176 * @throws IOException
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
177 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
178 private InputStream doPostRequest(String requestUrl, Document requestBody)
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
179 throws IOException {
34
25fdec8b4c69 Added Global Errorhandling to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 32
diff changeset
180 log.debug("##################################################");
25fdec8b4c69 Added Global Errorhandling to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 32
diff changeset
181 log.debug(new XMLUtils().writeDocument2String(requestBody));
25fdec8b4c69 Added Global Errorhandling to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 32
diff changeset
182 log.debug("##################################################");
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
183 Client client = new Client(Protocol.HTTP);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
184 Request request = new Request(Method.POST, requestUrl);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
185 String documentBody = new XMLUtils().writeDocument2String(requestBody);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
186 Representation representation = new StringRepresentation(documentBody);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
187 request.setEntity(representation);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
188 Response response = client.handle(request);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
189 // TODO RESPONSESTATUS AUSWERTEN.
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
190 Representation output = response.getEntity();
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
191 return output.getStream();
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
192 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
193
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
194 private synchronized void initialize() {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
195 if (!initialized) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
196 PropertiesReader pr = PropertiesReaderFactory.getInstance()
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
197 .getPropertiesReader();
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
198 int count = Integer.parseInt(pr.getPropertieValue(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
199 ARTIFACTDATABASE_COUNT_ID, "0"));
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
200 artifactDatabases = new ArrayList<String>(count);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
201 for (int i = 0; i < count; i++) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
202 artifactDatabases.add(pr.getPropertieValue(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
203 ARTIFACTDATABASE_URL_ID + "." + (i + 1), "N/N"));
23
b11f941f7eb2 Made ArtifactDatabase URL configurable
Tim Englich <tim.englich@intevation.de>
parents: 19
diff changeset
204 }
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
205 initialized = true;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
206 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
207
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
208 }
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
209
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
210 /**
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
211 * @see de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient#createNewArtifact(de.intevation.gnv.artifactdatabase.objects.ArtifactObject)
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
212 */
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
213 public ArtifactObject createNewArtifact(ArtifactObject artifactFactory)
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
214 throws ArtifactDatabaseClientException {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
215
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
216 try {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
217 Document request = this.createCreateRequestBody(artifactFactory
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
218 .getId());
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
219 Document result = doPostRequest(artifactFactory, request, "create");
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
220 return this.getArtifact(result);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
221 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
222 log.error(e, e);
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
223 throw new ArtifactDatabaseClientException(e);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
224 }
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
225 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
226
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
227 private ArtifactObject getArtifact(Document document) {
35
4405f31bbc30 CodeCleanUP
Tim Englich <tim.englich@intevation.de>
parents: 34
diff changeset
228 XMLUtils xmlUtils = new XMLUtils();
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
229 String uuid = xmlUtils.getStringXPath(document, "/result/uuid/@value");
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
230 String hash = xmlUtils.getStringXPath(document, "/result/hash/@value");
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
231 log.info("NEW Artifact: " + uuid + " / " + hash);
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
232 return new Artifact(uuid, hash);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
233 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
234
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
235 private Document createCreateRequestBody(String artifactFactoryName) {
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
236 Document document = new XMLUtils().newDocument();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
237 Node rootNode = this.createRootNode(document);
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
238 Element typeNode = this.createArtifactElement(document, "type");
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
239 typeNode.setAttribute("name", "create");
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
240 rootNode.appendChild(typeNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
241
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
242 Element factoyNode = this.createArtifactElement(document, "factory");
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
243 factoyNode.setAttribute("name", artifactFactoryName);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
244 rootNode.appendChild(factoyNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
245
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
246 return document;
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
247 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
248
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
249 private Element createRootNode(Document document) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
250 Element rootNode = this.createArtifactElement(document, "action");
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
251 document.appendChild(rootNode);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
252 return rootNode;
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
253 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
254
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
255 /**
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
256 * @param document
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
257 * @return
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
258 */
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
259 private Element createArtifactElement(Document document, String name) {
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
260 Element node = document.createElementNS(NAMESPACE_URI, name);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
261 node.setPrefix(NAMESPACE_PREFIX);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
262 return node;
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
263 }
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
264
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
265 /**
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
266 * @param artifactFactory
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
267 * @param xmlUtils
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
268 * @param request
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
269 * @throws IOException
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
270 */
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
271 private Document doPostRequest(ArtifactObject artifactFactory,
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
272 Document request, String suburl) throws IOException,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
273 ArtifactDatabaseClientException {
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
274 XMLUtils xmlUtils = new XMLUtils();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
275 String url = ((ArtifactFactory) artifactFactory).getDataBaseUrl();
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
276 InputStream is = this.doPostRequest(url + "/" + suburl, request);
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
277 Document result = xmlUtils.readDocument(is);
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
278 this.check4ExceptionReport(result);
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
279 return result;
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
280 }
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
281
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
282 /**
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
283 * @see de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient#getCurrentStepDescription(de.intevation.gnv.artifactdatabase.objects.ArtifactFactory,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
284 * de.intevation.gnv.artifactdatabase.objects.ArtifactObject)
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
285 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
286 public ArtifactDescription getCurrentStepDescription(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
287 ArtifactObject artifactFactory, ArtifactObject currentArtifact)
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
288 throws ArtifactDatabaseClientException {
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
289 try {
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
290 String url = this.getArtifactUrl(artifactFactory, currentArtifact);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
291 Document result = this.doGetRequest(url);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
292 return this.readDescription(result, currentArtifact);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
293 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
294 log.error(e, e);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
295 throw new ArtifactDatabaseClientException(e);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
296 }
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
297 }
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
298
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
299 /**
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
300 * @param artifactFactory
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
301 * @param currentArtifact
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
302 * @return
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
303 */
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
304 private String getArtifactUrl(ArtifactObject artifactFactory,
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
305 ArtifactObject currentArtifact) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
306 String url = ((ArtifactFactory) artifactFactory).getDataBaseUrl()
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
307 + "/artifact/" + currentArtifact.getId();
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
308 return url;
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
309 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
310
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
311 private ArtifactDescription readDescription(Document document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
312 ArtifactObject artifact) throws ArtifactDatabaseClientException {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
313 // Check if there was an Error or Exception reported from the
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
314 // ArtifactDatabase
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
315 this.check4ExceptionReport(document);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
316 XMLUtils xmlUtils = new XMLUtils();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
317 if (artifact instanceof ArtifactDescription) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
318 ArtifactDescription ad = (ArtifactDescription) artifact;
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
319 Node uiNode = xmlUtils.getNodeXPath(document, "/result/ui");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
320 Node outputNode = xmlUtils
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
321 .getNodeXPath(document, "/result/outputs");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
322
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
323 Map<String, OutputMode> outputModes = null;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
324 if (outputNode != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
325 NodeList outputModesNodes = xmlUtils.getNodeSetXPath(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
326 outputNode, "output");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
327 if (outputModesNodes != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
328 outputModes = new HashMap<String, OutputMode>(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
329 outputModesNodes.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
330 for (int i = 0; i < outputModesNodes.getLength(); i++) {
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
331 Node outputModeNode = outputModesNodes.item(i);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
332 String name = xmlUtils.getStringXPath(outputModeNode,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
333 "@name");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
334 String mimeType = xmlUtils.getStringXPath(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
335 outputModeNode, "@mime-type");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
336
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
337 NodeList parameterNodes = xmlUtils.getNodeSetXPath(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
338 outputModeNode, "parameter/parameter");
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
339 Collection<OutputParameter> parameter = null;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
340 if (parameterNodes != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
341 parameter = new ArrayList<OutputParameter>(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
342 parameterNodes.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
343 for (int j = 0; j < parameterNodes.getLength(); j++) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
344 Node outputParameterNode = parameterNodes
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
345 .item(j);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
346 parameter.add(new DefaultOutputParameter(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
347 xmlUtils.getStringXPath(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
348 outputParameterNode, "@name"),
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
349 xmlUtils.getStringXPath(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
350 outputParameterNode, "@value"),
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
351 xmlUtils.getStringXPath(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
352 outputParameterNode, "@name"),
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
353 xmlUtils.getStringXPath(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
354 outputParameterNode, "@type")));
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
355 }
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
356 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
357 outputModes.put(name, new DefaultOutputMode(name,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
358 mimeType, parameter));
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
359 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
360
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
361 }
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
362 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
363
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
364 String currentState = xmlUtils.getStringXPath(document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
365 "/result/state/@name");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
366 NodeList statesList = xmlUtils.getNodeSetXPath(document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
367 "/result/reachable-states/state/@name");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
368 Collection<String> reachableStates = new ArrayList<String>(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
369 statesList.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
370 for (int i = 0; i < statesList.getLength(); i++) {
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
371 reachableStates.add(statesList.item(i).getNodeValue());
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
372 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
373
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
374 NodeList inputNodes = xmlUtils.getNodeSetXPath(document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
375 "/result/model/input");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
376 if (inputNodes != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
377 Collection<String> inputParameter = new ArrayList<String>(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
378 inputNodes.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
379 for (int i = 0; i < inputNodes.getLength(); i++) {
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
380 Node inputNode = inputNodes.item(i);
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
381 String name = xmlUtils.getStringXPath(inputNode, "@name");
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
382 inputParameter.add(name);
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
383 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
384 ad.setInputParameter(inputParameter);
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
385 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
386
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
387 ad.setOutputModes(outputModes);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
388 ad.setCurrentOut(outputNode);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
389 ad.setCurrentUI(uiNode);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
390 ad.setCurrentState(currentState);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
391 ad.setReachableStates(reachableStates);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
392 return ad;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
393 } else {
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
394 log.error("Artifact must be Instance of ArtifactDescription");
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
395 throw new ArtifactDatabaseClientException(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
396 "Artifact must be Instance of ArtifactDescription");
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
397 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
398
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
399 }
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
400
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
401 /**
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
402 * @see de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient#doNextStep(de.intevation.gnv.artifactdatabase.objects.ArtifactObject,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
403 * de.intevation.gnv.artifactdatabase.objects.ArtifactObject,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
404 * java.lang.String, java.util.Collection)
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
405 */
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
406 public ArtifactDescription doNextStep(ArtifactObject artifactFactory,
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
407 ArtifactObject currentArtifact, String target,
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
408 Collection<InputParameter> inputParameter)
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
409 throws ArtifactDatabaseClientException {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
410
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
411 try {
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
412 // 1 Feed
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
413 this.doFeed(artifactFactory, currentArtifact, inputParameter);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
414 // 2 Advance
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
415 String url = this.getArtifactUrl(artifactFactory, currentArtifact);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
416 Document advanceDocument = this.createAdvanceRequestBody(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
417 currentArtifact, target);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
418 InputStream advanceResult = this
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
419 .doPostRequest(url, advanceDocument);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
420 this.check4ExceptionReport(new XMLUtils()
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
421 .readDocument(advanceResult));
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
422 // 3 Describe
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
423 return this.getCurrentStepDescription(artifactFactory,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
424 currentArtifact);
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
425 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
426 log.error(e, e);
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
427 throw new ArtifactDatabaseClientException(e);
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
428 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
429 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
430
35
4405f31bbc30 CodeCleanUP
Tim Englich <tim.englich@intevation.de>
parents: 34
diff changeset
431 private Document createFeedRequestBody(ArtifactObject currentArtifact,
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
432 Collection<InputParameter> inputParameter) {
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
433 Document document = new XMLUtils().newDocument();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
434 Node rootNode = this.createRootNode(document);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
435
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
436 Element typeNode = this.createArtifactElement(document, "type");
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
437 typeNode.setAttribute("name", "feed");
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
438 rootNode.appendChild(typeNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
439
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
440 Element uuidNode = this.createArtifactElement(document, "uuid");
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
441 uuidNode.setAttribute("value", currentArtifact.getId());
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
442 rootNode.appendChild(uuidNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
443
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
444 Element hashNode = this.createArtifactElement(document, "hash");
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
445 hashNode.setAttribute("value", currentArtifact.getHash());
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
446 rootNode.appendChild(hashNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
447
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
448 Node dataNode = this.createParameterNodes(inputParameter, document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
449 "data");
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
450 rootNode.appendChild(dataNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
451
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
452 return document;
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
453 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
454
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
455 /**
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
456 * @param inputParameter
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
457 * @param document
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
458 * @param rootNode
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
459 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
460 private Node createParameterNodes(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
461 Collection<InputParameter> inputParameter, Document document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
462 String nodeName) {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
463 Element dataNode = this.createArtifactElement(document, nodeName);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
464
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
465 if (inputParameter != null) {
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
466 Iterator<InputParameter> it = inputParameter.iterator();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
467 while (it.hasNext()) {
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
468 InputParameter ip = it.next();
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
469 String name = ip.getName();
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
470 String[] values = ip.getValues();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
471 if (values != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
472 for (int i = 0; i < values.length; i++) {
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
473 String value = values[i];
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
474 Element inputNode = this.createArtifactElement(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
475 document, "input");
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
476 inputNode.setAttribute("name", name);
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
477 inputNode.setAttribute("value", value);
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
478 dataNode.appendChild(inputNode);
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
479 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
480 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
481 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
482 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
483 return dataNode;
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
484 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
485
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
486 private Document createAdvanceRequestBody(ArtifactObject currentArtifact,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
487 String target) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
488 Document document = new XMLUtils().newDocument();
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
489 Node rootNode = this.createRootNode(document);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
490
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
491 Element typeNode = this.createArtifactElement(document, "type");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
492 typeNode.setAttribute("name", "advance");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
493 rootNode.appendChild(typeNode);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
494
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
495 Element uuidNode = this.createArtifactElement(document, "uuid");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
496 uuidNode.setAttribute("value", currentArtifact.getId());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
497 rootNode.appendChild(uuidNode);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
498
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
499 Element hashNode = this.createArtifactElement(document, "hash");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
500 hashNode.setAttribute("value", currentArtifact.getHash());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
501 rootNode.appendChild(hashNode);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
502 Element targetNode = this.createArtifactElement(document, "target");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
503 targetNode.setAttribute("name", target);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
504 rootNode.appendChild(targetNode);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
505 return document;
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
506 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
507
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
508 /**
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
509 * @see de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient#doOutput(de.intevation.gnv.artifactdatabase.objects.ArtifactObject,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
510 * de.intevation.gnv.artifactdatabase.objects.ArtifactObject,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
511 * java.io.OutputStream, java.lang.String, java.lang.String,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
512 * java.util.Collection)
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
513 */
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
514 public void doOutput(ArtifactObject artifactFactory,
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
515 ArtifactObject currentArtifact, OutputStream stream,
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
516 String targetName, String mimeType,
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
517 Collection<InputParameter> inputParameter)
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
518 throws ArtifactDatabaseClientException {
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
519 try {
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
520 XMLUtils xmlUtils = new XMLUtils();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
521 Document requestBody = this.createOutRequestBody(currentArtifact,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
522 targetName, mimeType, inputParameter);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
523
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
524 String requestUrl = this.getArtifactUrl(artifactFactory,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
525 currentArtifact)
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
526 + "/" + targetName;
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
527 InputStream is = this.doPostRequest(requestUrl, requestBody);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
528
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
529 byte[] b = new byte[4096];
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
530 int i = -1;
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
531 while ((i = is.read(b)) > 0) {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
532 stream.write(b, 0, i);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
533 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
534 } catch (IOException e) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
535 log.error(e, e);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
536 throw new ArtifactDatabaseClientException(e);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
537 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
538 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
539
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
540 private Document createOutRequestBody(ArtifactObject currentArtifact,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
541 String target, String mimeType,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
542 Collection<InputParameter> inputParameter) {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
543 Document document = new XMLUtils().newDocument();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
544 Node rootNode = this.createRootNode(document);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
545
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
546 Element typeNode = this.createArtifactElement(document, "type");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
547 typeNode.setAttribute("name", "out");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
548 rootNode.appendChild(typeNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
549
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
550 Element uuidNode = this.createArtifactElement(document, "uuid");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
551 uuidNode.setAttribute("value", currentArtifact.getId());
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
552 rootNode.appendChild(uuidNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
553
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
554 Element hashNode = this.createArtifactElement(document, "hash");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
555 hashNode.setAttribute("value", currentArtifact.getHash());
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
556 rootNode.appendChild(hashNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
557
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
558 Element outNode = this.createArtifactElement(document, "out");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
559 outNode.setAttribute("name", target);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
560 rootNode.appendChild(outNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
561
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
562 Element mimeTypeNode = this.createArtifactElement(document, "out");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
563 mimeTypeNode.setAttribute("value", mimeType);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
564 outNode.appendChild(mimeTypeNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
565
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
566 Node parameterNode = this.createParameterNodes(inputParameter,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
567 document, "params");
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
568 outNode.appendChild(parameterNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
569
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
570 return document;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
571 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
572
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
573 /**
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
574 * @see de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient#doFeed(de.intevation.gnv.artifactdatabase.objects.ArtifactObject,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
575 * de.intevation.gnv.artifactdatabase.objects.ArtifactObject,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
576 * java.util.Collection)
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
577 */
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
578 public void doFeed(ArtifactObject artifactFactory,
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
579 ArtifactObject currentArtifact,
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
580 Collection<InputParameter> inputParameter)
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
581 throws ArtifactDatabaseClientException {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
582
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
583 try {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
584 Document feedDocument = this.createFeedRequestBody(currentArtifact,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
585 inputParameter);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
586 String url = this.getArtifactUrl(artifactFactory, currentArtifact);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
587 InputStream feedResult = this.doPostRequest(url, feedDocument);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
588 Document feedResultDocument = new XMLUtils()
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
589 .readDocument(feedResult);
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
590 this.check4ExceptionReport(feedResultDocument);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
591 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
592 log.error(e, e);
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
593 throw new ArtifactDatabaseClientException(e);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
594 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
595 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
596
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
597 private void check4ExceptionReport(Document document)
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
598 throws ArtifactDatabaseClientException {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
599
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
600 String message = new XMLUtils().getStringXPath(document,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
601 "/exceptionreport/exception");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
602 if (message != null) {
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
603 throw new ArtifactDatabaseClientException(message);
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
604 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
605
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
606 }
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
607
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
608 public Collection<ArtifactStatisticValue> calculateStatistics(
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
609 ArtifactObject artifactFactory, ArtifactObject currentArtifact)
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
610 throws ArtifactDatabaseClientException {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
611 log.debug("DefaultArtifactDatabaseClient.calculateStatistics");
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
612 Collection<ArtifactStatisticValue> result;
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
613 try {
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
614 result = null;
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
615 String targetName = "statistics";
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
616 String requestUrl = this.getArtifactUrl(artifactFactory,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
617 currentArtifact)
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
618 + "/" + targetName;
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
619 Document requestBody = this.createOutRequestBody(currentArtifact,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
620 targetName, "text/xml", null);
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
621 XMLUtils xmlUtils = new XMLUtils();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
622 InputStream is = this.doPostRequest(requestUrl, requestBody);
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
623 Document resultDocument = xmlUtils.readDocument(is);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
624 if (resultDocument != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
625 NodeList resultNodes = xmlUtils.getNodeSetXPath(resultDocument,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
626 "/statistic-values/statistic");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
627 if (resultNodes != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
628 result = new ArrayList<ArtifactStatisticValue>(resultNodes
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
629 .getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
630 for (int i = 0; i < resultNodes.getLength(); i++) {
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
631 Node statisticNode = resultNodes.item(i);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
632 String name = xmlUtils.getStringXPath(statisticNode,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
633 "@name");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
634 String value = xmlUtils.getStringXPath(statisticNode,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
635 "@value");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
636 result.add(new DefaultArtifactStatisticValue(name,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
637 value));
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
638 }
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
639 }
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
640 }
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
641 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
642 log.error(e, e);
35
4405f31bbc30 CodeCleanUP
Tim Englich <tim.englich@intevation.de>
parents: 34
diff changeset
643 throw new ArtifactDatabaseClientException(e);
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
644 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
645
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
646 return result;
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
647 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
648 }

http://dive4elements.wald.intevation.org