annotate flys-client/src/main/java/de/intevation/flys/client/server/ExportServiceImpl.java @ 3499:17c66d38f095

FixA: Added AT file export to FixAnalysis W/Q. flys-client/trunk@5223 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 17 Aug 2012 11:18:15 +0000
parents bc06a671ef60
children def13f23bb27
rev   line source
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.server;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.io.OutputStream;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import java.io.IOException;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import org.w3c.dom.Document;
3499
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
7 import org.w3c.dom.Element;
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
9 import org.apache.log4j.Logger;
3499
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
10 import org.json.XML;
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
11
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import javax.servlet.http.HttpServlet;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import javax.servlet.http.HttpServletRequest;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import javax.servlet.http.HttpServletResponse;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import de.intevation.artifacts.common.utils.ClientProtocolUtils;
3499
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
17 import de.intevation.artifacts.common.utils.XMLUtils;
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import de.intevation.artifacts.httpclient.http.HttpClient;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 /**
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 * This service is used to request a data export from the artifact server. The
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 * response is directed directly to the output stream, so that a file dialog is
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 * opened.
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 *
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 */
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 public class ExportServiceImpl
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 extends HttpServlet
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
33 private static final Logger logger =
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
34 Logger.getLogger(ExportServiceImpl.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
35
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
36
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 public void doGet(HttpServletRequest req, HttpServletResponse resp) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
38 logger.info("ExportServiceImpl.doGet");
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 try {
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 OutputStream out = resp.getOutputStream();
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
43 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
44
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 String uuid = req.getParameter("uuid");
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 String mode = req.getParameter("mode");
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 String type = req.getParameter("type");
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 String locale = req.getParameter("locale");
3499
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
49 String km = req.getParameter("km");
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 String fn = mode + "." + type;
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 resp.setHeader("Content-Disposition", "attachment;filename=" + fn);
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
54 logger.debug("Request " + type + " export.");
3499
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
55
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
56 Document attr = null;
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
57 if (km != null && km.length() > 0) {
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
58 attr = XMLUtils.newDocument();
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
59 XMLUtils.ElementCreator ec =
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
60 new XMLUtils.ElementCreator(attr, null, null);
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
61 Element e = ec.create("km");
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
62 e.setTextContent(km);
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
63 attr.appendChild(e);
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
64 }
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 Document request = ClientProtocolUtils.newOutCollectionDocument(
3499
17c66d38f095 FixA: Added AT file export to FixAnalysis W/Q.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1425
diff changeset
66 uuid, mode, type, attr);
1425
bc06a671ef60 Removed the URL parameter from service calls. The service
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1367
diff changeset
67 HttpClient client = new HttpClientImpl(url, locale);
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 client.collectionOut(request, uuid, mode, out);
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 out.close();
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 out.flush();
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 }
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 catch (IOException ioe) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 432
diff changeset
74 logger.error(ioe, ioe);
274
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 }
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 }
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 }
71a7533555d0 Added a service to export data from the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org