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 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)