Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/LMessungService.java @ 245:1963f002e4c0
Use a sequence to generate the id and create an id object in service.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Mon, 15 Jul 2013 13:22:55 +0200 |
parents | a31daefe49ea |
children | 04b5f401e871 |
rev | line source |
---|---|
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.rest; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
3 import java.util.ArrayList; |
227
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
4 import java.util.List; |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
5 |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import javax.enterprise.context.RequestScoped; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import javax.inject.Inject; |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
8 import javax.inject.Named; |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import javax.ws.rs.Consumes; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 import javax.ws.rs.GET; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import javax.ws.rs.POST; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import javax.ws.rs.PUT; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import javax.ws.rs.Path; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 import javax.ws.rs.Produces; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 import javax.ws.rs.core.Context; |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
16 import javax.ws.rs.core.HttpHeaders; |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 import javax.ws.rs.core.MultivaluedMap; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 import javax.ws.rs.core.UriInfo; |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
227
diff
changeset
|
20 import de.intevation.lada.auth.Authentication; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
227
diff
changeset
|
21 import de.intevation.lada.auth.AuthenticationException; |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
22 import de.intevation.lada.data.QueryBuilder; |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
23 import de.intevation.lada.data.Repository; |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 import de.intevation.lada.model.LMessung; |
245
1963f002e4c0
Use a sequence to generate the id and create an id object in service.
Raimund Renkert <rrenkert@intevation.de>
parents:
240
diff
changeset
|
25 import de.intevation.lada.model.LMessungId; |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 /** |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
28 * This class produces a RESTful service to read, write and update |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
29 * LMessung objects. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
30 * |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 */ |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 @Path("/messung") |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 @RequestScoped |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 public class LMessungService |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 { |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 /** |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 * The Repository for LMessung. |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 */ |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 @Inject |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
41 @Named("lmessungrepository") |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
42 private Repository repository; |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
44 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
45 * The authorization module. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
46 */ |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
47 @Inject |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
48 @Named("ldapauth") |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
49 private Authentication authentication; |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 /** |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 * Request LMessung via a filter. |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 * |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 * Query parameters are used for the filter in form of key-value pairs. |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 * This filter can take the three parameters |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 * probe=$PROBEID (String) |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 * |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 * @param info The URL query parameters. |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 * @return JSON Object via Rest service. |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 */ |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 @GET |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 @Produces("text/json") |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
63 public Response filter( |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
64 @Context UriInfo info, |
211
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
65 @Context HttpHeaders headers |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
66 ) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
67 try { |
211
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
68 if (!authentication.isAuthorizedUser(headers)) { |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
69 return new Response(false, 699, new ArrayList<LMessung>()); |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
70 } |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
71 MultivaluedMap<String, String> params = info.getQueryParameters(); |
211
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
72 if (params.isEmpty() || !(params.containsKey("probeId"))) { |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
73 return new Response(false, 609, new ArrayList<LMessung>()); |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
74 } |
211
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
75 String probeId = params.getFirst("probeId"); |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
76 if (authentication.hasAccess(headers, probeId)) { |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
77 QueryBuilder<LMessung> builder = |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
78 new QueryBuilder<LMessung>( |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
79 repository.getEntityManager(), |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
80 LMessung.class); |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
81 builder.and("probeId", probeId); |
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
82 return repository.filter(builder.getQuery()); |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
83 } |
211
30d2aad7371e
Updated authorization in LMessung service filter.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
84 return new Response(false, 698, new ArrayList<LMessung>()); |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 } |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
86 catch(AuthenticationException ae) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
87 return new Response(false, 699, new ArrayList<LMessung>()); |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 } |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 } |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
91 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
92 * Update a LMessung object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
93 * |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
94 * @param messung The LMessung object to update. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
95 * @param headers The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
96 * @return Response object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
97 */ |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
98 @PUT |
240
a31daefe49ea
Adapted path for PUT requests
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
232
diff
changeset
|
99 @Path("/{messungId}/{probeId}") |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
100 @Produces("text/json") |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
101 @Consumes("application/json") |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
102 public Response update( |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
103 LMessung messung, |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
104 @Context HttpHeaders headers |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
105 ) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
106 try { |
212
5b232dab4b50
Renamed lprobeId to probeId in LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
211
diff
changeset
|
107 String probeId = messung.getProbeId(); |
227
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
108 int messungsId = messung.getId().getMessungsId(); |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
109 if (authentication.hasAccess(headers, probeId) && |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
110 !isReadOnly(probeId, messungsId)) { |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
111 return repository.update(messung); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
112 } |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
113 return new Response(false, 698, new ArrayList<LMessung>()); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
114 } |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
115 catch(AuthenticationException ae) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
116 return new Response(false, 699, new ArrayList<LMessung>()); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
117 } |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
118 } |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
119 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
120 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
121 * Create a new LMessung object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
122 * |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
123 * @param messung The new LMessung object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
124 * @param headers The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
125 * @return Response object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
208
diff
changeset
|
126 */ |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
127 @POST |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
128 @Produces("text/json") |
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
129 @Consumes("application/json") |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
130 public Response create( |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
131 LMessung messung, |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
132 @Context HttpHeaders headers |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
133 ) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
134 try { |
212
5b232dab4b50
Renamed lprobeId to probeId in LMessung.
Raimund Renkert <rrenkert@intevation.de>
parents:
211
diff
changeset
|
135 String probeId = messung.getProbeId(); |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
136 if (authentication.hasAccess(headers, probeId)) { |
245
1963f002e4c0
Use a sequence to generate the id and create an id object in service.
Raimund Renkert <rrenkert@intevation.de>
parents:
240
diff
changeset
|
137 LMessungId id = new LMessungId(); |
1963f002e4c0
Use a sequence to generate the id and create an id object in service.
Raimund Renkert <rrenkert@intevation.de>
parents:
240
diff
changeset
|
138 id.setProbeId(probeId); |
1963f002e4c0
Use a sequence to generate the id and create an id object in service.
Raimund Renkert <rrenkert@intevation.de>
parents:
240
diff
changeset
|
139 messung.setId(id); |
208
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
140 return repository.create(messung); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
141 } |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
142 return new Response(false, 698, new ArrayList<LMessung>()); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
143 } |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
144 catch(AuthenticationException ae) { |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
145 return new Response(false, 699, new ArrayList<LMessung>()); |
832e67663fd9
Added authorization to all services.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
146 } |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
147 } |
227
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
148 |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
149 private boolean isReadOnly(String probeId, Integer messungsId) { |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
150 QueryBuilder<LMessung> builder = |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
151 new QueryBuilder<LMessung>( |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
152 repository.getEntityManager(), |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
153 LMessung.class); |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
154 builder.and("probeId", probeId) |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
155 .and("messungsId", String.valueOf(messungsId)); |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
156 Response response = repository.filter(builder.getQuery()); |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
157 List<LMessung> messungen = (List<LMessung>) response.getData(); |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
158 if (messungen.isEmpty()) { |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
159 return true; |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
160 } |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
161 if (messungen.size() > 1) { |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
162 return true; |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
163 } |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
164 return messungen.get(0).isFertig(); |
ef4c0e646b16
Restrict access to LMessung and LMesswert by attribute 'fertig'.
Raimund Renkert <rrenkert@intevation.de>
parents:
212
diff
changeset
|
165 } |
129
dbb7064c1290
New service for LMessung. Provides GET(all, filter by 'probe'), POST(create) and PUT(update).
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
166 } |