X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=knowledge%2Forg.argeo.support.odk%2Fsrc%2Forg%2Fargeo%2Fsupport%2Fodk%2Fservlet%2FOdkManifestServlet.java;h=091f4dabfc7340cda6b95ad4092a7918572890ec;hb=30b97a74faf0dcbc6d787bb88b524bfc53a7f251;hp=385024c487ffe294f9ea3f0cf236fcbbea4ccc6d;hpb=d82ac64eb9379aec9b5c3b2c66844ddbfebf6806;p=gpl%2Fargeo-suite.git diff --git a/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkManifestServlet.java b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkManifestServlet.java index 385024c..091f4da 100644 --- a/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkManifestServlet.java +++ b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkManifestServlet.java @@ -8,7 +8,6 @@ import java.nio.charset.StandardCharsets; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.Property; -import javax.jcr.PropertyIterator; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -61,8 +60,20 @@ public class OdkManifestServlet extends HttpServlet { if (file.isNodeType(NodeType.NT_ADDRESS)) { Node target = file.getProperty(Property.JCR_ID).getNode(); writer.append(""); - writer.append(target.getPath().substring(1) + ".xml"); + // Work around bug in ODK Collect not supporting paths + // writer.append(target.getPath().substring(1) + ".xml"); + writer.append(target.getIdentifier() + ".xml"); writer.append(""); + +// StringBuilder xml = new StringBuilder(); +// xml.append(""); +// JcrUtils.toSimpleXml(target, xml); +// String fileCsum = DigestUtils.digest(DigestUtils.MD5, +// xml.toString().getBytes(StandardCharsets.UTF_8)); +// writer.append(""); +// writer.append("md5sum:" + fileCsum); +// writer.append(""); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { session.exportDocumentView(target.getPath(), out, true, false); String fileCsum = DigestUtils.digest(DigestUtils.MD5, out.toByteArray()); @@ -83,18 +94,19 @@ public class OdkManifestServlet extends HttpServlet { } else if (node.isNodeType(OrxManifestName.mediaFile.get())) { if (node.isNodeType(NodeType.NT_ADDRESS)) { Node target = node.getProperty(Property.JCR_ID).getNode(); - StringBuilder xml = new StringBuilder(); - xml.append(""); - toSimpleXml(target, xml); - System.out.println(xml); - resp.getOutputStream().write(xml.toString().getBytes(StandardCharsets.UTF_8)); - resp.flushBuffer(); - -// try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { -// session.exportDocumentView(target.getPath(), out, true, false); -// System.out.println(new String(out.toByteArray(), StandardCharsets.UTF_8)); -// resp.getOutputStream().write(out.toByteArray()); -// } + +// StringBuilder xml = new StringBuilder(); +// xml.append(""); +// JcrUtils.toSimpleXml(target, xml); +// System.out.println(xml); +// resp.getOutputStream().write(xml.toString().getBytes(StandardCharsets.UTF_8)); +// resp.flushBuffer(); + + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + session.exportDocumentView(target.getPath(), out, true, false); + System.out.println(new String(out.toByteArray(), StandardCharsets.UTF_8)); + resp.getOutputStream().write(out.toByteArray()); + } } else { throw new IllegalArgumentException("Unsupported node " + node); } @@ -109,43 +121,6 @@ public class OdkManifestServlet extends HttpServlet { } - private static void toSimpleXml(Node node, StringBuilder sb) throws RepositoryException { - sb.append('<'); - String nodeName = node.getName(); - int colIndex = nodeName.indexOf(':'); - if (colIndex > 0) { - nodeName = nodeName.substring(colIndex + 1); - } - sb.append(nodeName); - PropertyIterator pit = node.getProperties(); - properties: while (pit.hasNext()) { - Property p = pit.nextProperty(); - if (p.isMultiple()) - continue properties; - String propertyName = p.getName(); - int pcolIndex = propertyName.indexOf(':'); - if (pcolIndex > 0) - continue properties; - sb.append(' '); - sb.append(propertyName); - sb.append('='); - sb.append('\"').append(p.getString()).append('\"'); - } - - if (node.hasNodes()) { - sb.append('>'); - NodeIterator children = node.getNodes(); - while (children.hasNext()) { - toSimpleXml(children.nextNode(), sb); - } - sb.append("'); - } else { - sb.append("/>"); - } - } - public void setRepository(Repository repository) { this.repository = repository; }