Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/utils/QueryTools.java @ 302:71284b42ba39
Added label attribute to the QueryFilter
author | Torsten Irländer <torsten.irlaender@intevation.de> |
---|---|
date | Fri, 16 Aug 2013 12:27:43 +0200 |
parents | dc2e1668a179 |
children | b9295222ff06 |
rev | line source |
---|---|
297
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.utils; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import java.io.IOException; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 import java.nio.ByteBuffer; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 import java.nio.charset.Charset; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import java.nio.file.Files; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import java.nio.file.Paths; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 import java.util.ArrayList; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import java.util.List; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import org.json.JSONArray; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import org.json.JSONException; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import org.json.JSONObject; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 import de.intevation.lada.model.query.QueryConfig; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 import de.intevation.lada.model.query.QueryFilter; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 import de.intevation.lada.model.query.ResultConfig; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 public class QueryTools |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 public static String readConfigFile() { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 String file = System.getProperty("de.intevation.lada.sqlconfig"); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 try { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 byte[] encoded = Files.readAllBytes(Paths.get(file)); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 Charset encoding = Charset.defaultCharset(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 return encoding.decode(ByteBuffer.wrap(encoded)).toString(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 catch (IOException ioe) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 return null; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 public static List<QueryConfig> getConfig() { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 String content = readConfigFile(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 if (content == null) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 return null; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 List<QueryConfig> configs = new ArrayList<QueryConfig>(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 JSONArray queries; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 try { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 queries = new JSONArray(content); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 for (int i = 0; i < queries.length(); i++) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 JSONObject query = queries.getJSONObject(i); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 QueryConfig qConf = new QueryConfig(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 qConf.setId(query.getInt("id")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 qConf.setName(query.getString("name")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 qConf.setDescription(query.getString("description")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 qConf.setSql(query.getString("sql")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 JSONArray filters = query.getJSONArray("filters"); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 List<QueryFilter> qFilters = new ArrayList<QueryFilter>(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 for (int j = 0; j < filters.length(); j++) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 JSONObject filter = filters.getJSONObject(j); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 QueryFilter qFilter = new QueryFilter(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 qFilter.setDataIndex(filter.getString("dataIndex")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 qFilter.setType(filter.getString("type")); |
302
71284b42ba39
Added label attribute to the QueryFilter
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
297
diff
changeset
|
57 qFilter.setLabel(filter.getString("label")); |
297
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 qFilters.add(qFilter); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 qConf.setFilters(qFilters); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 JSONArray results = query.getJSONArray("result"); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 List<ResultConfig> sResults = new ArrayList<ResultConfig>(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 for (int k = 0; k < results.length(); k++) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 JSONObject result = results.getJSONObject(k); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 ResultConfig config = new ResultConfig(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 config.setDataIndex(result.getString("dataIndex")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 config.setHeader(result.getString("header")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 config.setWidth(result.optInt("width")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 config.setFlex(result.optInt("flex")); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 sResults.add(config); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 qConf.setResults(sResults); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 configs.add(qConf); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 catch (JSONException e) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 return null; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 return configs; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 public static JSONObject getQueryById(String id) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 try { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 String content = readConfigFile(); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 if (content != null) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 JSONArray queries = new JSONArray(content); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 for (int i = 0; i < queries.length(); i++) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 JSONObject query = queries.getJSONObject(i); |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 if (query.getString("id").equals(id)) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 return query; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
91 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
92 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 return null; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
95 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
96 catch (JSONException e) { |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
97 return null; |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
98 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
99 } |
dc2e1668a179
New utility class for creating and reading query configs.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
100 } |