Add display column in ODK CSV queries
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 21 Jun 2023 04:58:29 +0000 (06:58 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 21 Jun 2023 04:58:29 +0000 (06:58 +0200)
org.argeo.app.servlet.odk/src/org/argeo/app/servlet/odk/OdkManifestServlet.java

index 36e8770bba6fa929feb8bceeaabbb3daf3dd5eee..6e145c2b951fb0f87013e3887b29258a181973e9 100644 (file)
@@ -136,7 +136,13 @@ public class OdkManifestServlet extends HttpServlet {
                if (target.isNodeType(NodeType.NT_QUERY)) {
                        Query query = target.getSession().getWorkspace().getQueryManager().getQuery(target);
                        QueryResult queryResult = query.execute();
-                       String[] columnNames = queryResult.getColumnNames();
+                       List<String> columnNames = new ArrayList<>();
+                       for (String c : queryResult.getColumnNames()) {
+                               columnNames.add(c);
+                       }
+                       // TODO make it more configurable
+                       columnNames.add("display");
+
                        if (EntityMimeType.XML.equals(mimeType)) {
                        } else if (EntityMimeType.CSV.equals(mimeType)) {
                                CsvWriter csvWriter = new CsvWriter(out, charset);
@@ -150,12 +156,14 @@ public class OdkManifestServlet extends HttpServlet {
                                                for (Value value : values) {
                                                        lst.add(value.getString());
                                                }
+                                               // display
+                                               lst.add(row.getValue("name").getString() + " (" + row.getValue("label").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++)
+                                       for (int i = 0; i < columnNames.size(); i++)
                                                lst.add("-");
                                        csvWriter.writeLine(lst);
                                }