]>
git.argeo.org Git - gpl/argeo-suite.git/blob - knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormListServlet.java
1 package org
.argeo
.support
.odk
.servlet
;
3 import java
.io
.IOException
;
5 import java
.util
.Collections
;
6 import java
.util
.HashSet
;
9 import javax
.servlet
.ServletException
;
10 import javax
.servlet
.http
.HttpServlet
;
11 import javax
.servlet
.http
.HttpServletRequest
;
12 import javax
.servlet
.http
.HttpServletResponse
;
14 import org
.apache
.commons
.logging
.Log
;
15 import org
.apache
.commons
.logging
.LogFactory
;
16 import org
.argeo
.support
.odk
.OdkForm
;
18 /** Lists available forms. */
19 public class OdkFormListServlet
extends HttpServlet
{
20 private static final long serialVersionUID
= 2706191315048423321L;
21 private final static Log log
= LogFactory
.getLog(OdkFormListServlet
.class);
23 private Set
<OdkForm
> odkForms
= Collections
.synchronizedSet(new HashSet
<>());
26 protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
27 resp
.setContentType("text/xml; charset=utf-8");
28 resp
.setHeader("X-OpenRosa-Version", "1.0");
29 resp
.setDateHeader("Date", System
.currentTimeMillis());
31 String serverName
= req
.getServerName();
32 int serverPort
= req
.getServerPort();
33 String protocol
= serverPort
== 443 || req
.isSecure() ?
"https" : "http";
35 Writer writer
= resp
.getWriter();
36 writer
.append("<?xml version='1.0' encoding='UTF-8' ?>");
37 writer
.append("<xforms xmlns=\"http://openrosa.org/xforms/xformsList\">");
38 for (OdkForm form
: odkForms
) {
39 StringBuilder sb
= new StringBuilder();
41 sb
.append("<formID>" + form
.getFormId() + "</formID>");
42 sb
.append("<name>" + form
.getName() + "</name>");
43 sb
.append("<version>" + form
.getVersion() + "</version>");
44 sb
.append("<hash>" + form
.getHash(null) + "</hash>");
45 sb
.append("<descriptionText>" + form
.getDescription() + "</descriptionText>");
46 sb
.append("<downloadUrl>" + protocol
+ "://" + serverName
48 || serverPort
== 443 ?
"" : ":" + serverPort
) + "/api/odk/" + form
.getFileName()
50 sb
.append("</xform>");
51 String str
= sb
.toString();
52 if (log
.isDebugEnabled())
56 writer
.append("</xforms>");
59 public void addForm(OdkForm odkForm
) {
60 odkForms
.add(odkForm
);
63 public void removeForm(OdkForm odkForm
) {
64 odkForms
.remove(odkForm
);