Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/stamm/ProbenehmerService.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 | e134c13c4209 |
children | 3a5a9a0492d1 |
rev | line source |
---|---|
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 * |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 */ |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 package de.intevation.lada.rest.stamm; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 |
843
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
10 import java.util.List; |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
11 |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 import javax.enterprise.context.RequestScoped; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 import javax.inject.Inject; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 import javax.servlet.http.HttpServletRequest; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 import javax.ws.rs.DELETE; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 import javax.ws.rs.GET; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 import javax.ws.rs.POST; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
18 import javax.ws.rs.PUT; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 import javax.ws.rs.Path; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 import javax.ws.rs.PathParam; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 import javax.ws.rs.Produces; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 import javax.ws.rs.core.Context; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 import javax.ws.rs.core.HttpHeaders; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 import javax.ws.rs.core.MediaType; |
843
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
25 import javax.ws.rs.core.MultivaluedMap; |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 import javax.ws.rs.core.UriInfo; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 |
1028
1c41c7b8f7c2
Updated server application to new database model. THIS IS STILL WIP!!!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
939
diff
changeset
|
28 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:
939
diff
changeset
|
29 import de.intevation.lada.model.stammdaten.Probenehmer; |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 import de.intevation.lada.util.annotation.AuthorizationConfig; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 import de.intevation.lada.util.annotation.RepositoryConfig; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 import de.intevation.lada.util.auth.Authorization; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 import de.intevation.lada.util.auth.AuthorizationType; |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
34 import de.intevation.lada.util.data.QueryBuilder; |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 import de.intevation.lada.util.data.Repository; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 import de.intevation.lada.util.data.RepositoryType; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 import de.intevation.lada.util.rest.RequestMethod; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 import de.intevation.lada.util.rest.Response; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 /** |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 * REST service for Probenehmer objects. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 * <p> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 * The services produce data in the application/json media type. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 * A typical response holds information about the action performed and the data. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 * <pre> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 * <code> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 * { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 * "success": [boolean]; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 * "message": [string], |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 * "data":[{ |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 * "id": [number], |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 * "mstId": [string], |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 * "netzbetreiberId": [string] |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 * }], |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 * "errors": [object], |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 * "warnings": [object], |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 * "readonly": [boolean], |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 * "totalCount": [number] |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 * } |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 * </code> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 * </pre> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 * |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 */ |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 @Path("rest/probenehmer") |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 @RequestScoped |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 public class ProbenehmerService { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
69 /** |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
70 * The data repository granting read access. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 */ |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 @Inject |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 @RepositoryConfig(type=RepositoryType.RW) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 private Repository repository; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 @Inject |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 @AuthorizationConfig(type=AuthorizationType.HEADER) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 private Authorization authorization; |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 /** |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 * Get all Probenehmer objects. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 * <p> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 * Example: http://example.com/probenehmer |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 * |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
85 * @return Response object containing all objects. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
86 */ |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 @GET |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 @Path("/") |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 @Produces(MediaType.APPLICATION_JSON) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 public Response get( |
843
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
91 @Context HttpServletRequest request, |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
92 @Context UriInfo info |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
93 ) { |
843
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
94 MultivaluedMap<String, String> params = info.getQueryParameters(); |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
95 List<Probenehmer> nehmer = |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
96 repository.getAllPlain(Probenehmer.class, "stamm"); |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
97 if (params.containsKey("qid")) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
98 Integer id = null; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
99 try { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
100 id = Integer.valueOf(params.getFirst("qid")); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
101 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
102 catch (NumberFormatException e) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
103 return new Response(false, 603, "Not a valid filter id"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
104 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
105 QueryBuilder<Filter> fBuilder = new QueryBuilder<Filter>( |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
106 repository.entityManager("stamm"), |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
107 Filter.class |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
108 ); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
109 fBuilder.and("query", id); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
110 List<Filter> filters = repository.filterPlain(fBuilder.getQuery(), "stamm"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
111 QueryBuilder<Probenehmer> builder = |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
112 new QueryBuilder<Probenehmer>( |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
113 repository.entityManager("stamm"), |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
114 Probenehmer.class |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
115 ); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
116 for (Filter filter: filters) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
117 String param = params.get(filter.getDataIndex()).get(0); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
118 if (param == null || param.isEmpty()) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
119 continue; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
120 } |
919
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
121 if (filter.getMultiselect()) { |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
122 param = param.trim(); |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
123 String[] parts = param.split(","); |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
124 for (String part: parts) { |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
125 builder.or(filter.getDataIndex(), part); |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
126 } |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
127 } |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
128 else { |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
129 builder.or(filter.getDataIndex(), param); |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
130 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
131 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
132 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
133 nehmer = repository.filterPlain(builder.getQuery(), "stamm"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
134 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
843
diff
changeset
|
135 |
843
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
136 int size = nehmer.size(); |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
137 if (params.containsKey("start") && params.containsKey("limit")) { |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
138 int start = Integer.valueOf(params.getFirst("start")); |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
139 int limit = Integer.valueOf(params.getFirst("limit")); |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
140 int end = limit + start; |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
141 if (start + limit > nehmer.size()) { |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
142 end = nehmer.size(); |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
143 } |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
144 nehmer = nehmer.subList(start, end); |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
145 } |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
146 |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
147 for (Probenehmer p : nehmer) { |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
148 p.setReadonly( |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
149 !authorization.isAuthorized( |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
150 request, |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
151 p, |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
152 RequestMethod.POST, |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
153 Probenehmer.class)); |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
154 } |
670f58112734
Allow paging for editable stammdaten and set readonly attribute.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
836
diff
changeset
|
155 return new Response(true, 200, nehmer, size); |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
156 } |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
157 |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
158 /** |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
159 * Get a single Datenbasis object by id. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
160 * <p> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 * The id is appended to the URL as a path parameter. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
162 * <p> |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
163 * Example: http://example.com/probenehmer/{id} |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
164 * |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
165 * @return Response object containing a single object. |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
166 */ |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
167 @GET |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
168 @Path("/{id}") |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
169 @Produces(MediaType.APPLICATION_JSON) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
170 public Response getById( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
171 @Context HttpHeaders headers, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
172 @PathParam("id") String id |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
173 ) { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
174 return repository.getById( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
175 Probenehmer.class, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
176 Integer.valueOf(id), |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
177 "stamm"); |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
178 } |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
179 |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
180 @POST |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
181 @Path("/") |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
182 @Produces(MediaType.APPLICATION_JSON) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
183 public Response create( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
184 @Context HttpServletRequest request, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
185 Probenehmer probenehmer |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
186 ) { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
187 if (!authorization.isAuthorized( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
188 request, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
189 probenehmer, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
190 RequestMethod.POST, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
191 Probenehmer.class) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
192 ) { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
193 return new Response(false, 699, probenehmer); |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
194 } |
919
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
195 QueryBuilder<Probenehmer> builder = |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
196 new QueryBuilder<Probenehmer>( |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
197 repository.entityManager("stamm"), |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
198 Probenehmer.class |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
199 ); |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
200 builder.and("prnId", probenehmer.getPrnId()); |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
201 builder.and("netzbetreiberId", probenehmer.getNetzbetreiberId()); |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
202 |
919
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
203 List<Probenehmer> nehmer= |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
204 repository.filterPlain(builder.getQuery(), "stamm"); |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
205 if (nehmer.isEmpty()) { |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
206 return repository.create(probenehmer, "stamm"); |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
207 } |
e5a9c27047a4
Updated stammdaten services: allow multiselect filters and check duplicates
Raimund Renkert <raimund.renkert@intevation.de>
parents:
848
diff
changeset
|
208 return new Response(false, 672, null); |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
209 } |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
210 |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
211 @PUT |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
212 @Path("/{id}") |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
213 @Produces(MediaType.APPLICATION_JSON) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
214 public Response update( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
215 @Context HttpServletRequest request, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
216 Probenehmer probenehmer |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
217 ) { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
218 if (!authorization.isAuthorized( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
219 request, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
220 probenehmer, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
221 RequestMethod.PUT, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
222 Probenehmer.class) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
223 ) { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
224 return new Response(false, 699, probenehmer); |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
225 } |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
226 |
939
e134c13c4209
Removed check for duplicates in stammdatenservices (method: PUT).
Raimund Renkert <raimund.renkert@intevation.de>
parents:
919
diff
changeset
|
227 return repository.update(probenehmer, "stamm"); |
836
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
228 } |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
229 |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
230 @DELETE |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
231 @Path("/{id}") |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
232 @Produces(MediaType.APPLICATION_JSON) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
233 public Response delete( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
234 @Context HttpServletRequest request, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
235 @PathParam("id") String id |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
236 ) { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
237 Probenehmer probenehmer = repository.getByIdPlain( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
238 Probenehmer.class, Integer.valueOf(id), "stamm"); |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
239 if (probenehmer == null || |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
240 !authorization.isAuthorized( |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
241 request, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
242 probenehmer, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
243 RequestMethod.DELETE, |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
244 Probenehmer.class |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
245 ) |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
246 ) { |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
247 return new Response(false, 699, null); |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
248 } |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
249 return repository.delete(probenehmer, "stamm"); |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
250 } |
313bd1d227f1
Added services for stammdaten and updated models.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
251 } |