Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/query/QueryTools.java @ 1028:1c41c7b8f7c2 schema-update
Updated server application to new database model. THIS IS STILL WIP!!!
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 08 Jul 2016 15:32:36 +0200 |
parents | 6ab55e59cfae |
children | 3a5a9a0492d1 |
rev | line source |
---|---|
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 */ |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 package de.intevation.lada.query; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 |
431
83b92b475d9d
Moved config file for queries and read the file via stream from resources.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
426
diff
changeset
|
10 import java.io.InputStream; |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 import java.io.StringReader; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 import java.util.ArrayList; |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
13 import java.util.HashMap; |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 import java.util.List; |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
15 import java.util.Map; |
805
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
16 import java.util.Scanner; |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
18 import javax.inject.Inject; |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 import javax.json.Json; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 import javax.json.JsonArray; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 import javax.json.JsonException; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 import javax.json.JsonObject; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 import javax.json.JsonReader; |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
24 import javax.persistence.EntityManager; |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
25 import javax.ws.rs.core.MultivaluedMap; |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
27 import org.apache.log4j.Logger; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
28 |
1028
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
974
diff
changeset
|
29 import de.intevation.lada.model.stammdaten.Filter; |
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
974
diff
changeset
|
30 import de.intevation.lada.model.stammdaten.Query; |
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
974
diff
changeset
|
31 import de.intevation.lada.model.stammdaten.Result; |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
32 import de.intevation.lada.util.annotation.RepositoryConfig; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
33 import de.intevation.lada.util.data.QueryBuilder; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
34 import de.intevation.lada.util.data.Repository; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
35 import de.intevation.lada.util.data.RepositoryType; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
36 |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 /** |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 * Utility class to handle the SQL query configuration. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 */ |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 public class QueryTools |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 { |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
45 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
46 @Inject |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
47 @RepositoryConfig(type=RepositoryType.RO) |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
48 private Repository repository; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
49 |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
50 private static String PROBE_CONFIG = "/probequery.json"; |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
51 private static String MESSPROGRAMM_CONFIG = "/messprogrammquery.json"; |
813
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
52 private static String STAMMDATEN_CONFIG = "/stammdatenquery.json"; |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
53 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
54 @Inject |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
55 private Logger logger; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
56 |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 /** |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 * Read the config file using the system property |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 * "de.intevation.lada.sqlconfig". |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 * @return The file content. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 */ |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
63 public static String readConfigFile(String file) { |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 try { |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
65 InputStream inputStream = QueryConfig.class.getResourceAsStream(file); |
805
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
66 Scanner scanner = new Scanner(inputStream, "UTF-8"); |
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
67 scanner.useDelimiter("\\A"); |
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
68 String configString = scanner.next(); |
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
69 scanner.close(); |
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
70 return configString; |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 } |
805
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
72 catch (Exception ioe) { |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 ioe.printStackTrace(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 /** |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 * Get the configuration objects. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 * First reads the config file and creates {@link QueryConfig} objects |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 * from JSON. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 * @return List of {@link QueryConfig} objects. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 */ |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
85 private static List<QueryConfig> getConfig(String file) { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
86 String content = readConfigFile(file); |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 if (content == null) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 List<QueryConfig> configs = new ArrayList<QueryConfig>(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
91 try { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
92 JsonReader reader = Json.createReader(new StringReader(content)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
93 JsonArray queries = reader.readArray(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
94 for (int i = 0; i < queries.size(); i++) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
95 JsonObject query = queries.getJsonObject(i); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
96 QueryConfig qConf = new QueryConfig(); |
452
819747a8d037
Changed query id from integer to String. Updated query 1 & 2.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
431
diff
changeset
|
97 qConf.setId(query.getString("id")); |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
98 qConf.setName(query.getString("name")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
99 qConf.setDescription(query.getString("description")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 qConf.setSql(query.getString("sql")); |
813
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
101 qConf.setType(query.getString("type")); |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
102 JsonArray filters = query.getJsonArray("filters"); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
103 List<QueryFilter> qFilters = new ArrayList<QueryFilter>(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 for (int j = 0; j < filters.size(); j++) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
105 JsonObject filter = filters.getJsonObject(j); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
106 QueryFilter qFilter = new QueryFilter(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
107 qFilter.setDataIndex(filter.getString("dataIndex")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
108 qFilter.setType(filter.getString("type")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
109 qFilter.setLabel(filter.getString("label")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
110 qFilter.setMultiSelect(filter.getBoolean("multiselect", false)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
111 qFilters.add(qFilter); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
112 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
113 qConf.setFilters(qFilters); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
114 JsonArray results = query.getJsonArray("result"); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
115 List<ResultConfig> sResults = new ArrayList<ResultConfig>(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
116 for (int k = 0; k < results.size(); k++) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
117 JsonObject result = results.getJsonObject(k); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
118 ResultConfig config = new ResultConfig(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
119 config.setDataIndex(result.getString("dataIndex")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
120 config.setHeader(result.getString("header")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
121 config.setWidth(result.getInt("width", 100)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
122 config.setFlex(result.getInt("flex", 0)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
123 sResults.add(config); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
124 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
125 qConf.setResults(sResults); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
126 configs.add(qConf); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
127 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
128 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
129 catch (JsonException e) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
130 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
131 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
132 return configs; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
133 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
134 |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
135 public static List<QueryConfig> getProbeConfig() { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
136 return getConfig(PROBE_CONFIG); |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
137 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
138 |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
139 public static List<QueryConfig> getMessprogrammConfig() { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
140 return getConfig(MESSPROGRAMM_CONFIG); |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
141 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
142 |
813
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
143 public static List<QueryConfig> getStammdatenConfig() { |
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
144 return getConfig(STAMMDATEN_CONFIG); |
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
145 } |
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
146 |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
147 /** |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
148 * Get a query by id. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
149 * First reads the config file and returns the {@link QueryConfig} |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
150 * identified by the given id. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
151 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
152 * @param id {@link QueryConfig} id. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
153 * @return The query config as JSON object or null if no object was found. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
154 */ |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
155 public static JsonObject getQueryById(String id) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
156 try { |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
157 String content = readConfigFile(PROBE_CONFIG); |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
158 if (content != null) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
159 JsonReader reader = Json.createReader(new StringReader(content)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
160 JsonArray queries = reader.readArray(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 for (int i = 0; i < queries.size(); i++) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
162 JsonObject query = queries.getJsonObject(i); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
163 if (query.getString("id").equals(id)) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
164 return query; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
165 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
166 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
167 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
168 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
169 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
170 catch (JsonException e) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
171 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
172 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
173 } |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
174 |
945
60648364134e
Backed out changeset af0883b73551
Tom Gottfried <tom@intevation.de>
parents:
944
diff
changeset
|
175 public List<Map<String, Object>> getResultForQuery(MultivaluedMap<String, String> params, Integer qId, String type) { |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
176 QueryBuilder<Query> builder = new QueryBuilder<Query>( |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
177 repository.entityManager("stamm"), |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
178 Query.class |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
179 ); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
180 builder.and("id", qId); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
181 Query query = repository.filterPlain(builder.getQuery(), "stamm").get(0); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
182 if (!query.getType().equals(type)) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
183 return null; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
184 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
185 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
186 String sql = query.getSql(); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
187 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
188 List<Filter> filters = query.getFilters(); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
189 QueryBuilder<Result> rBuilder = new QueryBuilder<Result>( |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
190 repository.entityManager("stamm"), |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
191 Result.class |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
192 ); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
193 rBuilder.and("query", qId); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
194 rBuilder.orderBy("index", true); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
195 List<Result> results = repository.filterPlain(rBuilder.getQuery(), "stamm"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
196 Result idResult = new Result(); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
197 idResult.setDataIndex("id"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
198 results.add(0, idResult); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
199 if (params.containsKey("sort")) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
200 String sort = params.getFirst("sort"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
201 logger.debug("Sort parameter: " + sort); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
202 JsonReader reader = Json.createReader(new StringReader(sort)); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
203 JsonObject sortProperties = reader.readArray().getJsonObject(0); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
204 sql += " ORDER BY "; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
205 sql += sortProperties.getJsonString("property").getString() + " "; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
206 sql += sortProperties.getJsonString("direction").getString(); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
207 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
208 javax.persistence.Query q = prepareQuery( |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
209 sql, |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
210 filters, |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
211 params, |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
212 repository.entityManager("land")); |
856
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
213 if (q == null) { |
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
214 return new ArrayList(); |
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
215 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
216 return prepareResult(q.getResultList(), results); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
217 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
218 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
219 public javax.persistence.Query prepareQuery( |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
220 String sql, |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
221 List<Filter> filters, |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
222 MultivaluedMap<String, String> params, |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
223 EntityManager manager |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
224 ) { |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
225 javax.persistence.Query query = manager.createNativeQuery(sql); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
226 for (Filter filter: filters) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
227 List<String> param = params.get(filter.getDataIndex()); |
856
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
228 if (param == null) { |
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
229 return null; |
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
230 } |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
231 List<String> clean = new ArrayList<String>(); |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
232 for(String p : param) { |
893
9258cce7bcbd
Replaced replaceable character for 'SIMILAR TO' clause in queries
Raimund Renkert <raimund.renkert@intevation.de>
parents:
856
diff
changeset
|
233 p = p.trim(); |
974
6ab55e59cfae
Fix multiselect delimiter.
Tom Gottfried <tom@intevation.de>
parents:
945
diff
changeset
|
234 // replace multiSelect-delimiter set by ExtJS with |
6ab55e59cfae
Fix multiselect delimiter.
Tom Gottfried <tom@intevation.de>
parents:
945
diff
changeset
|
235 // alternation metacharacter for PostgreSQL SIMILAR TO |
6ab55e59cfae
Fix multiselect delimiter.
Tom Gottfried <tom@intevation.de>
parents:
945
diff
changeset
|
236 clean.add(p.replace(",", "|")); |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
237 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
238 query.setParameter(filter.getDataIndex(), clean); |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
239 } |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
240 return query; |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
241 } |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
242 |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
243 public List<Map<String, Object>> prepareResult( |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
244 List<Object[]> result, |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
245 List<Result> names |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
246 ) { |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
247 List<Map<String, Object>> ret = new ArrayList<Map<String, Object>>(); |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
248 for (Object[] row: result) { |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
249 Map<String, Object> set = new HashMap<String, Object>(); |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
250 for (int i = 0; i < row.length; i++) { |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
251 set.put(names.get(i).getDataIndex(), row[i]); |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
252 } |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
253 ret.add(set); |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
254 } |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
255 return ret; |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
256 } |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
257 |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
258 public static JsonObject getMpQueryById(String id) { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
259 try { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
260 String content = readConfigFile(MESSPROGRAMM_CONFIG); |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
261 if (content != null) { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
262 JsonReader reader = Json.createReader(new StringReader(content)); |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
263 JsonArray queries = reader.readArray(); |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
264 for (int i = 0; i < queries.size(); i++) { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
265 JsonObject query = queries.getJsonObject(i); |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
266 if (query.getString("id").equals(id)) { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
267 return query; |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
268 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
269 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
270 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
271 return null; |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
272 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
273 catch (JsonException e) { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
274 return null; |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
275 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
276 } |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
277 } |