annotate gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java @ 1005:397b4cb8589b

Prevent NPE if the Mapviewer has delivered no Geometry. gnv/trunk@1215 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 15 Jun 2010 07:49:06 +0000
parents 21ad44ccdb84
children 28a0628b11b0
rev   line source
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
1 package de.intevation.gnv.artifactdatabase.client;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
2
1005
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
3 import java.io.IOException;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
4 import java.io.InputStream;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
5 import java.io.InputStreamReader;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
6 import java.io.OutputStream;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
7 import java.io.OutputStreamWriter;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
8 import java.util.ArrayList;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
9 import java.util.Collection;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
10 import java.util.HashMap;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
11 import java.util.Iterator;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
12 import java.util.List;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
13 import java.util.Locale;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
14 import java.util.Map;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
15
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
16 import org.apache.log4j.Logger;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
17 import org.restlet.Client;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
18 import org.restlet.data.ClientInfo;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
19 import org.restlet.data.Language;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
20 import org.restlet.data.Method;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
21 import org.restlet.data.Preference;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
22 import org.restlet.data.Protocol;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
23 import org.restlet.data.Request;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
24 import org.restlet.data.Response;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
25 import org.restlet.representation.Representation;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
26 import org.restlet.representation.StringRepresentation;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
27 import org.w3c.dom.Document;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
28 import org.w3c.dom.Element;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
29 import org.w3c.dom.Node;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
30 import org.w3c.dom.NodeList;
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
31
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
32 import de.intevation.gnv.artifactdatabase.client.exception.ArtifactDatabaseClientException;
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
33 import de.intevation.gnv.artifactdatabase.client.exception.ArtifactDatabaseInputException;
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
34 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
35 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
36 import de.intevation.gnv.artifactdatabase.objects.ArtifactFactory;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
37 import de.intevation.gnv.artifactdatabase.objects.ArtifactObject;
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
38 import de.intevation.gnv.artifactdatabase.objects.ArtifactStatisticsSet;
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
39 import de.intevation.gnv.artifactdatabase.objects.DefaultArtifactStatisticValue;
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
40 import de.intevation.gnv.artifactdatabase.objects.DefaultArtifactStatisticsSet;
573
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
41 import de.intevation.gnv.artifactdatabase.objects.DefaultExportMode;
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
42 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
43 import de.intevation.gnv.artifactdatabase.objects.DefaultOutputParameter;
573
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
44 import de.intevation.gnv.artifactdatabase.objects.ExportMode;
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
45 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
46 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
47 import de.intevation.gnv.artifactdatabase.objects.OutputParameter;
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
48 import de.intevation.gnv.artifactdatabase.objects.ParametrizedArtifactFactory;
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
49 import de.intevation.gnv.artifactdatabase.objects.ParametrizedArtifactObject;
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
50 import de.intevation.gnv.artifactdatabase.objects.map.Layer;
402
b88e881e8e94 Added the first Implementation (not complete and not ready to use) for the Interface from the MapViewer to the GNV
Tim Englich <tim.englich@intevation.de>
parents: 394
diff changeset
51 import de.intevation.gnv.artifactdatabase.objects.map.MapService;
23
b11f941f7eb2 Made ArtifactDatabase URL configurable
Tim Englich <tim.englich@intevation.de>
parents: 19
diff changeset
52 import de.intevation.gnv.propertiesreader.PropertiesReader;
b11f941f7eb2 Made ArtifactDatabase URL configurable
Tim Englich <tim.englich@intevation.de>
parents: 19
diff changeset
53 import de.intevation.gnv.propertiesreader.PropertiesReaderFactory;
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
54 import de.intevation.gnv.util.XMLUtils;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
55
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
56 /**
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
57 * The default implementation of <code>ArtifactDatabaseClient</code> which
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
58 * implements methods to communicate via HTTP protocol with the artifact server.
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
59 *
684
57fa8019fbdc Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 683
diff changeset
60 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a>
57fa8019fbdc Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 683
diff changeset
61 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
62 */
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
63 public class DefaultArtifactDatabaseClient implements ArtifactDatabaseClient {
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
64 /**
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
65 * 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
66 */
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
67 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
68
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
69 /**
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
70 * The XML prefix for the artifacts namespace.
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
71 */
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
72 public final static String NAMESPACE_PREFIX = "art";
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
73
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
74 /**
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
75 * Xpath expression to get general exception messages related to server
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
76 * errors.
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
77 */
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
78 public static final String EXCEPTION_GENERAL =
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
79 "/art:exceptionreport/art:exception/text()";
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
80
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
81 /**
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
82 * Xpath expression to get exception messages related to invalid user input.
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
83 */
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
84 public static final String EXCEPTION_USER_INPUT =
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
85 "/art:exceptionreport/art:exception/art:input/text()";
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
86
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
87 /**
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
88 * 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
89 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
90 private static Logger log = Logger
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
91 .getLogger(DefaultArtifactDatabaseClient.class);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
92
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
93 /**
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
94 * The Databases which could be used
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
95 */
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
96 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
97
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
98 /**
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
99 * Is the Class initialized?
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
100 */
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
101 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
102
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
103 /**
40
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
104 * Request locale
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
105 */
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
106 private Locale locale;
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
107
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
108
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
109 /**
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
110 * Constructor
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
111 */
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
112 public DefaultArtifactDatabaseClient() {
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
113
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
114 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
115
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
116 public Collection<ArtifactObject> getArtifactFactories()
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
117 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
118 Collection<ArtifactObject> resultValues = null;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
119 if (!initialized) {
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
120 this.initialize();
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
121 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
122 try {
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
123 log.debug("DefaultArtifactDatabaseClient.getArtifactFactories");
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
124 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
125 while (it.hasNext()) {
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
126 String server = it.next();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
127 String url = server + "/factories";
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
128 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
129 if (resultValues == null) {
565
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
130 resultValues = this.getArtifactFactories(document, server,null);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
131 } else {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
132 resultValues.addAll(this.getArtifactFactories(document,
565
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
133 server,null));
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
134 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
135 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
136 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
137 log.error(e, e);
47
f35b7d7a04d6 Read the Status-Code from the Response and throw an Exception which Message will be visualized in the GUI. gnv/issue18
Tim Englich <tim.englich@intevation.de>
parents: 40
diff changeset
138 throw new ArtifactDatabaseClientException(e);
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
139 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
140 return resultValues;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
141 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
142
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
143
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
144 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
145 * Returns a collection of artifact factories retrieved by <i>server</i>.
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
146 *
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
147 * @param document
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
148 * @param server
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
149 * @param geometry
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
150 * @return a collection of factories.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
151 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
152 private Collection<ArtifactObject> getArtifactFactories(Document document,
565
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
153 String server,
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
154 String geometry) {
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
155 NodeList artifactFactories = XMLUtils.getNodeSetXPath(document,
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
156 "/art:result/art:factories/art:factory");
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
157 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
158 artifactFactories.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
159 if (artifactFactories != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
160 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
161 Node artifactFactoryNode = artifactFactories.item(i);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
162 String name = XMLUtils.getStringXPath(artifactFactoryNode,
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
163 "@art:name");
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
164 String description = XMLUtils.getStringXPath(
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
165 artifactFactoryNode, "@art:description");
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
166
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
167 NodeList parameterNodeList = XMLUtils.getNodeSetXPath(
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
168 artifactFactoryNode,
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
169 "art:parameter");
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
170
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
171 if ((parameterNodeList != null &&
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
172 parameterNodeList.getLength() > 0) ||
565
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
173 geometry != null){
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
174 Collection<String> parameters =
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
175 new ArrayList<String>(parameterNodeList.getLength());
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
176 for (int j = 0; j < parameterNodeList.getLength(); j++){
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
177 Element parameterNode = (Element)parameterNodeList.item(j);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
178 parameters.add(parameterNode.getAttribute("id"));
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
179 }
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
180 ParametrizedArtifactObject pao =
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
181 new ParametrizedArtifactFactory(name,
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
182 description,
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
183 server);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
184 pao.addParameters("parameter", parameters);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
185 resultValues.add(pao);
565
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
186 if (geometry != null){
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
187 Collection<String> geometryList = new ArrayList<String>(1);
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
188 geometryList.add(geometry);
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
189 pao.addParameters("geometry",geometryList);
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
190 }
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
191 }else{
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
192 ArtifactObject artifactFactory = new ArtifactFactory(name,
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
193 description,
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
194 server);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
195 resultValues.add(artifactFactory);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
196 }
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
197 }
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
198 }
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
199 log.debug("Artifact Factories: " + resultValues.size());
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
200 return resultValues;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
201 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
202
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
203
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
204 private Document doGetRequest(String requestUrl)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
205 throws IOException, ArtifactDatabaseClientException, ArtifactDatabaseInputException {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
206 return this.doGetRequest(requestUrl, null);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
207 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
208
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
209
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
210 private Document doGetRequest(String requestUrl, Document requestBody)
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
211 throws IOException, ArtifactDatabaseClientException, ArtifactDatabaseInputException {
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
212 XMLUtils xmlUtils = new XMLUtils();
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
213 Representation output = doGetRequestInternal(requestUrl, requestBody);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
214 Document document = XMLUtils.readDocument(output.getStream());
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
215 this.check4ExceptionReport(document);
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
216 return document;
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
217 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
218
40
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
219 protected Request initialize(Request request) {
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
220 return initialize(request, locale);
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
221 }
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
222
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
223 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
224 * Initialize the <code>ClientInfo</code> object of <i>request</i> with the
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
225 * given <i>locale</i>.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
226 *
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
227 * @param request The request object.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
228 * @param locale The locale.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
229 * @return the prepared request object.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
230 */
40
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
231 protected Request initialize(Request request, Locale locale) {
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
232 if (locale != null) {
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
233 ClientInfo clientInfo = request.getClientInfo();
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
234 String lang = locale.getLanguage();
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
235 Language language = new Language(lang);
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
236 List<Preference<Language>> acceptedLanguages =
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
237 new ArrayList<Preference<Language>>(2);
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
238 acceptedLanguages.add(new Preference(language, 1.0f));
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
239 acceptedLanguages.add(new Preference(Language.ALL, 0.5f));
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
240 clientInfo.setAcceptedLanguages(acceptedLanguages);
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
241 }
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
242 return request;
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
243 }
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
244
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
245
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
246 private Representation doGetRequestInternal(String requestUrl,
47
f35b7d7a04d6 Read the Status-Code from the Response and throw an Exception which Message will be visualized in the GUI. gnv/issue18
Tim Englich <tim.englich@intevation.de>
parents: 40
diff changeset
247 Document requestBody) throws IOException {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
248 Client client = new Client(Protocol.HTTP);
40
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
249 Request request = initialize(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
250 if (requestBody != null) {
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
251 String documentBody = XMLUtils
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
252 .writeDocument2String(requestBody);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
253 Representation representation = new StringRepresentation(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
254 documentBody);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
255 request.setEntity(representation);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
256 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
257 Response response = client.handle(request);
47
f35b7d7a04d6 Read the Status-Code from the Response and throw an Exception which Message will be visualized in the GUI. gnv/issue18
Tim Englich <tim.englich@intevation.de>
parents: 40
diff changeset
258 if (response.getStatus().getCode() != 200){
f35b7d7a04d6 Read the Status-Code from the Response and throw an Exception which Message will be visualized in the GUI. gnv/issue18
Tim Englich <tim.englich@intevation.de>
parents: 40
diff changeset
259 throw new IOException(response.getStatus().getDescription());
f35b7d7a04d6 Read the Status-Code from the Response and throw an Exception which Message will be visualized in the GUI. gnv/issue18
Tim Englich <tim.englich@intevation.de>
parents: 40
diff changeset
260 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
261 Representation output = response.getEntity();
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
262 return output;
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
263 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
264
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
265
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
266 private InputStream doPostRequest(String requestUrl, Document requestBody)
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
267 throws IOException {
1005
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
268
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
269 log.debug("URL: "+ requestUrl);
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
270 log.debug("Body");
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
271 log.debug(XMLUtils.writeDocument2String(requestBody));
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
272
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
273 Client client = new Client(Protocol.HTTP);
40
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
274 Request request = initialize(new Request(Method.POST, requestUrl));
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
275 String documentBody = XMLUtils.writeDocument2String(requestBody);
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
276 Representation representation = new StringRepresentation(documentBody);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
277 request.setEntity(representation);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
278 Response response = client.handle(request);
47
f35b7d7a04d6 Read the Status-Code from the Response and throw an Exception which Message will be visualized in the GUI. gnv/issue18
Tim Englich <tim.englich@intevation.de>
parents: 40
diff changeset
279 if (response.getStatus().getCode() != 200){
f35b7d7a04d6 Read the Status-Code from the Response and throw an Exception which Message will be visualized in the GUI. gnv/issue18
Tim Englich <tim.englich@intevation.de>
parents: 40
diff changeset
280 throw new IOException(response.getStatus().getDescription());
f35b7d7a04d6 Read the Status-Code from the Response and throw an Exception which Message will be visualized in the GUI. gnv/issue18
Tim Englich <tim.englich@intevation.de>
parents: 40
diff changeset
281 }
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
282 Representation output = response.getEntity();
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
283 return output.getStream();
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
284 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
285
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
286 private synchronized void initialize() {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
287 if (!initialized) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
288 PropertiesReader pr = PropertiesReaderFactory.getInstance()
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
289 .getPropertiesReader();
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
290 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
291 ARTIFACTDATABASE_COUNT_ID, "0"));
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
292 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
293 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
294 artifactDatabases.add(pr.getPropertieValue(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
295 ARTIFACTDATABASE_URL_ID + "." + (i + 1), "N/N"));
23
b11f941f7eb2 Made ArtifactDatabase URL configurable
Tim Englich <tim.englich@intevation.de>
parents: 19
diff changeset
296 }
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
297 initialized = true;
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
298 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
299
2
5e94403971af infrastructur for Communicationg with the ArtifactDatabase added.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
300 }
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
301
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
302
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
303 /**
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
304 * Creates a new artifact with the given <i>artifactFactory</i>. A POST call
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
305 * is sent to the artifact server which creates a new artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
306 *
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
307 * @param artifactFactory The artifact factory used to create a new
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
308 * artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
309 * @return the created artifact of the artifact server.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
310 * @throws ArtifactDatabaseClientException
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
311 * @throws ArtifactDatabaseInputException
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
312 */
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
313 public ArtifactObject createNewArtifact(ArtifactObject artifactFactory)
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
314 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
315
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
316 try {
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
317 Document request = this.createCreateRequestBody(artifactFactory);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
318 Document result = doPostRequest(artifactFactory, request, "create");
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
319 return this.getArtifact(result);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
320 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
321 log.error(e, e);
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
322 throw new ArtifactDatabaseClientException(e);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
323 }
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
324 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
325
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
326 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
327 * Returns a new artifact defined by uuid and hash values of the document
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
328 * returned by the artifact server after creating a new artifact.
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
329 *
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
330 * @param document Contains information about the server-side created
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
331 * artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
332 * @return a new artifact object.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
333 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
334 private ArtifactObject getArtifact(Document document) {
35
4405f31bbc30 CodeCleanUP
Tim Englich <tim.englich@intevation.de>
parents: 34
diff changeset
335 XMLUtils xmlUtils = new XMLUtils();
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
336 String uuid = XMLUtils.getStringXPath(document, "/art:result/art:uuid/@value");
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
337 String hash = XMLUtils.getStringXPath(document, "/art:result/art:hash/@value");
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
338 log.info("NEW Artifact: " + uuid + " / " + hash);
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
339 return new Artifact(uuid, hash);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
340 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
341
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
342 private Document createCreateRequestBody(ArtifactObject artifactFactory) {
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
343 Document document = XMLUtils.newDocument();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
344 Node rootNode = this.createRootNode(document);
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
345 Element typeNode = this.createArtifactElement(document, "type");
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
346 typeNode.setAttribute("name", "create");
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
347 rootNode.appendChild(typeNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
348
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
349 Element factoryNode = this.createArtifactElement(document, "factory");
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
350 factoryNode.setAttribute("name", artifactFactory.getId());
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
351 rootNode.appendChild(factoryNode);
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
352
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
353 if (artifactFactory instanceof ParametrizedArtifactObject){
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
354 Map<String, Collection<String>> parameterMap =
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
355 ((ParametrizedArtifactObject)artifactFactory).getParameters();
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
356 if (parameterMap != null && !parameterMap.isEmpty() ){
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
357 Iterator<String> keyIt = parameterMap.keySet().iterator();
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
358 while (keyIt.hasNext()){
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
359 String key = keyIt.next();
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
360 Iterator<String> valueIt = parameterMap.get(key).iterator();
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
361 while (valueIt.hasNext()){
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
362 String value = valueIt.next();
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
363 Element parameterNode =
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
364 this.createArtifactElement(document, "parameter");
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
365 parameterNode.setAttribute("name", key);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
366 parameterNode.setAttribute("value", value);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
367 factoryNode.appendChild(parameterNode);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
368 }
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
369 }
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
370 }
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
371 }
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
372 return document;
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
373 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
374
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
375 private Element createRootNode(Document document) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
376 Element rootNode = this.createArtifactElement(document, "action");
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
377 document.appendChild(rootNode);
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
378 return rootNode;
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
379 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
380
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
381
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
382 private Element createArtifactElement(Document document, String name) {
391
ee8003fffc71 Use XMLUtils.ElementCreator to create new nodes in xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
383 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(
ee8003fffc71 Use XMLUtils.ElementCreator to create new nodes in xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
384 document,
ee8003fffc71 Use XMLUtils.ElementCreator to create new nodes in xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
385 NAMESPACE_URI,
ee8003fffc71 Use XMLUtils.ElementCreator to create new nodes in xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
386 NAMESPACE_PREFIX
ee8003fffc71 Use XMLUtils.ElementCreator to create new nodes in xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
387 );
ee8003fffc71 Use XMLUtils.ElementCreator to create new nodes in xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
388
ee8003fffc71 Use XMLUtils.ElementCreator to create new nodes in xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
389 return creator.create(name);
7
fe6a64545552 Support for creating an Artifact integrated
Tim Englich <tim.englich@intevation.de>
parents: 2
diff changeset
390 }
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
391
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
392
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
393 private Document doPostRequest(ArtifactObject artifactFactory,
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
394 Document request, String suburl)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
395 throws IOException, ArtifactDatabaseClientException, ArtifactDatabaseInputException {
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
396 XMLUtils xmlUtils = new XMLUtils();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
397 String url = ((ArtifactFactory) artifactFactory).getDataBaseUrl();
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
398 InputStream is = this.doPostRequest(url + "/" + suburl, request);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
399 Document result = XMLUtils.readDocument(is);
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
400 this.check4ExceptionReport(result);
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
401 return result;
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
402 }
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
403
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
404
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
405 /**
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
406 * Retrieve the current artifact description after calling the describe
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
407 * operation of the artifact server.
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
408 *
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
409 * @param artifactFactory
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
410 * @param currentArtifact
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
411 * @param includeUI Set this option to true, if the user interface
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
412 * description is required.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
413 * @return the artifact description.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
414 * @throws ArtifactDatabaseClientException
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
415 * @throws ArtifactDatabaseInputException
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
416 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
417 public ArtifactDescription getCurrentStepDescription(
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
418 ArtifactObject artifactFactory,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
419 ArtifactObject currentArtifact,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
420 boolean includeUI)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
421 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
422 try {
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
423 String url = this.getArtifactUrl(artifactFactory, currentArtifact);
157
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
424 Document request = this.createDescribeRequestBody(currentArtifact,
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
425 includeUI);
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
426 InputStream describeResult = this.doPostRequest(url, request);
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
427
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
428 return this.readDescription(XMLUtils.readDocument(describeResult),
157
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
429 currentArtifact);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
430 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
431 log.error(e, e);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
432 throw new ArtifactDatabaseClientException(e);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
433 }
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
434 }
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
435
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
436
157
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
437 private Document createDescribeRequestBody(ArtifactObject currentArtifact,
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
438 boolean includeUI){
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
439 Document document = XMLUtils.newDocument();
157
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
440 Node rootNode = this.createRootNode(document);
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
441
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
442 Element typeNode = this.createArtifactElement(document, "type");
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
443 typeNode.setAttribute("name", "describe");
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
444 rootNode.appendChild(typeNode);
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
445
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
446 Element uuidNode = this.createArtifactElement(document, "uuid");
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
447 uuidNode.setAttribute("value", currentArtifact.getId());
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
448 rootNode.appendChild(uuidNode);
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
449
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
450 Element hashNode = this.createArtifactElement(document, "hash");
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
451 hashNode.setAttribute("value", currentArtifact.getHash());
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
452 rootNode.appendChild(hashNode);
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
453 Element includeUINode = this.createArtifactElement(document, "include-ui");
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
454 includeUINode.appendChild(document.createTextNode(""+includeUI));
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
455 rootNode.appendChild(includeUINode);
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
456 return document;
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
457 }
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
458
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
459
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
460 private String getArtifactUrl(ArtifactObject artifactFactory,
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
461 ArtifactObject currentArtifact) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
462 String url = ((ArtifactFactory) artifactFactory).getDataBaseUrl()
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
463 + "/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
464 return url;
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
465 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
466
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
467 private ArtifactDescription readDescription(Document document,
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
468 ArtifactObject artifact)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
469 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
470 // 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
471 // ArtifactDatabase
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
472 this.check4ExceptionReport(document);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
473 if (artifact instanceof ArtifactDescription) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
474 ArtifactDescription ad = (ArtifactDescription) artifact;
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
475 Node uiNode = XMLUtils.getNodeXPath(document, "/art:result/art:ui");
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
476 Node outputNode = XMLUtils
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
477 .getNodeXPath(document, "/art:result/art:outputs");
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
478
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
479 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
480 if (outputNode != null) {
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
481 NodeList outputModesNodes = XMLUtils.getNodeSetXPath(
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
482 outputNode, "art:output");
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
483 if (outputModesNodes != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
484 outputModes = new HashMap<String, OutputMode>(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
485 outputModesNodes.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
486 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
487 Node outputModeNode = outputModesNodes.item(i);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
488 String name = XMLUtils.getStringXPath(outputModeNode,
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
489 "@name");
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
490 String mimeType = XMLUtils.getStringXPath(
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
491 outputModeNode, "@mime-type");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
492
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
493 NodeList parameterNodes = XMLUtils.getNodeSetXPath(
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
494 outputModeNode, "art:parameter/art:parameter");
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
495 Collection<OutputParameter> parameter = null;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
496 if (parameterNodes != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
497 parameter = new ArrayList<OutputParameter>(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
498 parameterNodes.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
499 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
500 Node outputParameterNode = parameterNodes
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
501 .item(j);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
502 parameter.add(new DefaultOutputParameter(
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
503 XMLUtils.getStringXPath(
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
504 outputParameterNode, "@name"),
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
505 XMLUtils.getStringXPath(
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
506 outputParameterNode, "@value"),
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
507 XMLUtils.getStringXPath(
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
508 outputParameterNode, "@name"),
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
509 XMLUtils.getStringXPath(
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
510 outputParameterNode, "@type")));
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
511 }
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
512 }
573
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
513
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
514 NodeList exportNodes = XMLUtils.getNodeSetXPath(
573
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
515 outputModeNode, "art:exports/art:export");
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
516 Map exports = null;
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
517
573
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
518 if (exportNodes != null) {
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
519 int size = exportNodes.getLength();
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
520 exports = new HashMap<String, ExportMode>(size);
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
521
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
522 for (int k = 0; k < size; k++) {
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
523 Node export = exportNodes.item(k);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
524 String expName = XMLUtils.getStringXPath(
573
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
525 export, "@name");
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
526 exports.put(expName, new DefaultExportMode(
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
527 expName,
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
528 XMLUtils.getStringXPath(export, "@description"),
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
529 XMLUtils.getStringXPath(export, "@mime-type")));
573
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
530 }
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
531 }
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
532
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
533 outputModes.put(name, new DefaultOutputMode(name,
573
bd67164cf28b Devided actions and exports. Adjusted output and export actions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 570
diff changeset
534 mimeType, parameter, exports));
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
535 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
536
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
537 }
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
538 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
539
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
540 String currentState = XMLUtils.getStringXPath(document,
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
541 "/art:result/art:state/@name");
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
542 NodeList statesList = XMLUtils.getNodeSetXPath(document,
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
543 "/art:result/art:reachable-states/art:state/@name");
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
544 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
545 statesList.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
546 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
547 reachableStates.add(statesList.item(i).getNodeValue());
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
548 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
549
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
550 NodeList inputNodes = XMLUtils.getNodeSetXPath(document,
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
551 "/art:result/art:model/art:input");
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
552 if (inputNodes != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
553 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
554 inputNodes.getLength());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
555 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
556 Node inputNode = inputNodes.item(i);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
557 String name = XMLUtils.getStringXPath(inputNode, "@name");
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
558 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
559 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
560 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
561 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
562
30
07e9c137a2f1 Added dynamic Outputparameter Support and Outputparameter-manipulation
Tim Englich <tim.englich@intevation.de>
parents: 25
diff changeset
563 ad.setOutputModes(outputModes);
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
564 ad.setCurrentOut(outputNode);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
565 ad.setCurrentUI(uiNode);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
566 ad.setCurrentState(currentState);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
567 ad.setReachableStates(reachableStates);
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
568 return ad;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
569 } else {
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
570 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
571 throw new ArtifactDatabaseClientException(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
572 "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
573 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
574
9
a4cb6d175a6e Support for Initial DescribeCall to ArtifactDatabase implemented
Tim Englich <tim.englich@intevation.de>
parents: 7
diff changeset
575 }
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
576
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
577
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
578 /**
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
579 * Feed, advance and describe in one single method.
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
580 *
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
581 * @param artifactFactory The factory which created the current artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
582 * @param currentArtifact The current artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
583 * @param target The target state for advance.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
584 * @param inputParameter Input data for feed.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
585 * @return the artifact description after calling feed and advance.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
586 * @throws ArtifactDatabaseClientException if a general error occured in
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
587 * the artifact server.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
588 * @throws ArtifactDatabaseInputException if the input data was invalid used
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
589 * for feed.
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
590 */
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
591 public ArtifactDescription doNextStep(
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
592 ArtifactObject artifactFactory,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
593 ArtifactObject currentArtifact,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
594 String target,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
595 Collection<InputParameter> inputParameter)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
596 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
597
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
598 try {
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
599 // 1 Feed
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
600 this.doFeed(artifactFactory, currentArtifact, inputParameter);
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
601
157
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
602 // 2. Noch einmal Describe um das jetzt zu erreichende Ziel zu ermitteln
394
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
603 ArtifactDescription ad = getCurrentStepDescription(
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
604 artifactFactory,
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
605 new Artifact(currentArtifact.getId(),
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
606 currentArtifact.getHash()),
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
607 false
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
608 );
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
609
157
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
610 target = ad.getReachableStates().iterator().next();
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
611
157
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
612 // 3 Advance
394
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
613 doAdvance(artifactFactory, currentArtifact, target);
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
614
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
615 // 3 Describe
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
616 return this.getCurrentStepDescription(artifactFactory,
157
013d47662161 Switched the Communication for Describe-Calls to the artifact-database from get to post.
Tim Englich <tim.englich@intevation.de>
parents: 154
diff changeset
617 currentArtifact,true);
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
618 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
619 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
620 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
621 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
622 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
623
394
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
624
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
625 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
626 * Call the advance operation of the artifact server to step to the next
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
627 * step of the parameterization.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
628 *
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
629 * @param factory The artifact factory which created the current artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
630 * @param artifact The current artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
631 * @param target The target state.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
632 * @throws IOException if an error occured while reading/writing from/to
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
633 * stream.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
634 * @throws ArtifactDatabaseClientException if a general error occured in
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
635 * the artifact server.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
636 * @throws ArtifactDatabaseInputException if the input data was invalid.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
637 */
394
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
638 public void doAdvance(
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
639 ArtifactObject factory,
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
640 ArtifactObject artifact,
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
641 String target)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
642 throws IOException, ArtifactDatabaseClientException, ArtifactDatabaseInputException {
394
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
643 String url = getArtifactUrl(factory, artifact);
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
644 Document advanceDocument = createAdvanceRequestBody(artifact, target);
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
645 InputStream advanceResult = doPostRequest(url, advanceDocument);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
646 check4ExceptionReport(XMLUtils.readDocument(advanceResult));
394
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
647 }
14eecfde4607 Render links to step back to previous states into gui. Added controller to advance back to these states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
648
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
649 private Document createFeedRequestBody(
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
650 ArtifactObject currentArtifact,
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
651 Collection<InputParameter> inputParameter) {
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
652 Document document = XMLUtils.newDocument();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
653 Node rootNode = this.createRootNode(document);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
654
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
655 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
656 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
657 rootNode.appendChild(typeNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
658
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
659 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
660 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
661 rootNode.appendChild(uuidNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
662
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
663 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
664 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
665 rootNode.appendChild(hashNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
666
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
667 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
668 "data");
12
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
669 rootNode.appendChild(dataNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
670
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
671 return document;
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
672 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
673
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
674
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
675 private Node createParameterNodes(
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
676 Collection<InputParameter> inputParameter,
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
677 Document document, String nodeName) {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
678 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
679
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
680 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
681 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
682 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
683 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
684 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
685 String[] values = ip.getValues();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
686 if (values != null) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
687 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
688 String value = values[i];
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
689 Element inputNode = this.createArtifactElement(
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
690 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
691 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
692 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
693 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
694 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
695 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
696 }
4ebe57b170d3 Integration of moving through the Artifact-States and rendering the UI.
Tim Englich <tim.englich@intevation.de>
parents: 11
diff changeset
697 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
698 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
699 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
700
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
701
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
702 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
703 * Creates the xml body for the advance request.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
704 *
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
705 * @param currentArtifact
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
706 * @param target
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
707 * @return the advance xml document.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
708 */
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
709 private Document createAdvanceRequestBody(ArtifactObject currentArtifact,
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
710 String target) {
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
711 Document document = XMLUtils.newDocument();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
712 Node rootNode = this.createRootNode(document);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
713
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
714 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
715 typeNode.setAttribute("name", "advance");
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
716 rootNode.appendChild(typeNode);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
717
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
718 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
719 uuidNode.setAttribute("value", currentArtifact.getId());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
720 rootNode.appendChild(uuidNode);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
721
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
722 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
723 hashNode.setAttribute("value", currentArtifact.getHash());
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
724 rootNode.appendChild(hashNode);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
725 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
726 targetNode.setAttribute("name", target);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
727 rootNode.appendChild(targetNode);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
728 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
729 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
730
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
731 /**
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
732 * Call the out operation of the artifact server and writes the result to
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
733 * <i>stream</i>.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
734 *
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
735 * @param exportMode
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
736 * @param inputParameter
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
737 */
583
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
738 public void doOutput(
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
739 ArtifactObject artifactFactory,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
740 ArtifactObject currentArtifact,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
741 OutputStream stream,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
742 String targetName,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
743 String exportMode,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
744 String mimeType,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
745 Collection<InputParameter> inputParameter)
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
746 throws ArtifactDatabaseClientException
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
747 {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
748 try {
583
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
749 Document requestBody = this.createOutRequestBody(
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
750 currentArtifact,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
751 targetName,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
752 exportMode,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
753 mimeType,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
754 inputParameter);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
755
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
756 String requestUrl = this.getArtifactUrl(artifactFactory,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
757 currentArtifact)
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
758 + "/" + targetName;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
759 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
760
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
761 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
762 int i = -1;
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
763 while ((i = is.read(b)) > 0) {
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
764 stream.write(b, 0, i);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
765 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
766 } catch (IOException e) {
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
767 log.error(e, e);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
768 throw new ArtifactDatabaseClientException(e);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
769 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
770 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
771
670
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
772
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
773 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
774 * Call the out method of the artifact server with a specific export mode.
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
775 *
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
776 * @param artifactFactory
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
777 * @param currentArtifact
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
778 * @param out
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
779 * @throws ArtifactDatabaseClientException if an error occured while
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
780 * reading/writing from/to stream.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
781 */
670
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
782 public void doExport(
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
783 ArtifactObject artifactFactory,
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
784 ArtifactObject currentArtifact,
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
785 OutputStream out)
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
786 throws ArtifactDatabaseClientException
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
787 {
678
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
788 InputStreamReader reader = null;
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
789 OutputStreamWriter writer = null;
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
790
670
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
791 try {
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
792 String url = ((ArtifactFactory) artifactFactory).getDataBaseUrl();
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
793 url += "/export/" + currentArtifact.getId();
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
794
678
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
795 Representation response = doGetRequestInternal(url, null);
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
796 InputStream in = response.getStream();
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
797
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
798 reader = new InputStreamReader(in);
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
799 writer = new OutputStreamWriter(out);
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
800
679
4eccd03394ac Improved the copying of input stream to output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 678
diff changeset
801 int c;
4eccd03394ac Improved the copying of input stream to output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 678
diff changeset
802 char[] buffer = new char[512];
4eccd03394ac Improved the copying of input stream to output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 678
diff changeset
803 while ((c = reader.read(buffer)) > 0) {
4eccd03394ac Improved the copying of input stream to output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 678
diff changeset
804 writer.write(buffer, 0, c);
678
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
805 }
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
806
670
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
807 }
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
808 catch (Exception e) {
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
809 log.error(e, e);
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
810 throw new ArtifactDatabaseClientException(e);
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
811 }
678
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
812 finally {
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
813 try {
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
814 reader.close();
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
815 } catch (IOException ioe) {}
670
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
816
678
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
817 try {
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
818 writer.flush();
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
819 } catch (IOException ioe) {}
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
820
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
821 try {
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
822 writer.close();
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
823 } catch (IOException ioe) {}
2943f69e006f Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 676
diff changeset
824 }
670
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
825 }
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
826
b89b31293772 Implemented first things to store/load projects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 668
diff changeset
827
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
828 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
829 * Start to import an artifact from xml document.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
830 *
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
831 * @param factory
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
832 * @param document The artifact as xml document.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
833 * @return A status description of the operation (success or failure).
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
834 * @throws ArtifactDatabaseClientException
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
835 * @throws IOException
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
836 */
673
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
837 public Document doImport(
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
838 ArtifactFactory factory,
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
839 Document document)
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
840 throws ArtifactDatabaseClientException, IOException
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
841 {
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
842 String url = factory.getDataBaseUrl() + "/import";
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
843 InputStream response = doPostRequest(url, document);
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
844
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
845 return XMLUtils.readDocument(response);
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
846 }
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
847
93b4dedc4e37 Implemented a mechanism to import artifacts from xml structured documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 670
diff changeset
848
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
849 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
850 * Creates the xml request body used for an out-call of the artifact server.
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
851 *
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
852 * @param currentArtifact
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
853 * @param target
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
854 * @param exportMode
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
855 * @param mimeType
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
856 * @param inputParameter
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
857 * @return the request body.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
858 */
38
fccf90761825 Format Code to max 80 Chars per Row better Formatter choosen
Tim Englich <tim.englich@intevation.de>
parents: 36
diff changeset
859 private Document createOutRequestBody(
583
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
860 ArtifactObject currentArtifact,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
861 String target,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
862 String exportMode,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
863 String mimeType,
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
864 Collection<InputParameter> inputParameter)
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
865 {
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
866 Document document = XMLUtils.newDocument();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
867 Node rootNode = this.createRootNode(document);
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
868
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
869 Element typeNode = this.createArtifactElement(document, "type");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
870 typeNode.setAttribute("name", "out");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
871 rootNode.appendChild(typeNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
872
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
873 Element uuidNode = this.createArtifactElement(document, "uuid");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
874 uuidNode.setAttribute("value", currentArtifact.getId());
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
875 rootNode.appendChild(uuidNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
876
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
877 Element hashNode = this.createArtifactElement(document, "hash");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
878 hashNode.setAttribute("value", currentArtifact.getHash());
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
879 rootNode.appendChild(hashNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
880
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
881 Element outNode = this.createArtifactElement(document, "out");
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
882 outNode.setAttribute("name", target);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
883 rootNode.appendChild(outNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
884
583
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
885 Element exportNode = this.createArtifactElement(document, "export");
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
886 exportNode.setAttribute("name", exportMode);
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
887 outNode.appendChild(exportNode);
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
888
281
4ec95d586f31 Removed mistake in xml structure of the artifact protocol.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 165
diff changeset
889 Element mimeTypeNode = this.createArtifactElement(document, "mime-type");
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
890 mimeTypeNode.setAttribute("value", mimeType);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
891 outNode.appendChild(mimeTypeNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
892
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
893 Node parameterNode = this.createParameterNodes(inputParameter,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
894 document, "params");
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
895 outNode.appendChild(parameterNode);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
896
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
897 return document;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
898 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
899
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
900
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
901 /**
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
902 * Calls the feed operation of the artifact server.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
903 *
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
904 * @param artifactFactory The artifact factory which created the current
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
905 * artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
906 * @param currentArtifact The current artifact.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
907 * @param inputParameter The user input.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
908 * @throws ArtifactDatabaseClientException
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
909 * @throws ArtifactDatabaseInputException
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
910 */
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
911 public void doFeed(
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
912 ArtifactObject artifactFactory,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
913 ArtifactObject currentArtifact,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
914 Collection<InputParameter> inputParameter)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
915 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
916
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
917 try {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
918 Document feedDocument = this.createFeedRequestBody(currentArtifact,
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
919 inputParameter);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
920 String url = this.getArtifactUrl(artifactFactory, currentArtifact);
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
921 InputStream feedResult = this.doPostRequest(url, feedDocument);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
922 Document feedResultDocument = XMLUtils
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
923 .readDocument(feedResult);
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
924 this.check4ExceptionReport(feedResultDocument);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
925 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
926 log.error(e, e);
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
927 throw new ArtifactDatabaseClientException(e);
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
928 }
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
929 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
930
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
931 private void check4ExceptionReport(Document document)
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
932 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
933 String message = XMLUtils.getStringXPath(document,
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
934 EXCEPTION_GENERAL);
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
935 if (message != null) {
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
936 throw new ArtifactDatabaseClientException(message);
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
937 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
938
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
939 String input = XMLUtils.getStringXPath(document, EXCEPTION_USER_INPUT);
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
940 if (input != null) {
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
941 throw new ArtifactDatabaseInputException(input);
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
942 }
25
13ba9f6e87a2 Codecleanup
Tim Englich <tim.englich@intevation.de>
parents: 23
diff changeset
943 }
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
944
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
945
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
946 /**
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
947 * Call the specific wms export mode of the out operation of the artifact
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
948 * server.
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
949 *
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
950 * @param factory
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
951 * @param artifact
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
952 * @param inputParameter
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
953 * @return a document that contains information about the wms service and
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
954 * the created layer.
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
955 * @throws ArtifactDatabaseClientException
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
956 * @throws ArtifactDatabaseInputException
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
957 */
668
ccd47d9887ec Added an options panel for wms customization (issue198).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 665
diff changeset
958 public Document publishWMS(
ccd47d9887ec Added an options panel for wms customization (issue198).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 665
diff changeset
959 ArtifactObject factory,
ccd47d9887ec Added an options panel for wms customization (issue198).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 665
diff changeset
960 ArtifactObject artifact,
ccd47d9887ec Added an options panel for wms customization (issue198).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 665
diff changeset
961 Collection<InputParameter> inputParameter
676
707e142e7d44 Improved ExceptionHandling during WMS-Publishing.
Tim Englich <tim.englich@intevation.de>
parents: 673
diff changeset
962 ) throws ArtifactDatabaseClientException, ArtifactDatabaseInputException{
570
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
963 log.debug("Start wms publishing...");
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
964
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
965 String target = "wms";
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
966 String requestURL = getArtifactUrl(factory, artifact) + "/" + target;
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
967 Document request = createOutRequestBody(
668
ccd47d9887ec Added an options panel for wms customization (issue198).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 665
diff changeset
968 artifact, target, "", "text/xml", inputParameter);
570
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
969 try {
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
970 InputStream input = doPostRequest(requestURL, request);
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
971 Document result = XMLUtils.readDocument(input);
676
707e142e7d44 Improved ExceptionHandling during WMS-Publishing.
Tim Englich <tim.englich@intevation.de>
parents: 673
diff changeset
972 this.check4ExceptionReport(result);
585
2e690cb2247c Show information about MapServer path and layer name after publishing calculated shapefiles as wms. Use MapServer settings configured in conf.xml to feed OpenLayers client.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 583
diff changeset
973 return result;
570
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
974 }
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
975 catch (IOException ioe) {
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
976 log.error(ioe, ioe);
676
707e142e7d44 Improved ExceptionHandling during WMS-Publishing.
Tim Englich <tim.englich@intevation.de>
parents: 673
diff changeset
977 throw new ArtifactDatabaseClientException(ioe);
570
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
978 }
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
979 }
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
980
699
af22fa5567a6 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 690
diff changeset
981
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
982 public Collection<ArtifactStatisticsSet> calculateStatistics(
570
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
983 ArtifactObject artifactFactory,
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
984 ArtifactObject currentArtifact)
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
985 throws ArtifactDatabaseClientException
cbd397712ecf Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
986 {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
987 log.debug("DefaultArtifactDatabaseClient.calculateStatistics");
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
988 Collection<ArtifactStatisticsSet> resultValues = null;
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
989
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
990 try {
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
991 String targetName = "statistics";
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
992 String requestUrl = this.getArtifactUrl(artifactFactory,
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
993 currentArtifact) + "/" + targetName;
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
994 Document requestBody = this.createOutRequestBody(currentArtifact,
583
2f3d885fed09 Adjusted http requests and appended a new parameter export mode to 'out'-xml document to choose between svg, pdf or image exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 573
diff changeset
995 targetName, "", "text/xml", null);
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
996 XMLUtils xmlUtils = new XMLUtils();
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
997 InputStream is = this.doPostRequest(requestUrl, requestBody);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
998 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
999 if (resultDocument != null) {
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1000
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
1001 NodeList statisticSetNodes = XMLUtils.getNodeSetXPath(resultDocument,
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
1002 "/art:statistics/art:statistic");
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1003 resultValues = new ArrayList<ArtifactStatisticsSet>
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1004 (statisticSetNodes.getLength());
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1005 for (int i = 0; i < statisticSetNodes.getLength(); i++) {
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1006 Element statisticSetNode = (Element)statisticSetNodes.item(i);
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1007 String name = statisticSetNode.getAttribute("name");
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1008 ArtifactStatisticsSet set =
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1009 new DefaultArtifactStatisticsSet(name);
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
1010 NodeList resultNodes = XMLUtils.getNodeSetXPath(statisticSetNode,
389
416ff31f6273 Removed local-name() method from xsl stylesheet and adjusted xpathes while reading xml documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 281
diff changeset
1011 "art:statistic-value");
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1012 if (resultNodes != null) {
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1013 for (int j = 0; j < resultNodes.getLength(); j++) {
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1014 Element statisticNode = (Element)resultNodes.item(j);
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1015 String statisticName = statisticNode.
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1016 getAttribute("name");
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1017 String statisticValue = statisticNode.
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1018 getAttribute("value");
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1019 set.addStatisticValues(
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1020 new DefaultArtifactStatisticValue
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1021 (statisticName,statisticValue));
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1022 }
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
1023 }
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1024 resultValues.add(set);
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
1025 }
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
1026 }
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
1027 } catch (IOException e) {
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
1028 log.error(e, e);
35
4405f31bbc30 CodeCleanUP
Tim Englich <tim.englich@intevation.de>
parents: 34
diff changeset
1029 throw new ArtifactDatabaseClientException(e);
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
1030 }
36
ad381cc47217 Format Code to max 80 Chars per Row
Tim Englich <tim.englich@intevation.de>
parents: 35
diff changeset
1031
164
5570d9b3282f Implemented a better GUI-Structure for displaying the Statisticdata. issue83
Tim Englich <tim.englich@intevation.de>
parents: 157
diff changeset
1032 return resultValues;
32
0f4362d75e9e Adding StatisticsOutput to the GUI
Tim Englich <tim.englich@intevation.de>
parents: 30
diff changeset
1033 }
40
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
1034
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
1035 public void setLocale(Locale locale) {
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
1036 this.locale = locale;
23a4f196d7d6 Adding Languagetransfer to the ArtifactDatabase to the GNV-Client
Tim Englich <tim.englich@intevation.de>
parents: 38
diff changeset
1037 }
402
b88e881e8e94 Added the first Implementation (not complete and not ready to use) for the Interface from the MapViewer to the GNV
Tim Englich <tim.englich@intevation.de>
parents: 394
diff changeset
1038
703
21ad44ccdb84 Tooltip text of the back-button became language specific (issue227).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 700
diff changeset
1039 public Locale getLocale() {
21ad44ccdb84 Tooltip text of the back-button became language specific (issue227).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 700
diff changeset
1040 return locale;
21ad44ccdb84 Tooltip text of the back-button became language specific (issue227).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 700
diff changeset
1041 }
21ad44ccdb84 Tooltip text of the back-button became language specific (issue227).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 700
diff changeset
1042
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
1043
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1044 public Collection<ArtifactObject> getArtifactFactoryMetaInformation(
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
1045 Collection<MapService> mapServices,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
1046 String geometry,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
1047 String srs)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
1048 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1049 log.debug("DefaultArtifactDatabaseClient.getArtifactFactories");
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1050 Collection<ArtifactObject> resultValues = null;
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1051 try {
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1052 this.initialize();
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1053 Iterator<String> it = artifactDatabases.iterator();
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1054 Document requestBody = this.createMetaDataRequestBody(mapServices,
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1055 geometry,
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1056 srs);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1057 while (it.hasNext()) {
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1058 String server = it.next();
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1059 String url = server + "/service/metadata/";
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1060 log.debug(url);
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1061
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1062 InputStream resultStream = this.doPostRequest(url, requestBody);
565
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
1063 resultValues = this.parseMetaDataResult(resultStream, server,geometry);
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1064 }
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1065 } catch (IOException e) {
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1066 log.error(e,e);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1067 }
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1068 return resultValues;
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1069 }
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1070
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1071 private Collection<ArtifactObject> parseMetaDataResult(
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1072 InputStream inputStream,
665
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
1073 String server,
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
1074 String geometry)
27f25b9ae9af Improved exception handling. Display error messages after invalid user input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 590
diff changeset
1075 throws ArtifactDatabaseClientException, ArtifactDatabaseInputException {
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1076 XMLUtils xmlUtils = new XMLUtils();
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
1077 Document document = XMLUtils.readDocument(inputStream);
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1078 this.check4ExceptionReport(document);
565
8355d7cacd09 Modified the Create-Artifact-Request-Body that a Geometry will be put into
Tim Englich <tim.englich@intevation.de>
parents: 561
diff changeset
1079 return this.getArtifactFactories(document, server,geometry);
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1080 }
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1081
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1082 private Document createMetaDataRequestBody(Collection<MapService> mapServices,
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1083 String geometry,
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1084 String srs){
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1085 log.debug("DefaultArtifactDatabaseClient.createMetaDataRequestBody");
690
254f062e334b Added JavaDoc.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 684
diff changeset
1086 Document document = XMLUtils.newDocument();
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1087 Node rootNode = this.createArtifactElement(document, "GetMetaData");
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1088 document.appendChild(rootNode);
681
15ac78a91d1b Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 679
diff changeset
1089
1005
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
1090 if (geometry != null){
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
1091 Element locationNode = this.createArtifactElement(document, "location");
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
1092 locationNode.setAttribute("srs", srs);
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
1093 locationNode.appendChild(document.createTextNode(geometry));
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
1094 rootNode.appendChild(locationNode);
397b4cb8589b Prevent NPE if the Mapviewer has delivered no Geometry.
Tim Englich <tim.englich@intevation.de>
parents: 703
diff changeset
1095 }
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1096 Element mapServicesNode = this.createArtifactElement(document,
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1097 "mapservices");
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1098 Iterator<MapService> it = mapServices.iterator();
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1099 while (it.hasNext()){
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1100 MapService mapService = it.next();
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1101 Element mapServiceNode = this.createArtifactElement(document,
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1102 "mapservice");
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1103 mapServiceNode.setAttribute("id", mapService.getID());
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1104 mapServiceNode.setAttribute("type", mapService.getType());
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1105 mapServiceNode.setAttribute("url", mapService.getURL());
561
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1106 if (mapService.getLayer() != null){
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1107 Iterator<Layer> layer = mapService.getLayer().iterator();
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1108 while (layer.hasNext()){
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1109 Layer tmpLayer = layer.next();
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1110 Element layerNode = this.createArtifactElement(document,
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1111 "layer");
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1112 layerNode.setAttribute("id", tmpLayer.getID());
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1113 layerNode.setAttribute("name", tmpLayer.getName());
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1114 layerNode.setAttribute("isgrouplayer",
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1115 ""+tmpLayer.isGroupLayer());
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1116 layerNode.setAttribute("parentid", tmpLayer.parentID());
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1117 mapServiceNode.appendChild(layerNode);
3f39756e0c8a Fixed a NPE. Now it is possible to put an Mapservice without an Layer into
Tim Englich <tim.englich@intevation.de>
parents: 558
diff changeset
1118 }
558
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1119 }
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1120 mapServicesNode.appendChild(mapServiceNode);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1121 }
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1122 rootNode.appendChild(mapServicesNode);
8032da9e8b70 Added further business logic for the MapViewer-Interface
Tim Englich <tim.englich@intevation.de>
parents: 402
diff changeset
1123 return document;
402
b88e881e8e94 Added the first Implementation (not complete and not ready to use) for the Interface from the MapViewer to the GNV
Tim Englich <tim.englich@intevation.de>
parents: 394
diff changeset
1124 }
13
2535158e2687 Chartoutput Added to the View
Tim Englich <tim.englich@intevation.de>
parents: 12
diff changeset
1125 }
700
89ade245ca7a Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 699
diff changeset
1126 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org