Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/QueryService.java @ 298:93b12b077edf
Use the new model and utility classes in queryservice.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Thu, 15 Aug 2013 15:19:47 +0200 |
parents | 5143a9604fb9 |
children | f3d0894d9bfc |
rev | line source |
---|---|
265
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.rest; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
2 |
298
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
3 import java.io.IOException; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
4 import java.nio.ByteBuffer; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
5 import java.nio.charset.Charset; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
6 import java.nio.file.Files; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
7 import java.nio.file.Paths; |
265
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
8 import java.util.ArrayList; |
267
df168246a4d2
Add Dummy Query Configuration. Needs to be replaced with w more simple
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
266
diff
changeset
|
9 import java.util.List; |
265
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
10 |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
11 import javax.enterprise.context.RequestScoped; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
12 import javax.inject.Inject; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
13 import javax.inject.Named; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
14 import javax.ws.rs.GET; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
15 import javax.ws.rs.Path; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
16 import javax.ws.rs.Produces; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
17 import javax.ws.rs.core.Context; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
18 import javax.ws.rs.core.HttpHeaders; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
19 import javax.ws.rs.core.UriInfo; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
20 |
298
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
21 import org.json.JSONArray; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
22 import org.json.JSONException; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
23 import org.json.JSONObject; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
24 |
265
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
25 import de.intevation.lada.auth.Authentication; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
26 import de.intevation.lada.auth.AuthenticationException; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
27 import de.intevation.lada.model.LOrt; |
298
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
28 import de.intevation.lada.model.query.QueryConfig; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
29 import de.intevation.lada.model.query.QueryFilter; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
30 import de.intevation.lada.model.query.ResultConfig; |
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
31 import de.intevation.lada.utils.QueryTools; |
267
df168246a4d2
Add Dummy Query Configuration. Needs to be replaced with w more simple
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
266
diff
changeset
|
32 |
265
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
33 /** |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
34 * This class produces a RESTful service to read, write and update |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
35 * LOrt objects. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
36 * |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
37 * @author <a href="mailto:torsten.irlaender@intevation.de">Torsten Irländer</a> |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
38 */ |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
39 @Path("/query") |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
40 @RequestScoped |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
41 public class QueryService |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
42 { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
43 /** |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
44 * The authorization module. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
45 */ |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
46 @Inject |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
47 @Named("ldapauth") |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
48 private Authentication authentication; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
49 |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
50 /** |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
51 * Request SQL-Queries |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
52 * |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
53 * Query parameters are used for the filter in form of key-value pairs. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
54 * |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
55 * @param info The URL query parameters. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
56 * @param headers The HTTP header containing authorization information. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
57 * @return Response object. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
58 */ |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
59 @GET |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
60 @Produces("text/json") |
298
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
61 public Response get( |
265
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
62 @Context UriInfo info, |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
63 @Context HttpHeaders headers |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
64 ) { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
65 try { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
66 if (!authentication.isAuthorizedUser(headers)) { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
67 return new Response(false, 699, new ArrayList<LOrt>()); |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
68 } |
298
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
69 Response response = new Response(true, 200, this.loadQueryConfig()); |
265
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
70 return response; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
71 } |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
72 catch(AuthenticationException ae) { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
73 return new Response(false, 699, new ArrayList<LOrt>()); |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
74 } |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
75 } |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
76 |
268
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
77 private List<QueryConfig> loadQueryConfig() { |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
78 /* Typicall available fields |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
79 {header: 'Datenbasis', dataIndex: 'datenbasisId', width: 70}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
80 {header: 'MPL', dataIndex: 'mplId', width: 50}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
81 {header: 'UWB', dataIndex: 'umwId', width: 50}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
82 {header: 'MMT', dataIndex: 'messmethode'}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
83 {header: 'HPNR', dataIndex: 'hauptprobenNr'}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
84 {header: 'NPNR', dataIndex: 'nebenprobenNr'}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
85 {header: 'E.Gemeinde', dataIndex: 'bezeichnung', flex: 1}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
86 {header: 'Ursprungsgemeinde', dataIndex: 'kreis', flex: 1}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
87 {header: 'ProbeID', dataIndex: 'probeId'}, |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
88 {header: 'MST', dataIndex: 'mstId', width: 50} |
58e1ed2ddbbd
Restructured the Dummy Query configuration to make it more feel like the EXT
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
267
diff
changeset
|
89 */ |
298
93b12b077edf
Use the new model and utility classes in queryservice.
Raimund Renkert <rrenkert@intevation.de>
parents:
269
diff
changeset
|
90 return QueryTools.getConfig(); |
266
2e86f535f290
Added basic query configuration sekeleton
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
265
diff
changeset
|
91 } |
265
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
92 } |