Mercurial > lada > lada-server
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 |
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; + } + } +}