Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/SNetzBetreiberService.java @ 263:2098db2e8fbd M1
Code documentation.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 17 Jul 2013 09:40:53 +0200 |
parents | d8a3d188046f |
children | 183f8116d9a6 |
rev | line source |
---|---|
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.lada.rest; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
2 |
206
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
3 import java.util.ArrayList; |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
4 import java.util.logging.Logger; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
5 |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
6 import javax.faces.bean.RequestScoped; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
7 import javax.inject.Inject; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
8 import javax.inject.Named; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
9 import javax.ws.rs.GET; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
10 import javax.ws.rs.Path; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
11 import javax.ws.rs.PathParam; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
12 import javax.ws.rs.Produces; |
206
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
13 import javax.ws.rs.core.Context; |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
14 import javax.ws.rs.core.HttpHeaders; |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
15 |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
16 import de.intevation.lada.auth.Authentication; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
17 import de.intevation.lada.auth.AuthenticationException; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
18 import de.intevation.lada.auth.AuthenticationResponse; |
206
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
19 import de.intevation.lada.data.QueryBuilder; |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
20 import de.intevation.lada.data.Repository; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
21 import de.intevation.lada.model.SNetzBetreiber; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
22 |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
23 /** |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
24 * This class produces a RESTful service to read SNetzbetreiber objects. |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
25 * |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
26 * @author <a href="mailto:torsten.irlaender@intevation.de">Torsten Irländer</a> |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
27 */ |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
28 @Path("/netzbetreiber") |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
29 @RequestScoped |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
30 public class SNetzBetreiberService |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
31 { |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
32 /** |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
232
diff
changeset
|
33 * The Repository for SNetzBetreiber. |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
34 */ |
133
750585244083
Use named injection points in stammdaten repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
35 @Inject |
157
42e0085692df
Fixed typo in named injection point.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
36 @Named("readonlyrepository") |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
37 private Repository repository; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
38 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
39 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
40 * The authorization module. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
41 */ |
206
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
42 @Inject |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
43 @Named("ldapauth") |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
44 private Authentication authentication; |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
45 |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
46 /** |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
47 * The logger for this class |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
48 */ |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
49 @Inject |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
50 private Logger logger; |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
51 |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
52 /** |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
232
diff
changeset
|
53 * Request all SNetzBetreiber objects. |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
54 * |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
55 * @param headers The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
56 * @return Response object. |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
57 */ |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
58 @GET |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
59 @Produces("text/json") |
206
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
60 public Response findAll(@Context HttpHeaders headers) { |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
61 try { |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
62 AuthenticationResponse auth = |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
63 authentication.authorizedGroups(headers); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
64 QueryBuilder<SNetzBetreiber> builder = |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
65 new QueryBuilder<SNetzBetreiber>( |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
66 repository.getEntityManager(), SNetzBetreiber.class); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
67 builder.or("netzbetreiberId", auth.getNetzbetreiber()); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
68 return repository.filter(builder.getQuery()); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
69 } |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
70 catch(AuthenticationException ae) { |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
71 return new Response(false, 699, new ArrayList<SNetzBetreiber>()); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
72 } |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
73 } |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
74 |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
75 /** |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
232
diff
changeset
|
76 * Request a single SNetzBetreiber via its id. |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
77 * |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
78 * @param id The object id. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
79 * @param headers The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
206
diff
changeset
|
80 * @return Response object. |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
81 */ |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
82 @GET |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
83 @Path("/{id}") |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
84 @Produces("text/json") |
206
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
85 public Response findById( |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
86 @PathParam("id") String id, |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
87 @Context HttpHeaders headers) { |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
88 try { |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
89 AuthenticationResponse auth = |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
90 authentication.authorizedGroups(headers); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
91 if (auth.getNetzbetreiber().contains(id)) { |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
92 return repository.findById(SNetzBetreiber.class, id); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
93 } |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
94 return new Response(false, 698, new ArrayList<SNetzBetreiber>()); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
95 } |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
96 catch(AuthenticationException ae) { |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
97 return new Response(false, 699, new ArrayList<SNetzBetreiber>()); |
ae56f0a326dc
Added authorization to 'netzbetreiber' service.
Raimund Renkert <rrenkert@intevation.de>
parents:
157
diff
changeset
|
98 } |
106
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
99 } |
069cec27c9c6
Added Interface to get Netzbetreiber.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
100 } |