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 06826962a97523401764032233301c1a4ef3bc7e..9d1812cabfb6b8f13cdf316206b8c29ec45542bd 100644 (file)
@@ -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);
                                }
                        }