From 1c3823f1290458bfe0ae125e34d641467a9bd18b Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 4 Nov 2020 08:37:08 +0100 Subject: [PATCH] ODK servlets based on JCR. --- .../src/org/argeo/support/odk/OdkNames.java | 7 +++ .../odk/servlet/OdkFormListServlet.java | 55 ++++++++++--------- .../support/odk/servlet/OdkFormServlet.java | 8 ++- 3 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 knowledge/org.argeo.support.odk/src/org/argeo/support/odk/OdkNames.java diff --git a/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/OdkNames.java b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/OdkNames.java new file mode 100644 index 0000000..fbb2087 --- /dev/null +++ b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/OdkNames.java @@ -0,0 +1,7 @@ +package org.argeo.support.odk; + +/** Names related to ODK. */ +public interface OdkNames { + + public final static String H_HTML = "h:html"; +} diff --git a/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormListServlet.java b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormListServlet.java index cc892a8..c8a66bf 100644 --- a/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormListServlet.java +++ b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormListServlet.java @@ -16,6 +16,8 @@ import javax.jcr.Property; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.query.Query; +import javax.jcr.query.QueryResult; import javax.security.auth.Subject; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -25,8 +27,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.api.NodeConstants; -import org.argeo.api.NodeUtils; -import org.argeo.cms.auth.ServletAuthUtils; +import org.argeo.cms.servlet.ServletAuthUtils; import org.argeo.entity.EntityType; import org.argeo.jcr.Jcr; import org.argeo.jcr.JcrUtils; @@ -67,39 +68,39 @@ public class OdkFormListServlet extends HttpServlet { Writer writer = resp.getWriter(); writer.append(""); writer.append(""); - boolean newApproach = true; - if (newApproach) + boolean oldApproach = false; + if (oldApproach) { try { -// Query query; -// if (pathInfo == null) { -//// query = session.getWorkspace().getQueryManager() -//// .createQuery("SELECT * FROM [nt:unstructured]", Query.JCR_SQL2); + Query query; + if (pathInfo == null) { // query = session.getWorkspace().getQueryManager() -// .createQuery("SELECT * FROM [" + OrxListType.xform.get() + "]", Query.JCR_SQL2); -// } else { -// query = session.getWorkspace().getQueryManager() -// .createQuery( -// "SELECT node FROM [" + OrxListType.xform.get() -// + "] AS node WHERE ISDESCENDANTNODE (node, '" + pathInfo + "')", -// Query.JCR_SQL2); -// } -// QueryResult queryResult = query.execute(); -// -// NodeIterator nit = queryResult.getNodes(); - log.debug(session.getUserID()); - log.debug(session.getWorkspace().getName()); - NodeIterator nit = session.getRootNode().getNodes(); - while (nit.hasNext()) { - log.debug(nit.nextNode()); +// .createQuery("SELECT * FROM [nt:unstructured]", Query.JCR_SQL2); + query = session.getWorkspace().getQueryManager() + .createQuery("SELECT * FROM [" + OrxListType.xform.get() + "]", Query.JCR_SQL2); + } else { + query = session.getWorkspace().getQueryManager() + .createQuery( + "SELECT node FROM [" + OrxListType.xform.get() + + "] AS node WHERE ISDESCENDANTNODE (node, '" + pathInfo + "')", + Query.JCR_SQL2); } + QueryResult queryResult = query.execute(); + + NodeIterator nit = queryResult.getNodes(); +// log.debug(session.getUserID()); +// log.debug(session.getWorkspace().getName()); +// NodeIterator nit = session.getRootNode().getNodes(); +// while (nit.hasNext()) { +// log.debug(nit.nextNode()); +// } while (nit.hasNext()) { StringBuilder sb = new StringBuilder(); Node node = nit.nextNode(); if (node.isNodeType(OrxListType.xform.get())) { sb.append(""); sb.append("" + node.getNode("h:html").getIdentifier() + ""); - sb.append("" + node.getProperty(Property.JCR_TITLE).getString() + ""); + sb.append("" + Jcr.getTitle(node) + ""); sb.append("" + versionFormatter.format(JcrUtils.getModified(node)) + ""); sb.append("md5:" + JcrxApi.getChecksum(node, JcrxApi.MD5) + ""); if (node.hasProperty(Property.JCR_DESCRIPTION)) @@ -132,8 +133,7 @@ public class OdkFormListServlet extends HttpServlet { Jcr.logout(session); } - boolean oldApproach = true; - if (oldApproach) + } else { for (OdkForm form : odkForms) { StringBuilder sb = new StringBuilder(); sb.append(""); @@ -151,6 +151,7 @@ public class OdkFormListServlet extends HttpServlet { log.debug(str); writer.append(str); } + } writer.append(""); } diff --git a/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormServlet.java b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormServlet.java index 93f4147..301e1bb 100644 --- a/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormServlet.java +++ b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkFormServlet.java @@ -16,9 +16,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FilenameUtils; -import org.argeo.cms.auth.ServletAuthUtils; +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 { @@ -35,9 +36,10 @@ public class OdkFormServlet extends HttpServlet { String pathInfo = req.getPathInfo(); + boolean oldApproach = false; try { - if (session.nodeExists(pathInfo)) { - session.exportDocumentView(pathInfo + "/h:html", resp.getOutputStream(), true, false); + if (!oldApproach) { + session.exportDocumentView(pathInfo + "/" + OdkNames.H_HTML, resp.getOutputStream(), true, false); } else { String fileName = FilenameUtils.getName(pathInfo); -- 2.30.2