comparison flys-client/src/main/java/org/dive4elements/river/client/server/DischargeTablesServiceImpl.java @ 5834:f507086aa94b

Repaired internal references.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:31:32 +0200
parents flys-client/src/main/java/de/intevation/flys/client/server/DischargeTablesServiceImpl.java@6ae99d996f79
children 821a02bbfb4e
comparison
equal deleted inserted replaced
5833:a2bdc0f524e8 5834:f507086aa94b
1 package de.intevation.flys.client.server;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.io.OutputStream;
6 import java.text.DateFormat;
7 import java.util.Date;
8 import java.util.Locale;
9
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13
14 import org.apache.log4j.Logger;
15 import org.w3c.dom.Document;
16 import org.w3c.dom.Element;
17
18 import de.intevation.artifacts.common.utils.XMLUtils;
19 import de.intevation.artifacts.httpclient.http.HttpClient;
20 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
21 import de.intevation.artifacts.httpclient.http.response.StreamResponseHandler;
22
23
24 public class DischargeTablesServiceImpl extends HttpServlet {
25
26 private static final Logger logger = Logger
27 .getLogger(DischargeInfoServiceImpl.class);
28
29 private static final DateFormat DATE_FORMAT = DateFormat.getDateInstance(
30 DateFormat.MEDIUM, Locale.GERMANY);
31
32 public void doGet(HttpServletRequest req, HttpServletResponse resp) {
33 logger.info("ChartOutputServiceImpl.doGet");
34
35 String url = getServletContext().getInitParameter("server-url");
36 String locale = req.getParameter("locale");
37
38 prepareHeader(req, resp);
39
40 Document requestDoc = createRequestDoc(req);
41
42 HttpClient client = new HttpClientImpl(url, locale);
43
44 try {
45 OutputStream out = resp.getOutputStream();
46 InputStream stream = (InputStream) client.callService(url,
47 "dischargetablesoverview", requestDoc,
48 new StreamResponseHandler());
49
50 byte[] b = new byte[4096];
51 try {
52 int i;
53 while ((i = stream.read(b)) >= 0) {
54 out.write(b, 0, i);
55 }
56 }
57 finally {
58 stream.close();
59 }
60 }
61 catch (IOException ioe) {
62 logger.error("Error while fetching discharge tables chart!", ioe);
63 }
64 }
65
66 protected void prepareHeader(HttpServletRequest req,
67 HttpServletResponse resp) {
68 resp.setHeader("Content-Type", "image/png");
69 }
70
71 protected Document createRequestDoc(HttpServletRequest req) {
72 Document request = XMLUtils.newDocument();
73 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(request,
74 null, null);
75
76 Element service = creator.create("service");
77 Element gauge = creator.create("gauge");
78 Element extent = creator.create("extent");
79 Element format = creator.create("format");
80 Element timerange = creator.create("timerange");
81
82 creator.addAttr(gauge, "name", extractRequestGauge(req));
83 creator.addAttr(extent, "width", extractRequestWidth(req));
84 creator.addAttr(extent, "height", extractRequestHeight(req));
85 creator.addAttr(format, "type", extractRequestFormat(req));
86 creator.addAttr(timerange, "lower", extractRequestLowerTime(req));
87 creator.addAttr(timerange, "upper", extractRequestUpperTime(req));
88
89 request.appendChild(service);
90 service.appendChild(gauge);
91 service.appendChild(extent);
92 service.appendChild(format);
93 service.appendChild(timerange);
94
95 return request;
96 }
97
98 protected String extractRequestGauge(HttpServletRequest req) {
99 return req.getParameter("gauge");
100 }
101
102 protected String extractRequestWidth(HttpServletRequest req) {
103 return req.getParameter("width");
104 }
105
106 protected String extractRequestHeight(HttpServletRequest req) {
107 return req.getParameter("height");
108 }
109
110 protected String extractRequestFormat(HttpServletRequest req) {
111 return req.getParameter("format");
112 }
113
114 protected String extractRequestLowerTime(HttpServletRequest req) {
115 String lowerStr = req.getParameter("lower");
116 try {
117 long lowerMillis = Long.parseLong(lowerStr);
118 Date lower = new Date(lowerMillis);
119
120 return DATE_FORMAT.format(lower);
121 }
122 catch (NumberFormatException nfe) {
123 logger.warn("Cannot parse time millies.", nfe);
124 }
125
126 return null;
127 }
128
129 protected String extractRequestUpperTime(HttpServletRequest req) {
130 String upperStr = req.getParameter("upper");
131 try {
132 long upperMillis = Long.parseLong(upperStr);
133 Date upper = new Date(upperMillis);
134
135 return DATE_FORMAT.format(upper);
136 }
137 catch (NumberFormatException nfe) {
138 logger.warn("Cannot parse time millies.", nfe);
139 }
140
141 return null;
142 }
143 }

http://dive4elements.wald.intevation.org