Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/LProbeService.java @ 232:d8a3d188046f
Renamed package authentication to auth.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 05 Jul 2013 13:24:13 +0200 |
parents | 9dae52dd8157 |
children | b619f6552f55 |
rev | line source |
---|---|
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
1 package de.intevation.lada.rest; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
2 |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
3 import java.util.ArrayList; |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
4 import java.util.List; |
17
4ed66a87c0c4
Added missing import.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
15
diff
changeset
|
5 import java.util.logging.Logger; |
15
624611a29348
Provide GET method to load a list of proben.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
8
diff
changeset
|
6 |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
7 import javax.enterprise.context.RequestScoped; |
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
8 import javax.inject.Inject; |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
9 import javax.inject.Named; |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
10 import javax.ws.rs.Consumes; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
11 import javax.ws.rs.GET; |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
12 import javax.ws.rs.POST; |
73
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
13 import javax.ws.rs.PUT; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
14 import javax.ws.rs.Path; |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
15 import javax.ws.rs.PathParam; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
16 import javax.ws.rs.Produces; |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
17 import javax.ws.rs.core.Context; |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
18 import javax.ws.rs.core.HttpHeaders; |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
19 import javax.ws.rs.core.MultivaluedMap; |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
20 import javax.ws.rs.core.UriInfo; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
21 |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
22 import de.intevation.lada.auth.Authentication; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
23 import de.intevation.lada.auth.AuthenticationException; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
24 import de.intevation.lada.auth.AuthenticationResponse; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
25 import de.intevation.lada.auth.Authorization; |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
26 import de.intevation.lada.data.QueryBuilder; |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
27 import de.intevation.lada.data.Repository; |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
28 import de.intevation.lada.model.LProbe; |
139
fda177c59d1f
Updated service and repository to use the extended LProbeInfo object.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
29 import de.intevation.lada.model.LProbeInfo; |
15
624611a29348
Provide GET method to load a list of proben.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
8
diff
changeset
|
30 |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
31 /** |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
32 * This class produces a RESTful service to read, write and update |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
33 * LProbe objects. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
34 * |
77
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
35 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
36 */ |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
37 @Path("/proben") |
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
38 @RequestScoped |
45
a5ee8d69c0b4
Renamed existing rest services and make use of the generic repository.
Raimund Renkert <rrenkert@intevation.de>
parents:
39
diff
changeset
|
39 public class LProbeService { |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
40 |
39 | 41 /** |
42 * The Repository for LProbe. | |
43 */ | |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
44 @Inject |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
45 @Named("lproberepository") |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
46 private Repository repository; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
47 |
223
d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
48 @Inject |
d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
49 @Named("lmessungrepository") |
d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
50 private Repository messungRepository; |
d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
51 |
39 | 52 /** |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
53 * The authorization module. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
54 */ |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
55 @Inject |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
56 @Named("ldapauth") |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
57 private Authentication authentication; |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
58 |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
59 @Inject |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
60 @Named("dataauthorization") |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
61 private Authorization authorization; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
62 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
63 /** |
39 | 64 * The logger for this class. |
65 */ | |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
66 @Inject |
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
67 private Logger log; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
68 |
39 | 69 /** |
70 * Request a LProbe via its id. | |
71 * | |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
72 * @param id The LProbe id |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
73 * @param header THe HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
74 * @return Response object. |
39 | 75 */ |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
76 @GET |
36
8155d2ed5cb8
Use String for lprobe id.
Raimund Renkert <rrenkert@intevation.de>
parents:
35
diff
changeset
|
77 @Path("/{id}") |
8155d2ed5cb8
Use String for lprobe id.
Raimund Renkert <rrenkert@intevation.de>
parents:
35
diff
changeset
|
78 @Produces("text/json") |
188
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
79 public Response findById( |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
80 @PathParam("id") String id, |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
81 @Context HttpHeaders header |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
82 ) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
83 try { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
84 AuthenticationResponse auth = |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
85 authentication.authorizedGroups(header); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
86 Response response = |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
87 repository.findById(LProbeInfo.class, id); |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
88 @SuppressWarnings("unchecked") |
188
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
89 List<LProbeInfo> probe = (List<LProbeInfo>)response.getData(); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
90 if (probe.isEmpty()) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
91 return new Response(false, 601, new ArrayList<LProbeInfo>()); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
92 } |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
93 String nbId = probe.get(0).getNetzbetreiberId(); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
94 String mstId = probe.get(0).getMstId(); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
95 if (auth.getNetzbetreiber().contains(nbId)) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
96 if (auth.getMst().contains(mstId)) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
97 return response; |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
98 } |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
99 response.setReadonly(true); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
100 return response; |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
101 } |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
102 return new Response(false, 698, new ArrayList<LProbe>()); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
103 } |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
104 catch(AuthenticationException ae) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
105 return new Response(false, 699, new ArrayList<LProbe>()); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
106 } |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
107 } |
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
108 |
80
75d42f8063f8
Formatting
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
77
diff
changeset
|
109 /** |
39 | 110 * Request LProbe via a filter. |
111 * | |
112 * Query parameters are used for the filter in form of key-value pairs. | |
113 * This filter can take the three parameters | |
114 * mst=$MSTID (String) | |
115 * uwb=$UWBID (String) | |
116 * begin=$PROBEENTNAHMEBEGIN (Timestamp) | |
117 * | |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
118 * @param info The URL query parameters. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
119 * @param header The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
120 * @return Response object. |
39 | 121 */ |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
122 @GET |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
123 @Produces("text/json") |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
124 public Response filter( |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
125 @Context UriInfo info, |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
126 @Context HttpHeaders header |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
127 ) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
128 try { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
129 AuthenticationResponse auth = |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
130 authentication.authorizedGroups(header); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
131 QueryBuilder<LProbeInfo> builder = |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
132 new QueryBuilder<LProbeInfo>( |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
133 repository.getEntityManager(), |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
134 LProbeInfo.class); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
135 builder.or("netzbetreiberId", auth.getNetzbetreiber()); |
231
9dae52dd8157
Use the readonly flag in LProbeInfo to define a probe as readonly.
Raimund Renkert <rrenkert@intevation.de>
parents:
223
diff
changeset
|
136 builder.or("fertig", Boolean.TRUE); |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
137 MultivaluedMap<String, String> params = info.getQueryParameters(); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
138 if (params.isEmpty()) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
139 return repository.filter(builder.getQuery()); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
140 } |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
141 QueryBuilder<LProbeInfo> mstBuilder = builder.getEmptyBuilder(); |
189
e9e83fa2a4ae
Fixed URL parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
188
diff
changeset
|
142 if (params.keySet().contains("mstId")) { |
e9e83fa2a4ae
Fixed URL parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
188
diff
changeset
|
143 String[] paramValues = params.getFirst("mstId").split(","); |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
144 for (String pv: paramValues) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
145 mstBuilder.or("mstId", pv); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
146 } |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
147 builder.and(mstBuilder); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
148 } |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
149 QueryBuilder<LProbeInfo> umwBuilder = builder.getEmptyBuilder(); |
189
e9e83fa2a4ae
Fixed URL parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
188
diff
changeset
|
150 if (params.keySet().contains("umwId")) { |
e9e83fa2a4ae
Fixed URL parameters.
Raimund Renkert <rrenkert@intevation.de>
parents:
188
diff
changeset
|
151 String[] paramValues = params.getFirst("umwId").split(","); |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
152 for (String pv: paramValues) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
153 umwBuilder.or("umwId", pv); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
154 } |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
155 builder.and(umwBuilder); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
156 } |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
157 QueryBuilder<LProbeInfo> beginBuilder = builder.getEmptyBuilder(); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
158 if (params.keySet().contains("bedin")) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
159 String[] paramValues = params.getFirst("begin").split(","); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
160 for (String pv: paramValues) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
161 beginBuilder.or("probeentnahmeBegin", pv); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
162 } |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
163 builder.and(beginBuilder); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
164 } |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
165 builder.distinct(); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
166 return repository.filter(builder.getQuery()); |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
167 } |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
168 catch(AuthenticationException ae) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
169 return new Response(false, 699, new ArrayList<LProbe>()); |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
170 } |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
171 } |
62
0b3f58cbbd75
Added comment on expected return values.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
55
diff
changeset
|
172 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
173 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
174 * Update a LProbe object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
175 * |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
176 * @param probe A LProbeInfo object wrapping the LProbe object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
177 * @param header The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
178 * @return Response object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
179 */ |
73
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
180 @PUT |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
181 @Path("/{id}") |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
182 @Produces("text/json") |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
183 @Consumes("application/json") |
207
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
184 public Response update(LProbeInfo probe, @Context HttpHeaders header) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
185 try { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
186 if(authentication.hasAccess(header, probe.getProbeId())) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
187 return repository.update(probe); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
188 } |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
189 return new Response(false, 698, new ArrayList<LProbeInfo>()); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
190 } |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
191 catch(AuthenticationException ae) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
192 return new Response(false, 699, new ArrayList<LProbeInfo>()); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
193 } |
73
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
194 } |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
195 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
196 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
197 * Create a new LProbe object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
198 * @param probe A LProbeInfo object wrapping the LProbe object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
199 * @param header The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
200 * @return Response object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
201 */ |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
202 @POST |
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
203 @Produces("text/json") |
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
204 @Consumes("application/json") |
207
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
205 public Response create(LProbeInfo probe, @Context HttpHeaders header) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
206 try { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
207 AuthenticationResponse auth = |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
208 authentication.authorizedGroups(header); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
209 if (auth.getNetzbetreiber().contains(probe.getNetzbetreiberId()) && |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
210 auth.getMst().contains(probe.getMstId())) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
211 LProbe p = probe.toLProbe(); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
212 return repository.create(p); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
213 } |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
214 return new Response(false, 698, new ArrayList<LProbeInfo>()); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
215 } |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
216 catch(AuthenticationException ae) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
217 return new Response(false, 699, new ArrayList<LProbeInfo>()); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
218 } |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
219 } |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
220 } |