Deal with corner case of empty form query
[gpl/argeo-suite.git] / org.argeo.app.servlet.odk / src / org / argeo / app / servlet / odk / OdkManifestServlet.java
index 245e0f22d11cf19d3679024e2c49ccf14926c48b..9d1812cabfb6b8f13cdf316206b8c29ec45542bd 100644 (file)
@@ -95,7 +95,7 @@ public class OdkManifestServlet extends HttpServlet {
                                                                        messageDigest)) {
                                                                writeMediaFile(out, target, mimeType, charset);
                                                                writer.append("<hash>");
-                                                               writer.append("md5sum:" + DigestUtils.encodeHexString(out.getMessageDigest().digest()));
+                                                               writer.append("md5sum:" + DigestUtils.toHexString(out.getMessageDigest().digest()));
                                                                writer.append("</hash>");
                                                        }
 
@@ -155,13 +155,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<String> 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<String> lst = new ArrayList<>();
+                                               for (Value value : values) {
+                                                       lst.add(value.getString());
+                                               }
+                                               csvWriter.writeLine(lst);
                                        }
+                               } else {
+                                       // corner case of an empty initial database
+                                       List<String> lst = new ArrayList<>();
+                                       for (int i = 0; i < columnNames.length; i++)
+                                               lst.add("-");
                                        csvWriter.writeLine(lst);
                                }
                        }