annotate flys-client/src/main/java/de/intevation/flys/client/server/RiverServiceImpl.java @ 5818:a4ff4167be1e

Request feature info on all layers and show it as html if the server does not return valid gml. Non queryable layers produce an error message when the request fails. This is good enough
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 24 Apr 2013 17:33:27 +0200
parents fed914a42a10
children
rev   line source
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.server;
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
3540
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
3 import de.intevation.artifacts.common.ArtifactNamespaceContext;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
4 import de.intevation.artifacts.common.utils.XMLUtils;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
5 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
6 import de.intevation.artifacts.httpclient.http.HttpClient;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
7 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
8 import de.intevation.flys.client.client.services.RiverService;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
9 import de.intevation.flys.client.server.auth.User;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
10 import de.intevation.flys.client.shared.exceptions.ServerException;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
11 import de.intevation.flys.client.shared.model.DefaultRiver;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
12 import de.intevation.flys.client.shared.model.River;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
13
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import java.util.ArrayList;
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import java.util.List;
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import javax.xml.xpath.XPathConstants;
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
19 import org.apache.log4j.Logger;
3540
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
20 import org.w3c.dom.Document;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
21 import org.w3c.dom.Element;
98fac4872ae6 Add missing imports and fix package declaration of RemoteServiceServlet
Christian Lins <christian.lins@intevation.de>
parents: 3496
diff changeset
22 import org.w3c.dom.NodeList;
3492
d45fcf70b994 Don't display not allowed rivers to the user
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3379
diff changeset
23
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 /**
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 * This interface provides a method to list the supported rivers of the artifact
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 * server.
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 *
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 */
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 public class RiverServiceImpl
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 extends RemoteServiceServlet
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 implements RiverService
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 {
2940
2867a0192aed Cosmetics, whitespaces, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
35 /** Private logger. */
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
36 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
37 Logger.getLogger(RiverServiceImpl.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 229
diff changeset
38
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 /** The XPath string that points to the rivers in the resulting document.*/
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 public static final String XPATH_RIVERS = "/art:rivers/art:river";
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41
217
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
42 /** The error message key that is thrown if an error occured while reading
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
43 * the supported rivers from server.*/
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
44 public static final String ERROR_NO_RIVERS_FOUND = "error_no_rivers_found";
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
217
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
46
2940
2867a0192aed Cosmetics, whitespaces, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
47 /** Get river list. */
3496
f1814efec714 Replaced another attribute fetching XPath with a simple DOM getAttributeNS() call.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3494
diff changeset
48 @Override
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
49 public River[] list(String locale)
217
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
50 throws ServerException
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
51 {
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
52 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
53
2940
2867a0192aed Cosmetics, whitespaces, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1425
diff changeset
54 Document doc = XMLUtils.newDocument();
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 doc,
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 ArtifactNamespaceContext.NAMESPACE_URI,
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 ArtifactNamespaceContext.NAMESPACE_PREFIX);
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 doc.appendChild(ec.create("action"));
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
63 HttpClient client = new HttpClientImpl(url, locale);
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 try {
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
66 Document res = client.callService(url, "rivers", doc);
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 NodeList rivers = (NodeList) XMLUtils.xpath(
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 res,
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 XPATH_RIVERS,
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 XPathConstants.NODESET,
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 ArtifactNamespaceContext.INSTANCE);
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73
217
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
74 if (rivers == null || rivers.getLength() == 0) {
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
75 throw new ServerException(ERROR_NO_RIVERS_FOUND);
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
76 }
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
77
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 int count = rivers.getLength();
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 List<River> theRivers = new ArrayList<River>(count);
3492
d45fcf70b994 Don't display not allowed rivers to the user
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3379
diff changeset
81 User user = this.getUser();
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 for (int i = 0; i < count; i++) {
3496
f1814efec714 Replaced another attribute fetching XPath with a simple DOM getAttributeNS() call.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3494
diff changeset
84 Element tmp = (Element)rivers.item(i);
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85
3496
f1814efec714 Replaced another attribute fetching XPath with a simple DOM getAttributeNS() call.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3494
diff changeset
86 String name = tmp.getAttributeNS(
f1814efec714 Replaced another attribute fetching XPath with a simple DOM getAttributeNS() call.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3494
diff changeset
87 ArtifactNamespaceContext.NAMESPACE_URI, "name");
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88
3496
f1814efec714 Replaced another attribute fetching XPath with a simple DOM getAttributeNS() call.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3494
diff changeset
89 if (name.length() > 0
f1814efec714 Replaced another attribute fetching XPath with a simple DOM getAttributeNS() call.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3494
diff changeset
90 && (user == null || user.canUseFeature("river:" + name))) {
3492
d45fcf70b994 Don't display not allowed rivers to the user
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3379
diff changeset
91 theRivers.add(new DefaultRiver(name));
d45fcf70b994 Don't display not allowed rivers to the user
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3379
diff changeset
92 }
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 }
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94
3496
f1814efec714 Replaced another attribute fetching XPath with a simple DOM getAttributeNS() call.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3494
diff changeset
95 return theRivers.toArray(new River[theRivers.size()]);
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 }
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 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
98 logger.error(ce, ce);
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 }
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100
217
907b61e4d702 Improved the exception handling - added warnings for user authentication errors and errors that occur while fetching supported rivers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 29
diff changeset
101 throw new ServerException(ERROR_NO_RIVERS_FOUND);
29
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 }
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 }
44c63e7fd0d0 Added a service to list the supported rivers of the artifact server. The FLYS instance serves a method that retrieves this list.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org