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
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
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
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
99 *
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
100 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
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
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
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
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
160 *
628
21a49dc9984d Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 601
diff changeset
161 * @return Response object containing all Probe objects.
451
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
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
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
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
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
232 *
628
21a49dc9984d Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 601
diff changeset
233 * @return Response object containing a single Probe.
451
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
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
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
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
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
286 *
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
287 * @return Response object containing the new probe object.
89a5dbeb5bd6 Comments.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 450
diff changeset
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 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)