annotate gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java @ 1022:28a0628b11b0

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

http://dive4elements.wald.intevation.org