Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/ProbeService.java @ 1290:14876c62f692
Push down refreshing of persisted objects deeper into the stack.
There are more places besides creation of Probe objects where it is
useful to return within the response what has been really written to
the database (including modifications by the database itself) instead
of merely the request data, e.g. creation of Ort objects, which
includes database generated ort_ids.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 08 Feb 2017 18:02:05 +0100 |
parents | f9328849a53c |
children | 65ed13ff9945 |
rev | line source |
---|---|
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 * |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 */ |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 package de.intevation.lada.rest; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
10 import java.util.List; |
572
9dd72a2860b5
Use paging parameters to send sublists of the result.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
561
diff
changeset
|
11 import java.util.Map; |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
12 |
700
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
13 import javax.ejb.EJBTransactionRolledbackException; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 import javax.enterprise.context.RequestScoped; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 import javax.inject.Inject; |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
16 import javax.json.JsonObject; |
700
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
17 import javax.persistence.TransactionRequiredException; |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
18 import javax.servlet.http.HttpServletRequest; |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
19 import javax.ws.rs.DELETE; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 import javax.ws.rs.GET; |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
21 import javax.ws.rs.POST; |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
22 import javax.ws.rs.PUT; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 import javax.ws.rs.Path; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 import javax.ws.rs.PathParam; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 import javax.ws.rs.Produces; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 import javax.ws.rs.core.Context; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 import javax.ws.rs.core.HttpHeaders; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 import javax.ws.rs.core.MediaType; |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
29 import javax.ws.rs.core.MultivaluedMap; |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
30 import javax.ws.rs.core.UriInfo; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 |
657
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
32 import de.intevation.lada.factory.ProbeFactory; |
595
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
33 import de.intevation.lada.lock.LockConfig; |
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
34 import de.intevation.lada.lock.LockType; |
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
35 import de.intevation.lada.lock.ObjectLocker; |
1072
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
36 import de.intevation.lada.model.land.Messprogramm; |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
37 import de.intevation.lada.model.land.Probe; |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
38 import de.intevation.lada.query.QueryTools; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 import de.intevation.lada.util.annotation.AuthorizationConfig; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 import de.intevation.lada.util.annotation.RepositoryConfig; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 import de.intevation.lada.util.auth.Authorization; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 import de.intevation.lada.util.auth.AuthorizationType; |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
43 import de.intevation.lada.util.data.QueryBuilder; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 import de.intevation.lada.util.data.Repository; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 import de.intevation.lada.util.data.RepositoryType; |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
46 import de.intevation.lada.util.rest.RequestMethod; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 import de.intevation.lada.util.rest.Response; |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
48 import de.intevation.lada.validation.Validator; |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
49 import de.intevation.lada.validation.Violation; |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
50 import de.intevation.lada.validation.annotation.ValidationConfig; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 |
451 | 52 /** |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
53 * REST service for Probe objects. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
54 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
55 * The services produce data in the application/json media type. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
56 * All HTTP methods use the authorization module to determine if the user is |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
57 * allowed to perform the requested action. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
58 * A typical response holds information about the action performed and the data. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
59 * <pre> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
60 * <code> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
61 * { |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
62 * "success": [boolean]; |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
63 * "message": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
64 * "data":[{ |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
65 * "id":[number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
66 * "baId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
67 * "datenbasisId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
68 * "letzteAenderung": [timestamp], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
69 * "media": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
70 * "mediaDesk": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
71 * "mittelungsdauer": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
72 * "mstId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
73 * "netzbetreiberId":[string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
74 * "probeentnahmeBeginn": [timestamp], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
75 * "probeentnahmeEnde": [timestamp], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
76 * "probenartId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
77 * "test": [boolean], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
78 * "umwId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
79 * "hauptprobenNr": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
80 * "erzeugerId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
81 * "mpKat": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
82 * "mplId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
83 * "mprId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
84 * "probeNehmerId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
85 * "solldatumBeginn": [timestamp], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
86 * "solldatumEnde": [timestamp], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
87 * "treeModified": [timestamp], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
88 * "readonly": [boolean], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
89 * "owner": [boolean], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
90 * "probeIdAlt": [string] |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
91 * }], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
92 * "errors": [object], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
93 * "warnings": [object], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
94 * "readonly": [boolean], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
95 * "totalCount": [number] |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
96 * } |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
97 * </code> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
98 * </pre> |
451 | 99 * |
100 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> | |
101 */ | |
827
5bdd1631a451
!!!CAUTION!!! changed services path!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
738
diff
changeset
|
102 @Path("rest/probe") |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
103 @RequestScoped |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 public class ProbeService { |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
105 |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
106 /** |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
107 * The data repository granting read/write access. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
108 */ |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
109 @Inject |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
110 @RepositoryConfig(type=RepositoryType.RW) |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
111 private Repository repository; |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
112 |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
113 /** |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
114 * The authorization module. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
115 */ |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
116 @Inject |
722
c81881dac97e
Switch to shibboleth authorization in all REST-services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
717
diff
changeset
|
117 @AuthorizationConfig(type=AuthorizationType.HEADER) |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
118 private Authorization authorization; |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
119 |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
120 /** |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
121 * The object lock mechanism. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
122 */ |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
123 @Inject |
595
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
124 @LockConfig(type=LockType.TIMESTAMP) |
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
125 private ObjectLocker lock; |
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
126 |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
127 /** |
657
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
128 * The validator used for Probe objects. |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
129 */ |
595
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
130 @Inject |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
131 @ValidationConfig(type="Probe") |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
132 private Validator validator; |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
133 |
451 | 134 /** |
657
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
135 * The factory to create Probe objects. |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
136 * Used for messprogramm. |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
137 */ |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
138 @Inject |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
139 private ProbeFactory factory; |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
140 |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
141 @Inject |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
142 private QueryTools queryTools; |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
143 |
657
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
144 /** |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
145 * Get all Probe objects. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
146 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
147 * The requested objects can be filtered using the following URL |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
148 * parameters:<br> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
149 * * qid: The id of the query.<br> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
150 * * page: The page to display in a paginated result grid.<br> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
151 * * start: The first Probe item.<br> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
152 * * limit: The count of Probe items.<br> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
153 * * sort: Sort the result ascending(ASC) or descenting (DESC).<br> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
154 * <br> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
155 * The response data contains a stripped set of Probe objects. The returned fields |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
156 * are defined in the query used in the request. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
157 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
158 * Example: |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
159 * http://example.com/probe?qid=[ID]&page=[PAGE]&start=[START]&limit=[LIMIT]&sort=[{"property":"probeId","direction":"ASC"}] |
451 | 160 * |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
161 * @return Response object containing all Probe objects. |
451 | 162 */ |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
163 @SuppressWarnings("unchecked") |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
164 @GET |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
165 @Path("/") |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
166 @Produces("application/json") |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
167 public Response get( |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
168 @Context HttpHeaders headers, |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
169 @Context UriInfo info, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
170 @Context HttpServletRequest request |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
171 ) { |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
172 MultivaluedMap<String, String> params = info.getQueryParameters(); |
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
173 if (params.isEmpty() || !params.containsKey("qid")) { |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
174 return repository.getAll(Probe.class, "land"); |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
175 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
176 Integer id = null; |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
177 try { |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
178 id = Integer.valueOf(params.getFirst("qid")); |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
179 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
180 catch (NumberFormatException e) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
181 return new Response(false, 603, "Not a valid filter id"); |
455
01d6da858394
Updated GET service for probe objects. Service is using filters now.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
451
diff
changeset
|
182 } |
572
9dd72a2860b5
Use paging parameters to send sublists of the result.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
561
diff
changeset
|
183 List<Map<String, Object>> result = |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
184 queryTools.getResultForQuery(params, id, "probe"); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
185 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
186 int size = result.size(); |
572
9dd72a2860b5
Use paging parameters to send sublists of the result.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
561
diff
changeset
|
187 if (params.containsKey("start") && params.containsKey("limit")) { |
9dd72a2860b5
Use paging parameters to send sublists of the result.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
561
diff
changeset
|
188 int start = Integer.valueOf(params.getFirst("start")); |
9dd72a2860b5
Use paging parameters to send sublists of the result.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
561
diff
changeset
|
189 int limit = Integer.valueOf(params.getFirst("limit")); |
587
54a95a587093
Updated authorization for probe list. Performance is much better now!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
582
diff
changeset
|
190 int end = limit + start; |
54a95a587093
Updated authorization for probe list. Performance is much better now!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
582
diff
changeset
|
191 if (start + limit > result.size()) { |
54a95a587093
Updated authorization for probe list. Performance is much better now!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
582
diff
changeset
|
192 end = result.size(); |
54a95a587093
Updated authorization for probe list. Performance is much better now!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
582
diff
changeset
|
193 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
194 result = result.subList(start, end); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
195 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
196 |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
197 QueryBuilder<Probe> pBuilder = new QueryBuilder<Probe>( |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
198 repository.entityManager("land"), Probe.class); |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
199 for (Map<String, Object> entry: result) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
200 pBuilder.or("id", (Integer)entry.get("id")); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
201 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
202 Response r = repository.filter(pBuilder.getQuery(), "land"); |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
203 r = authorization.filter(request, r, Probe.class); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
204 List<Probe> proben = (List<Probe>)r.getData(); |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
205 for (Map<String, Object> entry: result) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
206 Integer pId = Integer.valueOf(entry.get("id").toString()); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
207 setAuthData(proben, entry, pId); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
208 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
209 return new Response(true, 200, result, size); |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
210 } |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
211 |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
212 private void setAuthData( |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
213 List<Probe> proben, |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
214 Map<String, Object> entry, |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
215 Integer id |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
216 ) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
217 for (int i = 0; i < proben.size(); i++) { |
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
218 if (id.equals(proben.get(i).getId())) { |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
219 entry.put("readonly", proben.get(i).isReadonly()); |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
220 entry.put("owner", proben.get(i).isOwner()); |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
221 return; |
587
54a95a587093
Updated authorization for probe list. Performance is much better now!
Raimund Renkert <raimund.renkert@intevation.de>
parents:
582
diff
changeset
|
222 } |
572
9dd72a2860b5
Use paging parameters to send sublists of the result.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
561
diff
changeset
|
223 } |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
224 } |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
225 |
451 | 226 /** |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
227 * Get a single Probe object by id. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
228 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
229 * The id is appended to the URL as a path parameter. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
230 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
231 * Example: http://example.com/probe/{id} |
451 | 232 * |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
233 * @return Response object containing a single Probe. |
451 | 234 */ |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
235 @GET |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
236 @Path("/{id}") |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
237 @Produces(MediaType.APPLICATION_JSON) |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
238 public Response getById( |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
239 @Context HttpHeaders headers, |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
240 @PathParam("id") String id, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
241 @Context HttpServletRequest request |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
242 ) { |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
243 Response response = |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
244 repository.getById(Probe.class, Integer.valueOf(id), "land"); |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
245 Violation violation = validator.validate(response.getData()); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
246 if (violation.hasWarnings()) { |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
247 response.setWarnings(violation.getWarnings()); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
248 } |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
249 return this.authorization.filter(request, response, Probe.class); |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
250 } |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
251 |
451 | 252 /** |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
253 * Create a new Probe object. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
254 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
255 * The new object is embedded in the post data as JSON formatted string. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
256 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
257 * <pre> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
258 * <code> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
259 * { |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
260 * "probeIdAlt": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
261 * "hauptprobenNr": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
262 * "test": [boolean], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
263 * "netzbetreiberId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
264 * "mstId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
265 * "datenbasisId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
266 * "baId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
267 * "probenartId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
268 * "mediaDesk": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
269 * "media": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
270 * "umwId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
271 * "mittelungsdauer": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
272 * "erzeugerId":[string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
273 * "probeNehmerId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
274 * "mpKat": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
275 * "mplId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
276 * "mprId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
277 * "treeModified":null, |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
278 * "probeentnahmeBeginn": [date], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
279 * "probeentnahmeEnde": [date], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
280 * "letzteAenderung": [date], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
281 * "solldatumBeginn": [date], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
282 * "solldatumEnde": [date] |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
283 * } |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
284 * </code> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
285 * </pre> |
451 | 286 * |
287 * @return Response object containing the new probe object. | |
288 */ | |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
289 @POST |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
290 @Path("/") |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
291 @Produces(MediaType.APPLICATION_JSON) |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
292 public Response create( |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
293 @Context HttpHeaders headers, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
294 @Context HttpServletRequest request, |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
295 Probe probe |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
296 ) { |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
297 if (!authorization.isAuthorized( |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
298 request, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
299 probe, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
300 RequestMethod.POST, |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
301 Probe.class) |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
302 ) { |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
303 return new Response(false, 699, null); |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
304 } |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
305 Violation violation = validator.validate(probe); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
306 if (violation.hasErrors()) { |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
307 Response response = new Response(false, 604, probe); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
308 response.setErrors(violation.getErrors()); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
309 response.setWarnings(violation.getWarnings()); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
310 return response; |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
311 } |
695
b8afbf6c1b5d
Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
657
diff
changeset
|
312 if (probe.getUmwId() == null || probe.getUmwId().equals("")) { |
697
8c486052264c
Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
695
diff
changeset
|
313 probe = factory.findUmweltId(probe); |
695
b8afbf6c1b5d
Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
657
diff
changeset
|
314 } |
738
1ed5e3692215
fix set media_from_mediadesk
Michael Stanko <mstanko@bfs.de>
parents:
722
diff
changeset
|
315 probe = factory.findMediaDesk(probe); |
1290
14876c62f692
Push down refreshing of persisted objects deeper into the stack.
Tom Gottfried <tom@intevation.de>
parents:
1125
diff
changeset
|
316 |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
317 /* Persist the new probe object*/ |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
318 Response newProbe = repository.create(probe, "land"); |
1290
14876c62f692
Push down refreshing of persisted objects deeper into the stack.
Tom Gottfried <tom@intevation.de>
parents:
1125
diff
changeset
|
319 |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
320 if(violation.hasWarnings()) { |
1290
14876c62f692
Push down refreshing of persisted objects deeper into the stack.
Tom Gottfried <tom@intevation.de>
parents:
1125
diff
changeset
|
321 newProbe.setWarnings(violation.getWarnings()); |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
322 } |
601
ddab1ecb2898
Use the authorization filter in all REST operations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
596
diff
changeset
|
323 return authorization.filter( |
ddab1ecb2898
Use the authorization filter in all REST operations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
596
diff
changeset
|
324 request, |
1290
14876c62f692
Push down refreshing of persisted objects deeper into the stack.
Tom Gottfried <tom@intevation.de>
parents:
1125
diff
changeset
|
325 newProbe, |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
326 Probe.class); |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
327 } |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
328 |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
329 /** |
657
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
330 * Create new Probe objects from a messprogramm. |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
331 * <p> |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
332 * <p> |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
333 * <pre> |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
334 * <code> |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
335 * { |
711
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
709
diff
changeset
|
336 * "id": [number], |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
709
diff
changeset
|
337 * "start": [timestamp], |
3ec358698b4d
Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
709
diff
changeset
|
338 * "end": [timestamp] |
657
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
339 * } |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
340 * </code> |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
341 * </pre> |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
342 * |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
343 * @return Response object containing the new probe object. |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
344 */ |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
345 @POST |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
346 @Path("/messprogramm") |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
347 @Produces(MediaType.APPLICATION_JSON) |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
348 public Response createFromMessprogramm( |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
349 @Context HttpHeaders headers, |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
350 @Context HttpServletRequest request, |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
351 JsonObject object |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
352 ) { |
1072
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
353 int id = object.getInt("id"); |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
354 Messprogramm messprogramm = repository.getByIdPlain( |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
355 Messprogramm.class, id, "land"); |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
356 if (messprogramm == null) { |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
357 return new Response(false, 600, null); |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
358 } |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
359 |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
360 /* Allow generation of Probe objects only for a Messprogramm |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
361 * that would be allowed to be changed. */ |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
362 if (!authorization.isAuthorized( |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
363 request, |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
364 messprogramm, |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
365 RequestMethod.PUT, |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
366 Messprogramm.class) |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
367 ) { |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
368 return new Response(false, 699, null); |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
369 } |
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
370 |
1068
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
371 long start = 0; |
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
372 long end = 0; |
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
373 try { |
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
374 start = object.getJsonNumber("start").longValue(); |
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
375 end = object.getJsonNumber("end").longValue(); |
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
376 } catch (ClassCastException e) { |
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
377 // Catch invalid (i.e. too high) time values |
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
378 return new Response(false, 612, null); |
8d1df8f31475
Avoid ISE if invalid datetime values are provided.
Tom Gottfried <tom@intevation.de>
parents:
1067
diff
changeset
|
379 } |
1067
0a44ab47d3d5
A period with end before start is meaningless.
Tom Gottfried <tom@intevation.de>
parents:
949
diff
changeset
|
380 if (start > end) { |
0a44ab47d3d5
A period with end before start is meaningless.
Tom Gottfried <tom@intevation.de>
parents:
949
diff
changeset
|
381 return new Response(false, 662, null); |
0a44ab47d3d5
A period with end before start is meaningless.
Tom Gottfried <tom@intevation.de>
parents:
949
diff
changeset
|
382 } |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
383 List<Probe> proben = factory.create( |
1072
703b370c3b34
Authorize generation of Probe objects by Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
1068
diff
changeset
|
384 messprogramm, |
657
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
385 start, |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
386 end); |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
387 return new Response(true, 200, proben); |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
388 } |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
389 |
a8909085dae6
New REST interface to create probe objects from messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
628
diff
changeset
|
390 /** |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
391 * Update an existing Probe object. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
392 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
393 * The object to update should come as JSON formatted string. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
394 * <pre> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
395 * <code> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
396 * { |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
397 * "id": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
398 * "probeIdAlt": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
399 * "hauptprobenNr": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
400 * "test": [boolean], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
401 * "netzbetreiberId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
402 * "mstId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
403 * "datenbasisId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
404 * "baId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
405 * "probenartId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
406 * "mediaDesk": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
407 * "media": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
408 * "umwId": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
409 * "mittelungsdauer": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
410 * "erzeugerId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
411 * "probeNehmerId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
412 * "mpKat": [string], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
413 * "mplId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
414 * "mprId": [number], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
415 * "treeModified": [timestamp], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
416 * "probeentnahmeBeginn": [date], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
417 * "probeentnahmeEnde": [date], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
418 * "letzteAenderung": [date], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
419 * "solldatumBeginn": [date], |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
420 * "solldatumEnde":[date] |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
421 * } |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
422 * </code> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
423 * </pre> |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
424 * |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
425 * @return Response object containing the updated Probe object. |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
426 */ |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
427 @PUT |
557
61ce3ce0100e
Allow /{id} in urls on PUT requests.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
543
diff
changeset
|
428 @Path("/{id}") |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
429 @Produces(MediaType.APPLICATION_JSON) |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
430 public Response update( |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
431 @Context HttpHeaders headers, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
432 @Context HttpServletRequest request, |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
433 @PathParam("id") String id, |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
434 Probe probe |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
435 ) { |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
436 if (!authorization.isAuthorized( |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
437 request, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
438 probe, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
439 RequestMethod.PUT, |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
440 Probe.class) |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
441 ) { |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
442 return new Response(false, 699, null); |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
443 } |
595
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
444 if (lock.isLocked(probe)) { |
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
445 return new Response(false, 697, null); |
746e03da9fad
Use timestamp locker in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
587
diff
changeset
|
446 } |
840
2fe625c91ab3
Merged branches.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
833
diff
changeset
|
447 if (probe.getMediaDesk() == null || probe.getMediaDesk() == "") { |
2fe625c91ab3
Merged branches.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
833
diff
changeset
|
448 probe = factory.findMediaDesk(probe); |
2fe625c91ab3
Merged branches.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
833
diff
changeset
|
449 } |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
450 Violation violation = validator.validate(probe); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
451 if (violation.hasErrors()) { |
561
20016be6c072
Return null as data.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
560
diff
changeset
|
452 Response response = new Response(false, 604, null); |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
453 response.setErrors(violation.getErrors()); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
454 response.setWarnings(violation.getWarnings()); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
455 return response; |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
456 } |
840
2fe625c91ab3
Merged branches.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
833
diff
changeset
|
457 if (probe.getUmwId() == null || probe.getUmwId() == "") { |
2fe625c91ab3
Merged branches.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
833
diff
changeset
|
458 factory.findUmweltId(probe); |
2fe625c91ab3
Merged branches.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
833
diff
changeset
|
459 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
460 Response response = repository.update(probe, "land"); |
949
2c927b3edb97
Return correct response if update failed.
Tom Gottfried <tom@intevation.de>
parents:
922
diff
changeset
|
461 if (!response.getSuccess()) { |
2c927b3edb97
Return correct response if update failed.
Tom Gottfried <tom@intevation.de>
parents:
922
diff
changeset
|
462 return response; |
2c927b3edb97
Return correct response if update failed.
Tom Gottfried <tom@intevation.de>
parents:
922
diff
changeset
|
463 } |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
464 Response updated = repository.getById( |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
465 Probe.class, |
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
466 ((Probe)response.getData()).getId(), "land"); |
543
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
467 if (violation.hasWarnings()) { |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
468 updated.setWarnings(violation.getWarnings()); |
7a0e3d49ae33
Validate probe objects in REST services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
455
diff
changeset
|
469 } |
601
ddab1ecb2898
Use the authorization filter in all REST operations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
596
diff
changeset
|
470 return authorization.filter( |
ddab1ecb2898
Use the authorization filter in all REST operations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
596
diff
changeset
|
471 request, |
ddab1ecb2898
Use the authorization filter in all REST operations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
596
diff
changeset
|
472 updated, |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
473 Probe.class); |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
474 } |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
475 |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
476 /** |
628
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
477 * Delete an existing Probe object by id. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
478 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
479 * The id is appended to the URL as a path parameter. |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
480 * <p> |
21a49dc9984d
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
601
diff
changeset
|
481 * Example: http://example.com/probe/{id} |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
482 * |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
483 * @return Response object. |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
484 */ |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
485 @DELETE |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
486 @Path("/{id}") |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
487 @Produces(MediaType.APPLICATION_JSON) |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
488 public Response delete( |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
489 @Context HttpHeaders headers, |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
490 @Context HttpServletRequest request, |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
491 @PathParam("id") String id |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
492 ) { |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
493 /* Get the probe object by id*/ |
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
494 Response probe = |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
495 repository.getById(Probe.class, Integer.valueOf(id), "land"); |
1125
f9328849a53c
Avoid NPE on trying to delete non-existent Probe object.
Tom Gottfried <tom@intevation.de>
parents:
1097
diff
changeset
|
496 if (!probe.getSuccess()) { |
f9328849a53c
Avoid NPE on trying to delete non-existent Probe object.
Tom Gottfried <tom@intevation.de>
parents:
1097
diff
changeset
|
497 return probe; |
f9328849a53c
Avoid NPE on trying to delete non-existent Probe object.
Tom Gottfried <tom@intevation.de>
parents:
1097
diff
changeset
|
498 } |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
499 Probe probeObj = (Probe)probe.getData(); |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
500 if (!authorization.isAuthorized( |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
501 request, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
502 probeObj, |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
503 RequestMethod.DELETE, |
1097
186d602e031a
Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents:
1072
diff
changeset
|
504 Probe.class) |
582
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
505 ) { |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
506 return new Response(false, 699, null); |
a04658486ede
Use authentication info for authorization of requested objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
574
diff
changeset
|
507 } |
450
808ea2091c1d
Updated repositoy structure and added probe services.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
441
diff
changeset
|
508 /* Delete the probe object*/ |
700
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
509 try { |
848
c2725534f08b
Services no use the database based query filter.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
840
diff
changeset
|
510 Response response = repository.delete(probeObj, "land"); |
700
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
511 return response; |
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
512 } |
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
513 catch(IllegalArgumentException | EJBTransactionRolledbackException | |
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
514 TransactionRequiredException e) { |
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
515 return new Response(false, 600, ""); |
d74b5b1190ae
fixed delete probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
699
diff
changeset
|
516 } |
441
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
517 } |
6020c66849f3
Added probe service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
518 } |