ingo@274: package de.intevation.flys.client.server; ingo@274: ingo@274: import java.io.OutputStream; ingo@274: import java.io.IOException; ingo@274: ingo@274: import org.w3c.dom.Document; ingo@274: ingo@1367: import org.apache.log4j.Logger; ingo@1367: ingo@274: import javax.servlet.http.HttpServlet; ingo@274: import javax.servlet.http.HttpServletRequest; ingo@274: import javax.servlet.http.HttpServletResponse; ingo@274: ingo@274: import de.intevation.artifacts.common.utils.ClientProtocolUtils; ingo@274: ingo@274: import de.intevation.artifacts.httpclient.http.HttpClient; ingo@274: import de.intevation.artifacts.httpclient.http.HttpClientImpl; ingo@274: ingo@274: ingo@274: /** ingo@274: * This service is used to request a data export from the artifact server. The ingo@274: * response is directed directly to the output stream, so that a file dialog is ingo@274: * opened. ingo@274: * ingo@274: * @author Ingo Weinzierl ingo@274: */ ingo@274: public class ExportServiceImpl ingo@274: extends HttpServlet ingo@274: { ingo@1367: private static final Logger logger = ingo@1367: Logger.getLogger(ExportServiceImpl.class); ingo@1367: ingo@1367: ingo@274: public void doGet(HttpServletRequest req, HttpServletResponse resp) { ingo@1367: logger.info("ExportServiceImpl.doGet"); ingo@274: ingo@274: try { ingo@274: OutputStream out = resp.getOutputStream(); ingo@274: raimund@1425: String url = getServletContext().getInitParameter("server-url"); raimund@1425: ingo@274: String uuid = req.getParameter("uuid"); ingo@274: String mode = req.getParameter("mode"); ingo@274: String type = req.getParameter("type"); ingo@274: String locale = req.getParameter("locale"); ingo@274: String fn = mode + "." + type; ingo@274: ingo@274: resp.setHeader("Content-Disposition", "attachment;filename=" + fn); ingo@274: ingo@1367: logger.debug("Request " + type + " export."); ingo@274: Document request = ClientProtocolUtils.newOutCollectionDocument( ingo@432: uuid, mode, type); ingo@274: raimund@1425: HttpClient client = new HttpClientImpl(url, locale); ingo@274: client.collectionOut(request, uuid, mode, out); ingo@274: ingo@274: out.close(); ingo@274: out.flush(); ingo@274: } ingo@274: catch (IOException ioe) { ingo@1367: logger.error(ioe, ioe); ingo@274: } ingo@274: } ingo@274: } ingo@274: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :