Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/LProbeService.java @ 100:4ed15ffbc20c
Removed code to build the response on creation in the service. Response is
already built in the repository.
author | Torsten Irländer <torsten.irlaender@intevation.de> |
---|---|
date | Tue, 11 Jun 2013 11:13:15 +0200 |
parents | 8b48dabb3582 |
children | ba35b1f642ec |
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 |
15
624611a29348
Provide GET method to load a list of proben.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
8
diff
changeset
|
3 import java.util.List; |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
4 import java.util.Map; |
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; |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
9 import javax.ws.rs.Consumes; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
10 import javax.ws.rs.GET; |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
11 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
|
12 import javax.ws.rs.PUT; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
13 import javax.ws.rs.Path; |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
14 import javax.ws.rs.PathParam; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
15 import javax.ws.rs.Produces; |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
16 import javax.ws.rs.core.Context; |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
17 import javax.ws.rs.core.MultivaluedMap; |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
18 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
|
19 |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
20 import de.intevation.lada.data.LProbeRepository; |
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
21 import de.intevation.lada.model.LProbe; |
15
624611a29348
Provide GET method to load a list of proben.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
8
diff
changeset
|
22 |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
23 /** |
77
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
24 * This class produces a RESTful service to read the contents of LProbe table. |
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
25 * |
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
26 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
27 */ |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
28 @Path("/proben") |
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
29 @RequestScoped |
45
a5ee8d69c0b4
Renamed existing rest services and make use of the generic repository.
Raimund Renkert <rrenkert@intevation.de>
parents:
39
diff
changeset
|
30 public class LProbeService { |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
31 |
39 | 32 /** |
33 * The Repository for LProbe. | |
34 */ | |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
35 @Inject |
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
36 private LProbeRepository repository; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
37 |
39 | 38 /** |
39 * The logger for this class. | |
40 */ | |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
41 @Inject |
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
42 private Logger log; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
43 |
39 | 44 /** |
45 * Request a LProbe via its id. | |
46 * | |
47 * @param id The LProbe id | |
48 * @return JSON Object via REST service. | |
49 */ | |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
50 @GET |
36
8155d2ed5cb8
Use String for lprobe id.
Raimund Renkert <rrenkert@intevation.de>
parents:
35
diff
changeset
|
51 @Path("/{id}") |
8155d2ed5cb8
Use String for lprobe id.
Raimund Renkert <rrenkert@intevation.de>
parents:
35
diff
changeset
|
52 @Produces("text/json") |
75
b43b76fc0525
Added Response class to wrap the returned data into a response object which
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
74
diff
changeset
|
53 public Response findById(@PathParam("id") String id) { |
77
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
54 LProbe item = repository.findById(LProbe.class, id); |
90
7b084beab4a7
Get Success-Code directly from repository when initialising the response.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
83
diff
changeset
|
55 Response response = new Response(repository.getSuccess(), repository.getGeneralError(), item); |
81
8830934533b5
Set correct response when loading a probe.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
80
diff
changeset
|
56 response.setWarnings(repository.getWarnings()); |
8830934533b5
Set correct response when loading a probe.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
80
diff
changeset
|
57 response.setErrors(repository.getErrors()); |
8830934533b5
Set correct response when loading a probe.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
80
diff
changeset
|
58 return response; |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
59 } |
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
60 |
80
75d42f8063f8
Formatting
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
77
diff
changeset
|
61 /** |
39 | 62 * Request LProbe via a filter. |
63 * | |
64 * Query parameters are used for the filter in form of key-value pairs. | |
65 * This filter can take the three parameters | |
66 * mst=$MSTID (String) | |
67 * uwb=$UWBID (String) | |
68 * begin=$PROBEENTNAHMEBEGIN (Timestamp) | |
69 * | |
70 * @param info The URL query parameters. | |
71 * @return JSON Object via Rest service. | |
72 */ | |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
73 @GET |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
74 @Produces("text/json") |
75
b43b76fc0525
Added Response class to wrap the returned data into a response object which
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
74
diff
changeset
|
75 public Response filter(@Context UriInfo info) { |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
76 MultivaluedMap<String, String> params = info.getQueryParameters(); |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
77 if (params.isEmpty()) { |
75
b43b76fc0525
Added Response class to wrap the returned data into a response object which
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
74
diff
changeset
|
78 List<LProbe> items = repository.findAll(LProbe.class); |
83
e7c4ae4b5eba
Set generalError in response.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
82
diff
changeset
|
79 return new Response(true, repository.getGeneralError(), items); |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
80 } |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
81 String mstId = ""; |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
82 String uwbId = ""; |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
83 Long begin = null; |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
84 if (params.containsKey("mst")) { |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
85 mstId = params.getFirst("mst"); |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
86 } |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
87 if (params.containsKey("uwb")) { |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
88 uwbId = params.getFirst("uwb"); |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
89 } |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
90 if (params.containsKey("begin")) { |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
91 String tmp = params.getFirst("begin"); |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
92 try { |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
93 begin = Long.valueOf(tmp); |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
94 } |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
95 catch (NumberFormatException nfe) { |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
96 begin = null; |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
97 } |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
98 } |
75
b43b76fc0525
Added Response class to wrap the returned data into a response object which
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
74
diff
changeset
|
99 List<LProbe> items = repository.filter(mstId, uwbId, begin); |
83
e7c4ae4b5eba
Set generalError in response.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
82
diff
changeset
|
100 return new Response(true, repository.getGeneralError(), items); |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
101 } |
62
0b3f58cbbd75
Added comment on expected return values.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
55
diff
changeset
|
102 |
73
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
103 @PUT |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
104 @Path("/{id}") |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
105 @Produces("text/json") |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
106 @Consumes("application/json") |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
107 public String update(LProbe probe) { |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
108 return "{success: false, errors: {probeId: \"Client not found\"}}"; |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
109 } |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
110 |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
111 @POST |
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
112 @Produces("text/json") |
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
113 @Consumes("application/json") |
82
bd41680cc7d5
Changed type of return to Response and removed handling of errors and
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
81
diff
changeset
|
114 public Response create(LProbe probe) { |
95
8b48dabb3582
No need to build the response here anymore as this is already done in the
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
90
diff
changeset
|
115 return repository.create(probe); |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
116 } |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
117 } |