comparison flys-client/src/main/java/org/dive4elements/river/client/server/BedloadKMChartServiceImpl.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/BedloadKMChartServiceImpl.java@f84ed73311f2
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
7 import javax.servlet.http.HttpServlet;
8 import javax.servlet.http.HttpServletRequest;
9 import javax.servlet.http.HttpServletResponse;
10
11 import org.apache.log4j.Logger;
12 import org.w3c.dom.Document;
13 import org.w3c.dom.Element;
14 import org.w3c.dom.NodeList;
15
16 import de.intevation.artifacts.common.utils.XMLUtils;
17 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
18 import de.intevation.artifacts.httpclient.http.HttpClient;
19 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
20 import de.intevation.artifacts.httpclient.http.response.StreamResponseHandler;
21
22 public class BedloadKMChartServiceImpl extends HttpServlet {
23 private static final Logger log =
24 Logger.getLogger(FixingsKMChartServiceImpl.class);
25
26 public static final String SERVICE_NAME = "bedload-km-chart";
27
28 public BedloadKMChartServiceImpl() {
29 }
30
31 public void doGet(HttpServletRequest req, HttpServletResponse resp) {
32
33 log.info("BedloadKMChartServiceImpl.doGet");
34
35 String url = getServletContext().getInitParameter("server-url");
36 String locale = req.getParameter("locale");
37 String filter = req.getParameter("filter");
38
39 if (filter == null || filter.length() == 0) {
40 log.warn("Missing 'filter' parameter.");
41 return;
42 }
43
44 if (locale == null || locale.length() == 0) {
45 locale = "de";
46 }
47
48 Document filterDoc = XMLUtils.jsonToXML(filter);
49
50 if (filterDoc == null) {
51 log.warn("Creating filter document failed.");
52 return;
53 }
54
55 InputStream in;
56
57 try {
58 HttpClient client = new HttpClientImpl(url, locale);
59 in = (InputStream)client.callService(
60 url, // XXX: Why? The URL is passed by construction already.
61 SERVICE_NAME,
62 filterDoc,
63 new StreamResponseHandler());
64 }
65 catch (ConnectionException ce) {
66 log.error(ce);
67 return;
68 }
69
70 resp.setHeader("Content-Type", guessMIMEType(filterDoc));
71
72 try {
73 OutputStream out = resp.getOutputStream();
74
75 byte [] buf = new byte[4096];
76 int i = -1;
77 while ((i = in.read(buf)) >= 0) {
78 out.write(buf, 0, i);
79 }
80 out.flush();
81 }
82 catch (IOException ioe) {
83 log.error(ioe);
84 }
85 finally {
86 try { in.close(); }
87 catch (IOException ioe) { /* ignored */ }
88 }
89 }
90
91 protected static String guessMIMEType(Document document) {
92
93 NodeList formats = document.getElementsByTagName("format");
94
95 String format = "png";
96
97 if (formats.getLength() > 0) {
98 String type = ((Element)formats.item(0)).getAttribute("type");
99 if (type.length() > 0) {
100 format = type;
101 }
102 }
103
104 return "image/" + format;
105 }
106 }

http://dive4elements.wald.intevation.org