annotate flys-client/src/main/java/de/intevation/flys/client/server/ReportServiceImpl.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 bafb2e81a14a
children
rev   line source
603
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.server;
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
604
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
3 import java.io.InputStream;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
4 import java.io.IOException;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
5
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
6 import org.w3c.dom.Document;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
7 import org.w3c.dom.Element;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
8 import org.w3c.dom.NodeList;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
9
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 604
diff changeset
10 import org.apache.log4j.Logger;
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 604
diff changeset
11
603
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
604
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
14 import org.apache.commons.lang.StringEscapeUtils;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
15
603
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import de.intevation.flys.client.client.services.ReportService;
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17
604
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
18 import de.intevation.artifacts.common.utils.XMLUtils;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
19 import de.intevation.artifacts.common.utils.ClientProtocolUtils;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
20
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
21 import de.intevation.artifacts.httpclient.http.HttpClient;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
22 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
23
603
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 public class ReportServiceImpl
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 extends RemoteServiceServlet
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 implements ReportService
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 604
diff changeset
28 private static final Logger logger =
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 604
diff changeset
29 Logger.getLogger(ReportServiceImpl.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 604
diff changeset
30
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 604
diff changeset
31
603
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 @Override
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 public String report(
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 String collectionId,
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 String locale,
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 String out
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 ) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 604
diff changeset
38 logger.info("report: " + collectionId + " " + out);
604
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
39
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
40 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
41
604
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
42 Document request = ClientProtocolUtils.newOutCollectionDocument(
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
43 collectionId,
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
44 out,
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
45 "report");
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
46
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
47 InputStream in = null;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
48 try {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
49 HttpClient client = new HttpClientImpl(url, locale);
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
50 in = client.collectionOut(request, collectionId, out);
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
51
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
52 if (in == null) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 604
diff changeset
53 logger.debug("report: no report");
604
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
54 return null;
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
55 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
56
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
57 Document report = XMLUtils.parseDocument(in);
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
58
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
59 return buildReport(report);
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
60 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
61 catch (IOException ioe) {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
62 ioe.printStackTrace();
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
63 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
64 catch (Exception e) {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
65 e.printStackTrace();
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
66 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
67 finally {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
68 if (in != null) {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
69 try {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
70 in.close();
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
71 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
72 catch (IOException ioe) {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
73 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
74 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
75 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
76
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
77 return "error processing error report";
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
78 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
79
4591
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1609
diff changeset
80
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1609
diff changeset
81 /** Returns String containing markup that shows the report message. */
604
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
82 protected static String buildReport(Document document) {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
83
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
84 NodeList problems = document.getElementsByTagName("problem");
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
85
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
86 StringBuilder global = new StringBuilder();
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
87 StringBuilder kms = new StringBuilder();
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
88
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
89 for (int i = 0, N = problems.getLength(); i < N; ++i) {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
90
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
91 Element element = (Element)problems.item(i);
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
92
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
93 String km = element.getAttribute("km");
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
94 String msg = element.getTextContent();
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
95
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
96 if (km.length() > 0) {
1609
8975e1dea436 Error report: Prefix error message for a certain km with 'KM'.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1425
diff changeset
97 kms.append("<li><strong>KM ")
604
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
98 .append(StringEscapeUtils.escapeHtml(km))
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
99 .append("</strong>: ")
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
100 .append(StringEscapeUtils.escapeHtml(msg))
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
101 .append("</li>");
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
102 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
103 else {
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
104 global.append("<li>")
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
105 .append(StringEscapeUtils.escapeHtml(msg))
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
106 .append("</li>");
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
107 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
108 }
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
109
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
110 StringBuilder sb = new StringBuilder("<ul>")
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
111 .append(global)
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
112 .append(kms)
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
113 .append("</ul>");
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
114
84d3c5fde5bb First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 603
diff changeset
115 return sb.toString();
603
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
116 }
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
117 }
8cb98fa4987f Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
118 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org