Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/QueryService.java @ 265:6c26e6474c0f
Added service to fetch sql query configurations.
author | Torsten Irländer <torsten.irlaender@intevation.de> |
---|---|
date | Wed, 24 Jul 2013 09:09:57 +0200 |
parents | |
children | 2e86f535f290 |
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 |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
3 import java.util.ArrayList; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
4 |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
5 import javax.enterprise.context.RequestScoped; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
6 import javax.inject.Inject; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
7 import javax.inject.Named; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
8 import javax.ws.rs.GET; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
9 import javax.ws.rs.Path; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
10 import javax.ws.rs.Produces; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
11 import javax.ws.rs.core.Context; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
12 import javax.ws.rs.core.HttpHeaders; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
13 import javax.ws.rs.core.UriInfo; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
14 |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
15 import de.intevation.lada.auth.Authentication; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
16 import de.intevation.lada.auth.AuthenticationException; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
17 import de.intevation.lada.model.LOrt; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
18 |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
19 /** |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
20 * 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
|
21 * LOrt objects. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
22 * |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
23 * @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
|
24 */ |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
25 @Path("/query") |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
26 @RequestScoped |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
27 public class QueryService |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
28 { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
29 /** |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
30 * The authorization module. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
31 */ |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
32 @Inject |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
33 @Named("ldapauth") |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
34 private Authentication authentication; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
35 |
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 * Request SQL-Queries |
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 * 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
|
40 * |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
41 * @param info The URL query parameters. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
42 * @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
|
43 * @return Response object. |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
44 */ |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
45 @GET |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
46 @Produces("text/json") |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
47 public Response filter( |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
48 @Context UriInfo info, |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
49 @Context HttpHeaders headers |
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 try { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
52 if (!authentication.isAuthorizedUser(headers)) { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
53 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
|
54 } |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
55 String queries = this.loadQueryConfig(); |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
56 Response response = new Response(true, 200, queries); |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
57 return response; |
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 catch(AuthenticationException ae) { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
60 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
|
61 } |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
62 } |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
63 |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
64 private String loadQueryConfig() { |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
65 String query = "[]"; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
66 return query; |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
67 } |
6c26e6474c0f
Added service to fetch sql query configurations.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
68 } |