Mercurial > dive4elements > river
annotate flys-client/src/main/java/de/intevation/flys/client/server/ReportServiceImpl.java @ 4241:49cb65d5932d
Improved the historical discharge calculation.
The calculation now creates new HistoricalWQKms (new subclass of WQKms). Those WQKms are used
to create new facets from (new) type 'HistoricalDischargeCurveFacet'. The chart generator is
improved to support those facets.
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 24 Oct 2012 14:34:35 +0200 |
parents | 8975e1dea436 |
children | bafb2e81a14a |
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 |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
80 protected static String buildReport(Document document) { |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
81 |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
82 NodeList problems = document.getElementsByTagName("problem"); |
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 StringBuilder global = new StringBuilder(); |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
85 StringBuilder kms = new StringBuilder(); |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
86 |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
87 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
|
88 |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
89 Element element = (Element)problems.item(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 String km = element.getAttribute("km"); |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
92 String msg = element.getTextContent(); |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
93 |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
94 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
|
95 kms.append("<li><strong>KM ") |
604
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
96 .append(StringEscapeUtils.escapeHtml(km)) |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
97 .append("</strong>: ") |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
98 .append(StringEscapeUtils.escapeHtml(msg)) |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
99 .append("</li>"); |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
100 } |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
101 else { |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
102 global.append("<li>") |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
103 .append(StringEscapeUtils.escapeHtml(msg)) |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
104 .append("</li>"); |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
105 } |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
106 } |
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 StringBuilder sb = new StringBuilder("<ul>") |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
109 .append(global) |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
110 .append(kms) |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
111 .append("</ul>"); |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
112 |
84d3c5fde5bb
First version of error reports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
603
diff
changeset
|
113 return sb.toString(); |
603
8cb98fa4987f
Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 } |
8cb98fa4987f
Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 } |
8cb98fa4987f
Stub for report service.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
116 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |