Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/stamm/QueryService.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 | b45141649eec |
children |
rev | line source |
---|---|
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 * |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 */ |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 package de.intevation.lada.rest.stamm; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
10 import java.util.List; |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
11 |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 import javax.enterprise.context.RequestScoped; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 import javax.inject.Inject; |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
14 import javax.servlet.http.HttpServletRequest; |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 import javax.ws.rs.GET; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 import javax.ws.rs.Path; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 import javax.ws.rs.Produces; |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
18 import javax.ws.rs.core.Context; |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 |
1028
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
20 import de.intevation.lada.model.stammdaten.Favorite; |
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
21 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:
915
diff
changeset
|
22 import de.intevation.lada.model.stammdaten.FilterValue; |
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
23 import de.intevation.lada.model.stammdaten.Query; |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
24 import de.intevation.lada.util.annotation.AuthorizationConfig; |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 import de.intevation.lada.util.annotation.RepositoryConfig; |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
26 import de.intevation.lada.util.auth.Authorization; |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
27 import de.intevation.lada.util.auth.AuthorizationType; |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
28 import de.intevation.lada.util.auth.UserInfo; |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 import de.intevation.lada.util.data.QueryBuilder; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 import de.intevation.lada.util.data.Repository; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 import de.intevation.lada.util.data.RepositoryType; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 import de.intevation.lada.util.rest.Response; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
34 |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 /** |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 * REST-Service for preconfigured queries. |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 * <p> |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 * The services produce data in the application/json media type. |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 * All HTTP methods use the authorization module to determine if the user is |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 * allowed to perform the requested action. |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 * A typical response holds information about the action performed and the data. |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 * <pre> |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 * <code> |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 * { |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 * "success": [boolean]; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 * "message": [string], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 * "data":[{ |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 * "id": [string], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 * "name": [string], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 * "description": [string], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 * "sql": [string], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 * "filters": [array], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 * "results": [array] |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 * }], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 * "errors": [object], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 * "warnings": [object], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 * "readonly": [boolean], |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 * "totalCount": [number] |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 * } |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 * </code> |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 * </pre> |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 * |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 */ |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 @Path("rest/query") |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 @RequestScoped |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 public class QueryService { |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
69 @Inject |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
70 @RepositoryConfig(type=RepositoryType.RO) |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 private Repository repository; |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
73 @Inject |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
74 @AuthorizationConfig(type=AuthorizationType.HEADER) |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
75 private Authorization authorization; |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
76 |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 /** |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 * Request all configured probe queries. |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 */ |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 @GET |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 @Path("/probe") |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 @Produces("application/json") |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
83 public Response getProbe( |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
84 @Context HttpServletRequest request |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
85 ) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
86 UserInfo userInfo = authorization.getInfo(request); |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 QueryBuilder<Query> builder = new QueryBuilder<Query>( |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 repository.entityManager("stamm"), |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 Query.class |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 ); |
1028
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
91 builder.and("typeId", 0); |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
92 List<Query> queries = repository.filterPlain(builder.getQuery(), "stamm"); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
93 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
94 markFavorites(queries, userInfo); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
95 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
96 setFilterValues(queries, 0); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
97 setFilterValues(queries, userInfo.getUserId()); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
98 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
99 return new Response(true, 200, queries); |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 } |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
101 |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
102 /** |
915
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
103 * Request all configured messung queries. |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
104 */ |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
105 @GET |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
106 @Path("/messung") |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
107 @Produces("application/json") |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
108 public Response getMessung( |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
109 @Context HttpServletRequest request |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
110 ) { |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
111 UserInfo userInfo = authorization.getInfo(request); |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
112 QueryBuilder<Query> builder = new QueryBuilder<Query>( |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
113 repository.entityManager("stamm"), |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
114 Query.class |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
115 ); |
1028
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
116 builder.and("typeId", 1); |
915
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
117 List<Query> queries = repository.filterPlain(builder.getQuery(), "stamm"); |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
118 |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
119 markFavorites(queries, userInfo); |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
120 |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
121 setFilterValues(queries, 0); |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
122 setFilterValues(queries, userInfo.getUserId()); |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
123 |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
124 return new Response(true, 200, queries); |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
125 } |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
126 |
b45141649eec
Added service to request messung queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
891
diff
changeset
|
127 /** |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
128 * Request all configured messprogramm queries. |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
129 */ |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
130 @GET |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
131 @Path("/messprogramm") |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
132 @Produces("application/json") |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
133 public Response getMessprogramm( |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
134 @Context HttpServletRequest request |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
135 ) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
136 UserInfo userInfo = authorization.getInfo(request); |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
137 QueryBuilder<Query> builder = new QueryBuilder<Query>( |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
138 repository.entityManager("stamm"), |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
139 Query.class |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
140 ); |
1028
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
141 builder.and("typeId", 2); |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
142 List<Query> queries = repository.filterPlain(builder.getQuery(), "stamm"); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
143 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
144 markFavorites(queries, userInfo); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
145 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
146 return new Response(true, 200, queries); |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
147 } |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
148 |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
149 /** |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
150 * Request all configured stammdaten queries. |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
151 */ |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
152 @GET |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
153 @Path("/stammdaten") |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
154 @Produces("application/json") |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
155 public Response getStammdaten( |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
156 @Context HttpServletRequest request |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
157 ) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
158 UserInfo userInfo = authorization.getInfo(request); |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
159 QueryBuilder<Query> builder = new QueryBuilder<Query>( |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
160 repository.entityManager("stamm"), |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 Query.class |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
162 ); |
1028
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
163 builder.or("typeId", 3); |
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
164 builder.or("typeId", 4); |
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
165 builder.or("typeId", 5); |
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
915
diff
changeset
|
166 builder.or("typeId", 6); |
857
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
167 List<Query> queries = repository.filterPlain(builder.getQuery(), "stamm"); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
168 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
169 markFavorites(queries, userInfo); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
170 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
171 return new Response(true, 200, queries); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
172 } |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
173 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
174 private void markFavorites(List<Query> queries, UserInfo userInfo) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
175 QueryBuilder<Favorite> fBuilder = new QueryBuilder<Favorite>( |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
176 repository.entityManager("stamm"), |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
177 Favorite.class |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
178 ); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
179 fBuilder.and("userId", userInfo.getUserId()); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
180 List<Favorite> favorites = repository.filterPlain(fBuilder.getQuery(), "stamm"); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
181 for (Favorite f : favorites) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
182 for (Query q : queries) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
183 if (q.getId().equals(f.getQueryId())) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
184 q.setFavorite(true); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
185 } |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
186 } |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
187 } |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
188 } |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
189 |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
190 private void setFilterValues(List<Query> queries, Integer userId) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
191 QueryBuilder<FilterValue> builder = new QueryBuilder<FilterValue>( |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
192 repository.entityManager("stamm"), |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
193 FilterValue.class |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
194 ); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
195 builder.and("userId", userId); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
196 for (Query q : queries) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
197 List<FilterValue> values = repository.filterPlain(builder.getQuery(), "stamm"); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
198 for (Filter f : q.getFilters()) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
199 for (FilterValue fv : values) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
200 if (fv.getFilterId().equals(f.getId())) { |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
201 f.setValue(fv.getValue()); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
202 } |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
203 } |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
204 } |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
205 builder = builder.getEmptyBuilder(); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
206 builder.and("userId", userId); |
c481688150e8
Create a new user object if not exists and use user authorization for queries.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
847
diff
changeset
|
207 } |
847
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
208 } |
35bbaf423128
Moved and updated the query service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
209 } |