Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/server/ChartOutputServiceImpl.java @ 4354:e0add97c432b
Circumvent NPE in Curve. issue flys/1019
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 02 Nov 2012 11:02:15 +0100 |
parents | 2867a0192aed |
children |
line wrap: on
line source
package de.intevation.flys.client.server; import java.io.OutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.w3c.dom.Document; import org.apache.log4j.Logger; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import de.intevation.artifacts.common.utils.ClientProtocolUtils; import de.intevation.artifacts.httpclient.http.HttpClient; import de.intevation.artifacts.httpclient.http.HttpClientImpl; /** * This service is used to request a chart from the artifact server. The * response is directed directly to the output stream, so the image that is * retrieved is displayed in the UI afterwards. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class ChartOutputServiceImpl extends HttpServlet { private static final Logger logger = Logger.getLogger(ChartOutputServiceImpl.class); public void doGet(HttpServletRequest req, HttpServletResponse resp) { logger.info("ChartOutputServiceImpl.doGet"); try { OutputStream out = resp.getOutputStream(); String url = getServletContext().getInitParameter("server-url"); String uuid = req.getParameter("uuid"); String type = req.getParameter("type"); String locale = req.getParameter("locale"); prepareHeader(req, resp); Document request = ClientProtocolUtils.newOutCollectionDocument( uuid, type, type, ChartServiceHelper.getChartAttributes(prepareChartAttributes(req))); HttpClient client = new HttpClientImpl(url, locale); client.collectionOut(request, uuid, "chart", out); out.close(); out.flush(); } catch (IOException ioe) { logger.error(ioe, ioe); } catch (Exception e) { logger.error(e, e); } } protected Map<String, String> prepareChartAttributes(HttpServletRequest req) { Map<String, String> attr = new HashMap<String, String>(); Map params = req.getParameterMap(); attr.put("width", req.getParameter("width")); attr.put("height", req.getParameter("height")); attr.put("minx", req.getParameter("minx")); attr.put("maxx", req.getParameter("maxx")); attr.put("miny", req.getParameter("miny")); attr.put("maxy", req.getParameter("maxy")); attr.put("format", req.getParameter("format")); attr.put("km", req.getParameter("currentKm")); if (logger.isDebugEnabled()) { logger.debug("====== ZOOM VALUES ======="); logger.debug(" min x: " + req.getParameter("minx")); logger.debug(" max x: " + req.getParameter("maxx")); logger.debug(" min y: " + req.getParameter("miny")); logger.debug(" max y: " + req.getParameter("maxy")); } return attr; } protected void prepareHeader( HttpServletRequest req, HttpServletResponse resp ) { String export = req.getParameter("export"); if (export != null && export.equals("true")) { String format = req.getParameter("format"); if (format == null || format.length() == 0) { format = "png"; } String fn = "chart_export" + getFileExtension(format); resp.setHeader("Content-Disposition", "attachment;filename=" + fn); resp.setHeader("Content-Type", getMimeType(format)); } } protected String getFileExtension(String format) { if (format.equals("png")) { return ".png"; } else if (format.equals("pdf")) { return ".pdf"; } else if (format.equals("svg")) { return ".svg"; } else if (format.equals("csv")) { return ".csv"; } return ".png"; } protected String getMimeType(String format) { if (format.equals("png")) { return "image/png"; } else if (format.equals("pdf")) { return "application/pdf"; } else if (format.equals("svg")) { return "svg+xml"; } else if (format.equals("csv")) { return "text/plain"; } return "image/png"; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :