annotate src/main/java/de/intevation/lada/rest/InfoService.java @ 366:567ce7697fc7 0.5

Code documentation.
author Raimund Renkert <rrenkert@intevation.de>
date Tue, 10 Sep 2013 15:55:54 +0200
parents 977582f7c0ae
children 183f8116d9a6
rev   line source
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
1 package de.intevation.lada.rest;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
2
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
3 import java.util.List;
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
4
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
5 import javax.enterprise.context.RequestScoped;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
6 import javax.inject.Inject;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
7 import javax.inject.Named;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
8 import javax.ws.rs.GET;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
9 import javax.ws.rs.Path;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
10 import javax.ws.rs.Produces;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
11 import javax.ws.rs.core.Context;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
12 import javax.ws.rs.core.HttpHeaders;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
13 import javax.ws.rs.core.UriInfo;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
14
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
15 import de.intevation.lada.auth.Authentication;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
16 import de.intevation.lada.auth.AuthenticationException;
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
17 import de.intevation.lada.auth.AuthenticationResponse;
346
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
18 import de.intevation.lada.data.QueryBuilder;
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
19 import de.intevation.lada.data.Repository;
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
20 import de.intevation.lada.model.SNetzBetreiber;
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
21
272
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
22 class Info {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
23 String user;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
24 String groups;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
25 String version;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
26 public Info(String user, String groups, String version) {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
27 this.user = user;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
28 this.groups = groups;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
29 this.version = version;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
30 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
31 public String getUser() {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
32 return user;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
33 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
34 public void setUser(String user) {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
35 this.user = user;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
36 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
37 public String getGroups() {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
38 return groups;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
39 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
40 public void setGroups(String groups) {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
41 this.groups = groups;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
42 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
43 public String getVersion() {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
44 return version;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
45 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
46 public void setVersion(String version) {
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
47 this.version = version;
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
48 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
49 }
0ddcc6240d47 Added Info class to serve general information on the server application.
Torsten Irländer <torsten.irlaender@intevation.de>
parents: 271
diff changeset
50
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
51 /**
366
567ce7697fc7 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 346
diff changeset
52 * This class produces a RESTful service to read information about the user and
567ce7697fc7 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 346
diff changeset
53 * server
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
54 *
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
55 * @author <a href="mailto:torsten.irlaender@intevation.de">Torsten Irländer</a>
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
56 */
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
57 @Path("/info")
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
58 @RequestScoped
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
59 public class InfoService
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
60 {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
61 /**
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
62 * The authorization module.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
63 */
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
64 @Inject
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
65 @Named("ldapauth")
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
66 private Authentication authentication;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
67
346
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
68 @Inject
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
69 @Named("readonlyrepository")
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
70 private Repository readonlyRepo;
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
71
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
72 /**
366
567ce7697fc7 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 346
diff changeset
73 * Request User and Server information.
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
74 *
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
75 * @param info The URL query parameters.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
76 * @param headers The HTTP header containing authorization information.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
77 * @return Response object.
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
78 */
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
79 @GET
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
80 @Produces("text/json")
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
81 public Response filter(
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
82 @Context UriInfo info,
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
83 @Context HttpHeaders headers
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
84 ) {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
85 try {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
86 if (!authentication.isAuthorizedUser(headers)) {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
87 return new Response(false, 699, null);
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
88 }
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
89 String user = authentication.getUserName(headers);
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
90 AuthenticationResponse ar = authentication.authorizedGroups(headers);
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
91 List<String> groups = ar.getNetzbetreiber();
346
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
92 QueryBuilder<SNetzBetreiber> builder =
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
93 new QueryBuilder<SNetzBetreiber>(
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
94 readonlyRepo.getEntityManager(), SNetzBetreiber.class);
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
95 for (String g : groups) {
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
96 builder.or("netzbetreiberId", g);
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
97 }
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
98 Response nResponse = readonlyRepo.filter(builder.getQuery());
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
99 List<SNetzBetreiber> netzbetr = (List<SNetzBetreiber>)nResponse.getData();
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
100 String gString = "";
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
101 boolean first = true;
346
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
102 for(SNetzBetreiber nb : netzbetr) {
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
103 if (first) {
346
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
104 gString += nb.getNetzbetreiber();
343
aee36709a8e8 Fixed group string generation.
Raimund Renkert <rrenkert@intevation.de>
parents: 293
diff changeset
105 first = false;
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
106 }
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
107 else {
346
977582f7c0ae Return the netzbetreiber name instead of the id in the info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 343
diff changeset
108 gString += ", " + nb.getNetzbetreiber();
293
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
109 }
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
110 }
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
111 //TODO: This is the best way to get the version.
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
112 // Should read the version from MANIFEST.MF but does not work (returns null).
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
113 //String version = getClass().getPackage().getImplementationVersion();
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
114 String version = System.getProperty("de.intevation.lada.server.version");
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
115
7c268f742553 Added config to pom to write metadata in the manifest file and send metadata via info service.
Raimund Renkert <rrenkert@intevation.de>
parents: 272
diff changeset
116 Response response = new Response(true, 200, new Info(user, gString, version));
271
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
117 return response;
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
118 }
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
119 catch(AuthenticationException ae) {
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
120 return new Response(false, 699, null);
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
121 }
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
122 }
f7b5ff46f3e7 Added service to get so general information on the service like loggend in
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff changeset
123 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)