]> git.argeo.org Git - gpl/argeo-suite.git/blob - knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkSubmissionServlet.java
Introduce Geonames support.
[gpl/argeo-suite.git] / knowledge / org.argeo.support.odk / src / org / argeo / support / odk / servlet / OdkSubmissionServlet.java
1 package org.argeo.support.odk.servlet;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.io.StringWriter;
6
7 import javax.servlet.ServletException;
8 import javax.servlet.http.HttpServlet;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 import javax.servlet.http.Part;
12 import javax.xml.transform.OutputKeys;
13 import javax.xml.transform.Transformer;
14 import javax.xml.transform.TransformerException;
15 import javax.xml.transform.TransformerFactory;
16 import javax.xml.transform.stream.StreamResult;
17 import javax.xml.transform.stream.StreamSource;
18
19 import org.apache.commons.logging.Log;
20 import org.apache.commons.logging.LogFactory;
21
22 /** Receives a form submission. */
23 public class OdkSubmissionServlet extends HttpServlet {
24 private static final long serialVersionUID = 7834401404691302385L;
25 private final static Log log = LogFactory.getLog(OdkSubmissionServlet.class);
26
27 private final static String XML_SUBMISSION_FILE = "xml_submission_file";
28
29 @Override
30 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
31 for (Part part : req.getParts()) {
32 if (log.isDebugEnabled())
33 log.debug("Part: " + part.getName() + ", " + part.getContentType());
34 }
35 Part xmlSubmissionPart = req.getPart(XML_SUBMISSION_FILE);
36 if (xmlSubmissionPart == null)
37 throw new ServletException("No " + XML_SUBMISSION_FILE + " part");
38 try (InputStream in = xmlSubmissionPart.getInputStream();) {
39 // pretty print
40 Transformer transformer = TransformerFactory.newInstance().newTransformer();
41 transformer.setOutputProperty(OutputKeys.INDENT, "yes");
42 transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
43 StreamResult result = new StreamResult(new StringWriter());
44 StreamSource source = new StreamSource(in);
45 transformer.transform(source, result);
46 String xmlString = result.getWriter().toString();
47 System.out.println(xmlString);
48 } catch (TransformerException e) {
49 e.printStackTrace();
50 }
51
52 resp.setContentType("text/xml; charset=utf-8");
53 resp.setHeader("X-OpenRosa-Version", "1.0");
54 resp.setDateHeader("Date", System.currentTimeMillis());
55 resp.setIntHeader("X-OpenRosa-Accept-Content-Length", 1024 * 1024);
56 resp.setStatus(201);
57 resp.getWriter().write("<OpenRosaResponse xmlns=\"http://openrosa.org/http/response\">"
58 + "<message>Form Received!</message>" + "</OpenRosaResponse>");
59
60 }
61 }