annotate flys-client/src/main/java/de/intevation/flys/client/server/DistanceInfoServiceImpl.java @ 581:210339fd1a34

Removed more expensive XPath. flys-client/trunk@2169 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 20 Jun 2011 16:25:48 +0000
parents c7301a701da9
children 78907f0fb939
rev   line source
219
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.server;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.util.ArrayList;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import java.util.List;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import javax.xml.xpath.XPathConstants;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import org.w3c.dom.Document;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import org.w3c.dom.Element;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import org.w3c.dom.Node;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import org.w3c.dom.NodeList;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import de.intevation.artifacts.common.ArtifactNamespaceContext;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import de.intevation.artifacts.common.utils.XMLUtils;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import de.intevation.artifacts.httpclient.http.HttpClient;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 import de.intevation.flys.client.shared.exceptions.ServerException;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 import de.intevation.flys.client.client.services.DistanceInfoService;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 import de.intevation.flys.client.shared.model.DistanceInfoObject;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 import de.intevation.flys.client.shared.model.DistanceInfoObjectImpl;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 /**
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 */
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 public class DistanceInfoServiceImpl
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 extends RemoteServiceServlet
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 implements DistanceInfoService
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 {
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 public static final String ERROR_NO_DISTANCEINFO_FOUND =
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 "error_no_distanceinfo_found";
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 public static final String XPATH_DISTANCES = "art:distances/art:distance";
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
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: 219
diff changeset
41 public DistanceInfoObject[] getDistanceInfo(
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: 219
diff changeset
42 String url,
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: 219
diff changeset
43 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: 219
diff changeset
44 String river)
219
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 throws ServerException
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 {
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 System.out.println("DistanceInfoServiceImpl.getDistanceInfo");
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 Document doc = XMLUtils.newDocument();
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 doc,
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 ArtifactNamespaceContext.NAMESPACE_URI,
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 ArtifactNamespaceContext.NAMESPACE_PREFIX);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 Element riverEl = ec.create("river");
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 riverEl.setTextContent(river);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 doc.appendChild(riverEl);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61
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: 219
diff changeset
62 HttpClient client = new HttpClientImpl(url, locale);
219
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 try {
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 Document result = client.callService(url, "distanceinfo", doc);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 System.out.println("Extract distance info objects now.");
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 DistanceInfoObject[] objects = extractDistanceInfoObjects(result);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 if (objects != null && objects.length > 0) {
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 return objects;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 catch (ConnectionException ce) {
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 System.err.println(ce.getLocalizedMessage());
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 throw new ServerException(ERROR_NO_DISTANCEINFO_FOUND);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 /**
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 * Extracts all distance info objects from <i>result</i> document.
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 *
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 * @param result The document retrieved by the server.
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 *
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 * @return a list of DistanceInfoObjects.
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 */
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 protected DistanceInfoObject[] extractDistanceInfoObjects(Document result)
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 throws ServerException
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 {
569
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
92 NodeList list = result.getElementsByTagName("distance");
219
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 if (list == null || list.getLength() == 0) {
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 System.err.println("No distance info found.");
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 throw new ServerException(ERROR_NO_DISTANCEINFO_FOUND);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 int num = list.getLength();
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 System.out.println("Response contains " + num + " objects.");
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 List<DistanceInfoObject> objects =
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 new ArrayList<DistanceInfoObject>(num);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 for (int i = 0; i < num; i++) {
569
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
106 DistanceInfoObject obj = buildDistanceInfoObject(
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
107 (Element)list.item(i));
219
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 if (obj != null) {
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 objects.add(obj);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 System.out.println("Retrieved " + objects.size() + " distances.");
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 return (DistanceInfoObject[])
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 objects.toArray(new DistanceInfoObject[num]);
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121 /**
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 * Extracts information for a single distance info object and intializes an
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123 * DistanceInfoObject with them.
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 *
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 * @param node The node that contains the information.
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 *
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 * @return a valid DistanceInfoObject.
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 */
569
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
129 protected DistanceInfoObject buildDistanceInfoObject(Element node) {
219
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130
569
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
131 String desc = node.getAttribute("description").trim();
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
132 String from = node.getAttribute("from").trim();
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
133 String to = node.getAttribute("to").trim();
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
134 String riverside = node.getAttribute("riverside").trim();
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
135 String bottom = node.getAttribute("bottom").trim();
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
136 String top = node.getAttribute("top").trim();
567
d9fc58e30a53 Loop through 'Unterkante' 'Oberkante' from service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 229
diff changeset
137
569
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
138 if (desc.length() > 0 && from.length() > 0) {
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
139 try {
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
140 Double f = new Double(from);
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
141 Double t = to .length() > 0 ? new Double(to) : null;
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
142 Double b = bottom.length() > 0 ? new Double(bottom) : null;
c7301a701da9 DistanceInfoService: Got rid of namespace. Use DOM instead of XPath.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 567
diff changeset
143 Double tp = top .length() > 0 ? new Double(top) : null;
567
d9fc58e30a53 Loop through 'Unterkante' 'Oberkante' from service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 229
diff changeset
144
d9fc58e30a53 Loop through 'Unterkante' 'Oberkante' from service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 229
diff changeset
145 return new DistanceInfoObjectImpl(desc, f, t, riverside, b, tp);
219
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
146 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147 catch (NumberFormatException nfe) {
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 System.err.println(nfe.getLocalizedMessage());
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
150 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
151
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
152 System.err.println("Invalid distance info object found.");
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
153
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
154 return null;
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
155 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156 }
7523faf567e5 Implemented a service to fetch distance information of a river from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org