X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.servlet.odk%2Fsrc%2Forg%2Fargeo%2Fapp%2Fservlet%2Fodk%2FOdkManifestServlet.java;h=4df76ea0a685e56e274d03adece3d72115fff85e;hb=6f8eb0aefe75025ee896498615cb1275f53d7f5b;hp=06826962a97523401764032233301c1a4ef3bc7e;hpb=6562d5f99ebb2dd850468b6404cce9b80c0c4ff6;p=gpl%2Fargeo-suite.git
diff --git a/org.argeo.app.servlet.odk/src/org/argeo/app/servlet/odk/OdkManifestServlet.java b/org.argeo.app.servlet.odk/src/org/argeo/app/servlet/odk/OdkManifestServlet.java
index 0682696..4df76ea 100644
--- a/org.argeo.app.servlet.odk/src/org/argeo/app/servlet/odk/OdkManifestServlet.java
+++ b/org.argeo.app.servlet.odk/src/org/argeo/app/servlet/odk/OdkManifestServlet.java
@@ -33,10 +33,10 @@ import org.argeo.app.api.EntityMimeType;
import org.argeo.app.odk.OrxManifestName;
import org.argeo.cms.auth.RemoteAuthUtils;
import org.argeo.cms.servlet.ServletHttpRequest;
+import org.argeo.cms.util.CsvWriter;
+import org.argeo.cms.util.DigestUtils;
import org.argeo.jcr.Jcr;
import org.argeo.jcr.JcrException;
-import org.argeo.util.CsvWriter;
-import org.argeo.util.DigestUtils;
/** Describe additional files. */
public class OdkManifestServlet extends HttpServlet {
@@ -91,21 +91,13 @@ public class OdkManifestServlet extends HttpServlet {
MessageDigest messageDigest = MessageDigest.getInstance(DigestUtils.MD5);
// TODO cache a temp file ?
- try (DigestOutputStream out = new DigestOutputStream(new NullOutputStream(),
+ try (DigestOutputStream out = new DigestOutputStream(NullOutputStream.NULL_OUTPUT_STREAM,
messageDigest)) {
writeMediaFile(out, target, mimeType, charset);
writer.append("");
writer.append("md5sum:" + DigestUtils.toHexString(out.getMessageDigest().digest()));
writer.append("");
}
-
-// try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
-// session.exportDocumentView(target.getPath(), out, true, false);
-// String fileCsum = DigestUtils.digest(DigestUtils.MD5, out.toByteArray());
-// writer.append("");
-// writer.append("md5sum:" + fileCsum);
-// writer.append("");
-// }
writer.append("" + protocol + "://" + serverName
+ (serverPort == 80 || serverPort == 443 ? "" : ":" + serverPort)
+ "/api/odk/formManifest" + file.getPath() + "");
@@ -123,11 +115,6 @@ public class OdkManifestServlet extends HttpServlet {
Node target = node.getProperty(Property.JCR_ID).getNode();
writeMediaFile(resp.getOutputStream(), target, mimeType, charset);
-// 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);
}
@@ -155,13 +142,21 @@ public class OdkManifestServlet extends HttpServlet {
CsvWriter csvWriter = new CsvWriter(out, charset);
csvWriter.writeLine(columnNames);
RowIterator rit = queryResult.getRows();
- while (rit.hasNext()) {
- Row row = rit.nextRow();
- Value[] values = row.getValues();
- List lst = new ArrayList<>();
- for (Value value : values) {
- lst.add(value.getString());
+ if (rit.hasNext()) {
+ while (rit.hasNext()) {
+ Row row = rit.nextRow();
+ Value[] values = row.getValues();
+ List lst = new ArrayList<>();
+ for (Value value : values) {
+ lst.add(value.getString());
+ }
+ csvWriter.writeLine(lst);
}
+ } else {
+ // corner case of an empty initial database
+ List lst = new ArrayList<>();
+ for (int i = 0; i < columnNames.length; i++)
+ lst.add("-");
csvWriter.writeLine(lst);
}
}