Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/query/QueryTools.java @ 944:af0883b73551
Fix typo.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 18 May 2016 14:12:41 +0200 |
parents | 9258cce7bcbd |
children | 60648364134e |
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 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
29 import de.intevation.lada.model.stamm.Filter; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
30 import de.intevation.lada.model.stamm.Query; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
31 import de.intevation.lada.model.stamm.Result; |
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 import de.intevation.lada.util.rest.Response; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
37 |
426
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 /** |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 * 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
|
41 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 * @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
|
43 */ |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 public class QueryTools |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 { |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
46 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
47 @Inject |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
48 @RepositoryConfig(type=RepositoryType.RO) |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
49 private Repository repository; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
50 |
636
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 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
|
52 private static String MESSPROGRAMM_CONFIG = "/messprogrammquery.json"; |
813
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
53 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
|
54 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
55 @Inject |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
56 private Logger logger; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
57 |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 /** |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 * 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
|
60 * "de.intevation.lada.sqlconfig". |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 * @return The file content. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 */ |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
64 public static String readConfigFile(String file) { |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 try { |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
66 InputStream inputStream = QueryConfig.class.getResourceAsStream(file); |
805
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
67 Scanner scanner = new Scanner(inputStream, "UTF-8"); |
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
68 scanner.useDelimiter("\\A"); |
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
69 String configString = scanner.next(); |
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
70 scanner.close(); |
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
71 return configString; |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 } |
805
a549700c338d
Fixed encoding problem for query configuration.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
636
diff
changeset
|
73 catch (Exception ioe) { |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 ioe.printStackTrace(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 return null; |
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 /** |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 * Get the configuration objects. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 * 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
|
82 * from JSON. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 * @return List of {@link QueryConfig} objects. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
85 */ |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
86 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
|
87 String content = readConfigFile(file); |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 if (content == null) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
91 List<QueryConfig> configs = new ArrayList<QueryConfig>(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
92 try { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
93 JsonReader reader = Json.createReader(new StringReader(content)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
94 JsonArray queries = reader.readArray(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
95 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
|
96 JsonObject query = queries.getJsonObject(i); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
97 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
|
98 qConf.setId(query.getString("id")); |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
99 qConf.setName(query.getString("name")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 qConf.setDescription(query.getString("description")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
101 qConf.setSql(query.getString("sql")); |
813
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
102 qConf.setType(query.getString("type")); |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
103 JsonArray filters = query.getJsonArray("filters"); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 List<QueryFilter> qFilters = new ArrayList<QueryFilter>(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
105 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
|
106 JsonObject filter = filters.getJsonObject(j); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
107 QueryFilter qFilter = new QueryFilter(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
108 qFilter.setDataIndex(filter.getString("dataIndex")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
109 qFilter.setType(filter.getString("type")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
110 qFilter.setLabel(filter.getString("label")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
111 qFilter.setMultiSelect(filter.getBoolean("multiselect", false)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
112 qFilters.add(qFilter); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
113 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
114 qConf.setFilters(qFilters); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
115 JsonArray results = query.getJsonArray("result"); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
116 List<ResultConfig> sResults = new ArrayList<ResultConfig>(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
117 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
|
118 JsonObject result = results.getJsonObject(k); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
119 ResultConfig config = new ResultConfig(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
120 config.setDataIndex(result.getString("dataIndex")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
121 config.setHeader(result.getString("header")); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
122 config.setWidth(result.getInt("width", 100)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
123 config.setFlex(result.getInt("flex", 0)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
124 sResults.add(config); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
125 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
126 qConf.setResults(sResults); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
127 configs.add(qConf); |
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 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
130 catch (JsonException e) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
131 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
132 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
133 return configs; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
134 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
135 |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
136 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
|
137 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
|
138 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
139 |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
140 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
|
141 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
|
142 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
143 |
813
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
144 public static List<QueryConfig> getStammdatenConfig() { |
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
145 return getConfig(STAMMDATEN_CONFIG); |
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
146 } |
5155b0b375cd
Added stammdaten queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
805
diff
changeset
|
147 |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
148 /** |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
149 * Get a query by id. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
150 * 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
|
151 * identified by the given id. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
152 * |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
153 * @param id {@link QueryConfig} id. |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
154 * @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
|
155 */ |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
156 public static JsonObject getQueryById(String id) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
157 try { |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
158 String content = readConfigFile(PROBE_CONFIG); |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
159 if (content != null) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
160 JsonReader reader = Json.createReader(new StringReader(content)); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 JsonArray queries = reader.readArray(); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
162 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
|
163 JsonObject query = queries.getJsonObject(i); |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
164 if (query.getString("id").equals(id)) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
165 return query; |
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 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
169 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
170 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
171 catch (JsonException e) { |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
172 return null; |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
173 } |
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
174 } |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
175 |
944 | 176 public List<Map<String, Object>> getResultForQuery( |
177 MultivaluedMap<String, String> params, | |
178 Integer qId, | |
179 String type | |
180 ) { | |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
181 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
|
182 repository.entityManager("stamm"), |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
183 Query.class |
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 builder.and("id", qId); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
186 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
|
187 if (!query.getType().equals(type)) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
188 return null; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
189 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
190 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
191 String sql = query.getSql(); |
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 List<Filter> filters = query.getFilters(); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
194 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
|
195 repository.entityManager("stamm"), |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
196 Result.class |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
197 ); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
198 rBuilder.and("query", qId); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
199 rBuilder.orderBy("index", true); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
200 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
|
201 Result idResult = new Result(); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
202 idResult.setDataIndex("id"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
203 results.add(0, idResult); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
204 if (params.containsKey("sort")) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
205 String sort = params.getFirst("sort"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
206 logger.debug("Sort parameter: " + sort); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
207 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
|
208 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
|
209 sql += " ORDER BY "; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
210 sql += sortProperties.getJsonString("property").getString() + " "; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
211 sql += sortProperties.getJsonString("direction").getString(); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
212 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
213 javax.persistence.Query q = prepareQuery( |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
214 sql, |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
215 filters, |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
216 params, |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
217 repository.entityManager("land")); |
856
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
218 if (q == null) { |
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
219 return new ArrayList(); |
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
220 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
221 return prepareResult(q.getResultList(), results); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
222 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
223 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
224 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
|
225 String sql, |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
226 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
|
227 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
|
228 EntityManager manager |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
229 ) { |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
230 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
|
231 for (Filter filter: filters) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
232 List<String> param = params.get(filter.getDataIndex()); |
856
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
233 if (param == null) { |
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
234 return null; |
c3a5e1ee63b8
Avoid NPEs.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
235 } |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
236 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
|
237 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
|
238 p = p.trim(); |
9258cce7bcbd
Replaced replaceable character for 'SIMILAR TO' clause in queries
Raimund Renkert <raimund.renkert@intevation.de>
parents:
856
diff
changeset
|
239 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
|
240 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
241 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
|
242 } |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
243 return query; |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
244 } |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
245 |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
246 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
|
247 List<Object[]> result, |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
813
diff
changeset
|
248 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
|
249 ) { |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
250 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
|
251 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
|
252 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
|
253 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
|
254 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
|
255 } |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
256 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
|
257 } |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
258 return ret; |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
452
diff
changeset
|
259 } |
636
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
260 |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
261 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
|
262 try { |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
263 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
|
264 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
|
265 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
|
266 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
|
267 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
|
268 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
|
269 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
|
270 return query; |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
271 } |
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 } |
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 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
|
277 return null; |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
278 } |
cdcb7a141529
Added new query config for messprogramme and serve it via QueryService.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
279 } |
426
7b3b9e5f040d
Added classes to handle serversite configured queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
280 } |