annotate gwt-client/src/main/java/org/dive4elements/river/client/server/GetArtifactServiceImpl.java @ 5861:172338b1407f

GWT client: Added copyright header.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 14:30:15 +0200
parents 5aa05a7a34b7
children ea9eef426962
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.server;
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import org.w3c.dom.Document;
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
13 import org.apache.log4j.Logger;
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
14
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
17 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
18 import org.dive4elements.artifacts.common.utils.ClientProtocolUtils;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
19 import org.dive4elements.artifacts.common.utils.XMLUtils;
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
21 import org.dive4elements.artifacts.httpclient.exceptions.ConnectionException;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
22 import org.dive4elements.artifacts.httpclient.http.HttpClient;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
23 import org.dive4elements.artifacts.httpclient.http.HttpClientImpl;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
24 import org.dive4elements.artifacts.httpclient.http.response.DocumentResponseHandler;
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
26 import org.dive4elements.river.client.shared.exceptions.ServerException;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
27 import org.dive4elements.river.client.shared.model.Artifact;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
28 import org.dive4elements.river.client.client.services.GetArtifactService;
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 /**
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 * This service provides a method that returns an artifact based on its
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 * identifier.
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 *
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 */
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 public class GetArtifactServiceImpl
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 extends RemoteServiceServlet
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 implements GetArtifactService
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
41 private static final Logger logger =
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
42 Logger.getLogger(GetArtifactServiceImpl.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
43
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
44
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 public static final String ERROR_DESCRIBE_ARTIFACT =
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 "error_describe_artifact";
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 public static final String XPATH_RESULT = "/art:result/text()";
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 public static final String OPERATION_FAILURE = "FAILED";
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52
229
924da6695800 Each service is now called with the name of the current locale to set the request object's locale manually in the HttpClient.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 221
diff changeset
53 public Artifact getArtifact(
924da6695800 Each service is now called with the name of the current locale to set the request object's locale manually in the HttpClient.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 221
diff changeset
54 String locale,
924da6695800 Each service is now called with the name of the current locale to set the request object's locale manually in the HttpClient.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 221
diff changeset
55 String uuid,
924da6695800 Each service is now called with the name of the current locale to set the request object's locale manually in the HttpClient.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 221
diff changeset
56 String hash)
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 throws ServerException
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
59 logger.info("GetArtifactServiceImpl.getArtifact");
229
924da6695800 Each service is now called with the name of the current locale to set the request object's locale manually in the HttpClient.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 221
diff changeset
60
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
61 String url = getServletContext().getInitParameter("server-url");
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
62
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 Document describe = ClientProtocolUtils.newDescribeDocument(
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 uuid, hash, true);
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
229
924da6695800 Each service is now called with the name of the current locale to set the request object's locale manually in the HttpClient.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 221
diff changeset
66 HttpClient client = new HttpClientImpl(url, locale);
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 try {
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 Document description = (Document) client.describe(
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
70 new org.dive4elements.artifacts.httpclient.objects.Artifact(
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 uuid, hash),
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 describe,
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 new DocumentResponseHandler());
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 if (description == null) {
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 throw new ServerException(ERROR_DESCRIBE_ARTIFACT);
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 }
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 String result = XMLUtils.xpathString(
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 description,
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 XPATH_RESULT,
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 ArtifactNamespaceContext.INSTANCE);
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 if (result == null || !result.equals(OPERATION_FAILURE)) {
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 return (Artifact) new FLYSArtifactCreator().create(description);
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 }
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 }
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 catch (ConnectionException ce) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
89 logger.error(ce, ce);
221
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 }
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 throw new ServerException(ERROR_DESCRIBE_ARTIFACT);
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 }
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 }
f03c34bec364 Added a new service to query an artifact description.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org