X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.support.odk%2Fsrc%2Forg%2Fargeo%2Fsupport%2Fodk%2Fservlet%2FOdkFormServlet.java;fp=org.argeo.support.odk%2Fsrc%2Forg%2Fargeo%2Fsupport%2Fodk%2Fservlet%2FOdkFormServlet.java;h=0000000000000000000000000000000000000000;hp=cab562cc6465fbd462d3675bec8f7b4f2e9fda27;hb=6e56ffa34cb02ab04d028423aea342e3dfed4358;hpb=c285180bece610b2c2921d44fe14b6dde2123efa diff --git a/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormServlet.java b/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormServlet.java deleted file mode 100644 index cab562c..0000000 --- a/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormServlet.java +++ /dev/null @@ -1,83 +0,0 @@ -package org.argeo.support.odk.servlet; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URLDecoder; -import java.nio.charset.StandardCharsets; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.io.FilenameUtils; -import org.argeo.cms.servlet.ServletAuthUtils; -import org.argeo.jcr.Jcr; -import org.argeo.support.odk.OdkForm; -import org.argeo.support.odk.OdkNames; - -/** Retrieves a single form. */ -public class OdkFormServlet extends HttpServlet { - private static final long serialVersionUID = 7838305967987687370L; - - private Repository repository; - private Map odkForms = Collections.synchronizedMap(new HashMap<>()); - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - resp.setContentType("text/xml; charset=utf-8"); - - Session session = ServletAuthUtils.doAs(() -> Jcr.login(repository, null), req); - - String pathInfo = req.getPathInfo(); - if (pathInfo.startsWith("//")) - pathInfo = pathInfo.substring(1); - - boolean oldApproach = false; - try { - if (!oldApproach) { - String path = URLDecoder.decode(pathInfo, StandardCharsets.UTF_8); - session.exportDocumentView(path + "/" + OdkNames.H_HTML, resp.getOutputStream(), true, false); - } else { - - String fileName = FilenameUtils.getName(pathInfo); - OdkForm form = odkForms.get(fileName); - if (form == null) - throw new IllegalArgumentException("No form named " + fileName + " was found"); - - byte[] buffer = new byte[1024]; - try (InputStream in = form.openStream(); OutputStream out = resp.getOutputStream();) { - int bytesRead; - while ((bytesRead = in.read(buffer)) != -1) - out.write(buffer, 0, bytesRead); - } - } - } catch (RepositoryException e) { - e.printStackTrace(); - // TODO error message - resp.sendError(500); - } finally { - Jcr.logout(session); - } - } - - public void addForm(OdkForm odkForm) { - odkForms.put(odkForm.getFileName(), odkForm); - } - - public void removeForm(OdkForm odkForm) { - odkForms.remove(odkForm.getFileName()); - } - - public void setRepository(Repository repository) { - this.repository = repository; - } - -}