changeset 297:dc2e1668a179

New utility class for creating and reading query configs.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 15 Aug 2013 15:19:02 +0200 (2013-08-15)
parents b196ef9d8645
children 93b12b077edf
files src/main/java/de/intevation/lada/utils/QueryTools.java
diffstat 1 files changed, 99 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/intevation/lada/utils/QueryTools.java	Thu Aug 15 15:19:02 2013 +0200
@@ -0,0 +1,99 @@
+package de.intevation.lada.utils;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import de.intevation.lada.model.query.QueryConfig;
+import de.intevation.lada.model.query.QueryFilter;
+import de.intevation.lada.model.query.ResultConfig;
+
+
+public class QueryTools
+{
+    public static String readConfigFile() {
+        String file = System.getProperty("de.intevation.lada.sqlconfig");
+        try {
+            byte[] encoded = Files.readAllBytes(Paths.get(file));
+            Charset encoding = Charset.defaultCharset();
+            return encoding.decode(ByteBuffer.wrap(encoded)).toString();
+        }
+        catch (IOException ioe) {
+            return null;
+        }
+    }
+
+    public static List<QueryConfig> getConfig() {
+        String content = readConfigFile();
+        if (content == null) {
+            return null;
+        }
+        List<QueryConfig> configs = new ArrayList<QueryConfig>();
+        JSONArray queries;
+        try {
+            queries = new JSONArray(content);
+            for (int i = 0; i < queries.length(); i++) {
+                JSONObject query = queries.getJSONObject(i);
+                QueryConfig qConf = new QueryConfig();
+                qConf.setId(query.getInt("id"));
+                qConf.setName(query.getString("name"));
+                qConf.setDescription(query.getString("description"));
+                qConf.setSql(query.getString("sql"));
+                JSONArray filters = query.getJSONArray("filters");
+                List<QueryFilter> qFilters = new ArrayList<QueryFilter>();
+                for (int j = 0; j < filters.length(); j++) {
+                    JSONObject filter = filters.getJSONObject(j);
+                    QueryFilter qFilter = new QueryFilter();
+                    qFilter.setDataIndex(filter.getString("dataIndex"));
+                    qFilter.setType(filter.getString("type"));
+                    qFilters.add(qFilter);
+                }
+                qConf.setFilters(qFilters);
+                JSONArray results = query.getJSONArray("result");
+                List<ResultConfig> sResults = new ArrayList<ResultConfig>();
+                for (int k = 0; k < results.length(); k++) {
+                    JSONObject result = results.getJSONObject(k);
+                    ResultConfig config = new ResultConfig();
+                    config.setDataIndex(result.getString("dataIndex"));
+                    config.setHeader(result.getString("header"));
+                    config.setWidth(result.optInt("width"));
+                    config.setFlex(result.optInt("flex"));
+                    sResults.add(config);
+                }
+                qConf.setResults(sResults);
+                configs.add(qConf);
+            }
+        }
+        catch (JSONException e) {
+            return null;
+        }
+        return configs;
+    }
+
+    public static JSONObject getQueryById(String id) {
+        try {
+            String content = readConfigFile();
+            if (content != null) {
+                JSONArray queries = new JSONArray(content);
+                for (int i = 0; i < queries.length(); i++) {
+                    JSONObject query = queries.getJSONObject(i);
+                    if (query.getString("id").equals(id)) {
+                        return query;
+                    }
+                }
+            }
+            return null;
+        }
+        catch (JSONException e) {
+            return null;
+        }
+    }
+}
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)