# HG changeset patch # User Raimund Renkert # Date 1452251409 -3600 # Node ID 313bd1d227f1f9903744b17987473115ead33308 # Parent 075f511243d5f83fb639858a5ae336b1635cbe3f Added services for stammdaten and updated models. diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/model/stamm/DatensatzErzeuger.java --- a/src/main/java/de/intevation/lada/model/stamm/DatensatzErzeuger.java Fri Jan 08 12:09:12 2016 +0100 +++ b/src/main/java/de/intevation/lada/model/stamm/DatensatzErzeuger.java Fri Jan 08 12:10:09 2016 +0100 @@ -5,6 +5,8 @@ import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @@ -19,6 +21,8 @@ private static final long serialVersionUID = 1L; @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id", unique=true, nullable=false) private Integer id; private String bezeichnung; diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/model/stamm/MessprogrammKategorie.java --- a/src/main/java/de/intevation/lada/model/stamm/MessprogrammKategorie.java Fri Jan 08 12:09:12 2016 +0100 +++ b/src/main/java/de/intevation/lada/model/stamm/MessprogrammKategorie.java Fri Jan 08 12:10:09 2016 +0100 @@ -5,6 +5,8 @@ import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @@ -19,6 +21,8 @@ private static final long serialVersionUID = 1L; @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id", unique=true, nullable=false) private Integer id; private String bezeichnung; diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/model/stamm/Ort.java --- a/src/main/java/de/intevation/lada/model/stamm/Ort.java Fri Jan 08 12:09:12 2016 +0100 +++ b/src/main/java/de/intevation/lada/model/stamm/Ort.java Fri Jan 08 12:10:09 2016 +0100 @@ -5,6 +5,8 @@ import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @@ -19,6 +21,8 @@ private static final long serialVersionUID = 1L; @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id", unique=true, nullable=false) private Integer id; private String aktiv; diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/model/stamm/Probenehmer.java --- a/src/main/java/de/intevation/lada/model/stamm/Probenehmer.java Fri Jan 08 12:09:12 2016 +0100 +++ b/src/main/java/de/intevation/lada/model/stamm/Probenehmer.java Fri Jan 08 12:10:09 2016 +0100 @@ -5,6 +5,8 @@ import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; @@ -17,6 +19,8 @@ private static final long serialVersionUID = 1L; @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id", unique=true, nullable=false) private Integer id; private String bearbeiter; diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/rest/stamm/DatensatzErzeugerService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/rest/stamm/DatensatzErzeugerService.java Fri Jan 08 12:10:09 2016 +0100 @@ -0,0 +1,176 @@ +/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz + * Software engineering by Intevation GmbH + * + * This file is Free Software under the GNU GPL (v>=3) + * and comes with ABSOLUTELY NO WARRANTY! Check out + * the documentation coming with IMIS-Labordaten-Application for details. + */ +package de.intevation.lada.rest.stamm; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.UriInfo; + +import de.intevation.lada.model.stamm.DatensatzErzeuger; +import de.intevation.lada.util.annotation.AuthorizationConfig; +import de.intevation.lada.util.annotation.RepositoryConfig; +import de.intevation.lada.util.auth.Authorization; +import de.intevation.lada.util.auth.AuthorizationType; +import de.intevation.lada.util.data.Repository; +import de.intevation.lada.util.data.RepositoryType; +import de.intevation.lada.util.rest.RequestMethod; +import de.intevation.lada.util.rest.Response; + +/** + * REST service for DatensatzErzeuger objects. + *

+ * The services produce data in the application/json media type. + * A typical response holds information about the action performed and the data. + *

+ * 
+ * {
+ *  "success": [boolean];
+ *  "message": [string],
+ *  "data":[{
+ *      "id": [number],
+ *      "bezeichnung": [string],
+ *      "daErzeugerId": [string],
+ *      "letzteAenderung": [timestamp],
+ *      "mstId": [string],
+ *      "netzbetreiberId": [string]
+ *  }],
+ *  "errors": [object],
+ *  "warnings": [object],
+ *  "readonly": [boolean],
+ *  "totalCount": [number]
+ * }
+ * 
+ * 
+ * + * @author Raimund Renkert + */ +@Path("rest/datensatzerzeuger") +@RequestScoped +public class DatensatzErzeugerService { + + /** + * The data repository granting read access. + */ + @Inject + @RepositoryConfig(type=RepositoryType.RW) + private Repository repository; + + @Inject + @AuthorizationConfig(type=AuthorizationType.HEADER) + private Authorization authorization; + + /** + * Get all Datenbasis objects. + *

+ * Example: http://example.com/datenbasis + * + * @return Response object containing all Datenbasis objects. + */ + @GET + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Response get( + @Context HttpHeaders headers, + @Context UriInfo info + ) { + return repository.getAll(DatensatzErzeuger.class, "stamm"); + } + + /** + * Get a single Datenbasis object by id. + *

+ * The id is appended to the URL as a path parameter. + *

+ * Example: http://example.com/datenbasis/{id} + * + * @return Response object containing a single Datenabasis. + */ + @GET + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response getById( + @Context HttpHeaders headers, + @PathParam("id") String id + ) { + return repository.getById( + DatensatzErzeuger.class, + Integer.valueOf(id), + "stamm"); + } + + @POST + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Response create( + @Context HttpServletRequest request, + DatensatzErzeuger datensatzerzeuger + ) { + if (!authorization.isAuthorized( + request, + datensatzerzeuger, + RequestMethod.POST, + DatensatzErzeuger.class) + ) { + return new Response(false, 699, datensatzerzeuger); + } + + return repository.create(datensatzerzeuger, "stamm"); + } + + @PUT + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response update( + @Context HttpServletRequest request, + DatensatzErzeuger datensatzerzeuger + ) { + if (!authorization.isAuthorized( + request, + datensatzerzeuger, + RequestMethod.PUT, + DatensatzErzeuger.class) + ) { + return new Response(false, 699, datensatzerzeuger); + } + + return repository.update(datensatzerzeuger, "stamm"); + } + + @DELETE + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response delete( + @Context HttpServletRequest request, + @PathParam("id") String id + ) { + DatensatzErzeuger datensatzerzeuger = repository.getByIdPlain( + DatensatzErzeuger.class, Integer.valueOf(id), "stamm"); + if (datensatzerzeuger == null || + !authorization.isAuthorized( + request, + datensatzerzeuger, + RequestMethod.DELETE, + DatensatzErzeuger.class + ) + ) { + return new Response(false, 699, null); + } + return repository.delete(datensatzerzeuger, "stamm"); + } +} diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/rest/stamm/LocationService.java --- a/src/main/java/de/intevation/lada/rest/stamm/LocationService.java Fri Jan 08 12:09:12 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz - * Software engineering by Intevation GmbH - * - * This file is Free Software under the GNU GPL (v>=3) - * and comes with ABSOLUTELY NO WARRANTY! Check out - * the documentation coming with IMIS-Labordaten-Application for details. - */ -package de.intevation.lada.rest.stamm; - -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.UriInfo; - -import de.intevation.lada.model.stamm.Ort; -import de.intevation.lada.util.annotation.RepositoryConfig; -import de.intevation.lada.util.data.QueryBuilder; -import de.intevation.lada.util.data.Repository; -import de.intevation.lada.util.data.RepositoryType; -import de.intevation.lada.util.rest.Response; - -/** - * REST service for SOrt objects. - *

- * The services produce data in the application/json media type. - * A typical response holds information about the action performed and the data. - *

- * 
- * {
- *  "success": [boolean];
- *  "message": [string],
- *  "data":[{
- *      "id": [number],
- *      "beschreibung": [string],
- *      "bezeichnung": [string],
- *      "hoeheLand": [number],
- *      "koordXExtern": [string],
- *      "koordYExtern": [string],
- *      "latitude": [number],
- *      "letzteAenderung": [timestamp],
- *      "longitude": [number],
- *      "nutsCode": [string],
- *      "unscharf": [string],
- *      "koordinatenartId": [number],
- *      "netzbetreiberId": [number],
- *      "staatId": [number],
- *      "verwaltungseinheitId": [string],
- *      "otyp": [string]
- *  }],
- *  "errors": [object],
- *  "warnings": [object],
- *  "readonly": [boolean],
- *  "totalCount": [number]
- * }
- * 
- * 
- * - * @author Raimund Renkert - */ -@Path("rest/ort") -@RequestScoped -public class LocationService { - - /** - * The data repository granting read/write access. - */ - @Inject - @RepositoryConfig(type=RepositoryType.RW) - private Repository defaultRepo; - - /** - * Get all SOrt objects. - *

- * The requested objects can be filtered using a URL parameter named - * ortId. - *

- * Example: http://example.com/location?ortId=[ID] - * - * @return Response object containing all (filtered) SOrt objects. - */ - @GET - @Path("/") - @Produces(MediaType.APPLICATION_JSON) - public Response get( - @Context HttpHeaders headers, - @Context UriInfo info - ) { - MultivaluedMap params = info.getQueryParameters(); - if (params.isEmpty() || !params.containsKey("ortId")) { - return defaultRepo.getAll(Ort.class, "stamm"); - } - String ortId = params.getFirst("ortId"); - QueryBuilder builder = - new QueryBuilder( - defaultRepo.entityManager("stamm"), - Ort.class); - builder.and("id", ortId); - return defaultRepo.filter(builder.getQuery(), "stamm"); - } - - /** - * Get a single SOrt object by id. - *

- * The id is appended to the URL as a path parameter. - *

- * Example: http://example.com/location/{id} - * - * @return Response object containing a single SOrt. - */ - @GET - @Path("/{id}") - @Produces(MediaType.APPLICATION_JSON) - public Response getById( - @Context HttpHeaders headers, - @PathParam("id") String id - ) { - return defaultRepo.getById( - Ort.class, - Integer.valueOf(id), - "stamm"); - } - - /** - * Create a SOrt object. - *

- * The new object is embedded in the post data as JSON formatted string. - *

- *

-     * 
-     * {
-     *  "bezeichnung": [string],
-     *  "beschreibung": [string],
-     *  "unscharf": [string],
-     *  "nutsCode": [string],
-     *  "koordXExtern": [string],
-     *  "koordYExtern": [string],
-     *  "hoeheLand": [string],
-     *  "longitude": [number],
-     *  "latitude": [number],
-     *  "staatId": [number],
-     *  "verwaltungseinheitId": [string],
-     *  "otyp": [string],
-     *  "letzteAenderung": [date]
-     * }
-     * 
-     * 
- * @return A response object containing the created SOrt. - */ - @POST - @Path("/") - @Produces(MediaType.APPLICATION_JSON) - public Response create( - @Context HttpHeaders headers, - Ort ort - ) { - /* Persist the new object*/ - return defaultRepo.create(ort, "stamm"); - } - - /** - * Update an existing SOrt object. - *

- * The object to update should come as JSON formatted string. - *

-     * 
-     * {
-     *  "id": [number],
-     *  "bezeichnung": [string],
-     *  "beschreibung": [string],
-     *  "unscharf": [string],
-     *  "nutsCode": [string],
-     *  "koordXExtern": [string],
-     *  "koordYExtern": [string],
-     *  "hoeheLand": [number],
-     *  "longitude": [number],
-     *  "latitude": [number],
-     *  "staatId": [number],
-     *  "verwaltungseinheitId": [string],
-     *  "otyp": [string],
-     *  "letzteAenderung": [date]
-     * }
-     * 
-     * 
- * - * @return Response object containing the updated SOrt object. - */ - @PUT - @Path("/{id}") - @Produces(MediaType.APPLICATION_JSON) - public Response update(@Context HttpHeaders headers, Ort ort) { - Response response = defaultRepo.update(ort, "stamm"); - Response updated = defaultRepo.getById( - Ort.class, - ((Ort)response.getData()).getId(), "stamm"); - return updated; - } - - /** - * Delete an existing SOrt object by id. - *

- * The id is appended to the URL as a path parameter. - *

- * Example: http://example.com/location/{id} - * - * @return Response object. - */ - @DELETE - @Path("/{id}") - @Produces(MediaType.APPLICATION_JSON) - public Response delete( - @Context HttpHeaders headers, - @PathParam("id") String id - ) { - /* Get the object by id*/ - Response object = - defaultRepo.getById(Ort.class, Integer.valueOf(id), "stamm"); - Ort ortObj = (Ort)object.getData(); - /* Delete the object*/ - return defaultRepo.delete(ortObj, "stamm"); - } -} diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java Fri Jan 08 12:10:09 2016 +0100 @@ -0,0 +1,177 @@ +/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz + * Software engineering by Intevation GmbH + * + * This file is Free Software under the GNU GPL (v>=3) + * and comes with ABSOLUTELY NO WARRANTY! Check out + * the documentation coming with IMIS-Labordaten-Application for details. + */ +package de.intevation.lada.rest.stamm; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.UriInfo; + +import de.intevation.lada.model.stamm.DatensatzErzeuger; +import de.intevation.lada.model.stamm.MessprogrammKategorie; +import de.intevation.lada.util.annotation.AuthorizationConfig; +import de.intevation.lada.util.annotation.RepositoryConfig; +import de.intevation.lada.util.auth.Authorization; +import de.intevation.lada.util.auth.AuthorizationType; +import de.intevation.lada.util.data.Repository; +import de.intevation.lada.util.data.RepositoryType; +import de.intevation.lada.util.rest.RequestMethod; +import de.intevation.lada.util.rest.Response; + +/** + * REST service for DatensatzErzeuger objects. + *

+ * The services produce data in the application/json media type. + * A typical response holds information about the action performed and the data. + *

+ * 
+ * {
+ *  "success": [boolean];
+ *  "message": [string],
+ *  "data":[{
+ *      "id": [number],
+ *      "bezeichnung": [string],
+ *      "daErzeugerId": [string],
+ *      "letzteAenderung": [timestamp],
+ *      "mstId": [string],
+ *      "netzbetreiberId": [string]
+ *  }],
+ *  "errors": [object],
+ *  "warnings": [object],
+ *  "readonly": [boolean],
+ *  "totalCount": [number]
+ * }
+ * 
+ * 
+ * + * @author Raimund Renkert + */ +@Path("rest/messprogrammkategorie") +@RequestScoped +public class MessprogrammKategorieService { + + /** + * The data repository granting read access. + */ + @Inject + @RepositoryConfig(type=RepositoryType.RW) + private Repository repository; + + @Inject + @AuthorizationConfig(type=AuthorizationType.HEADER) + private Authorization authorization; + + /** + * Get all Datenbasis objects. + *

+ * Example: http://example.com/messprogrammkategorie + * + * @return Response object containing all objects. + */ + @GET + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Response get( + @Context HttpHeaders headers, + @Context UriInfo info + ) { + return repository.getAll(MessprogrammKategorie.class, "stamm"); + } + + /** + * Get a single object by id. + *

+ * The id is appended to the URL as a path parameter. + *

+ * Example: http://example.com/messprogrammkategorie/{id} + * + * @return Response object containing a single object. + */ + @GET + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response getById( + @Context HttpHeaders headers, + @PathParam("id") String id + ) { + return repository.getById( + MessprogrammKategorie.class, + Integer.valueOf(id), + "stamm"); + } + + @POST + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Response create( + @Context HttpServletRequest request, + MessprogrammKategorie kategorie + ) { + if (!authorization.isAuthorized( + request, + kategorie, + RequestMethod.POST, + MessprogrammKategorie.class) + ) { + return new Response(false, 699, kategorie); + } + + return repository.create(kategorie, "stamm"); + } + + @PUT + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response update( + @Context HttpServletRequest request, + MessprogrammKategorie kategorie + ) { + if (!authorization.isAuthorized( + request, + kategorie, + RequestMethod.PUT, + MessprogrammKategorie.class) + ) { + return new Response(false, 699, kategorie); + } + + return repository.update(kategorie, "stamm"); + } + + @DELETE + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response delete( + @Context HttpServletRequest request, + @PathParam("id") String id + ) { + MessprogrammKategorie kategorie = repository.getByIdPlain( + MessprogrammKategorie.class, Integer.valueOf(id), "stamm"); + if (kategorie == null || + !authorization.isAuthorized( + request, + kategorie, + RequestMethod.DELETE, + MessprogrammKategorie.class + ) + ) { + return new Response(false, 699, null); + } + return repository.delete(kategorie, "stamm"); + } +} diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/rest/stamm/OrtService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/rest/stamm/OrtService.java Fri Jan 08 12:10:09 2016 +0100 @@ -0,0 +1,266 @@ +/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz + * Software engineering by Intevation GmbH + * + * This file is Free Software under the GNU GPL (v>=3) + * and comes with ABSOLUTELY NO WARRANTY! Check out + * the documentation coming with IMIS-Labordaten-Application for details. + */ +package de.intevation.lada.rest.stamm; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.UriInfo; + +import de.intevation.lada.model.stamm.Ort; +import de.intevation.lada.util.annotation.AuthorizationConfig; +import de.intevation.lada.util.annotation.RepositoryConfig; +import de.intevation.lada.util.auth.Authorization; +import de.intevation.lada.util.auth.AuthorizationType; +import de.intevation.lada.util.data.QueryBuilder; +import de.intevation.lada.util.data.Repository; +import de.intevation.lada.util.data.RepositoryType; +import de.intevation.lada.util.rest.RequestMethod; +import de.intevation.lada.util.rest.Response; + +/** + * REST service for SOrt objects. + *

+ * The services produce data in the application/json media type. + * A typical response holds information about the action performed and the data. + *

+ * 
+ * {
+ *  "success": [boolean];
+ *  "message": [string],
+ *  "data":[{
+ *      "id": [number],
+ *      "beschreibung": [string],
+ *      "bezeichnung": [string],
+ *      "hoeheLand": [number],
+ *      "koordXExtern": [string],
+ *      "koordYExtern": [string],
+ *      "latitude": [number],
+ *      "letzteAenderung": [timestamp],
+ *      "longitude": [number],
+ *      "nutsCode": [string],
+ *      "unscharf": [string],
+ *      "koordinatenartId": [number],
+ *      "netzbetreiberId": [number],
+ *      "staatId": [number],
+ *      "verwaltungseinheitId": [string],
+ *      "otyp": [string]
+ *  }],
+ *  "errors": [object],
+ *  "warnings": [object],
+ *  "readonly": [boolean],
+ *  "totalCount": [number]
+ * }
+ * 
+ * 
+ * + * @author Raimund Renkert + */ +@Path("rest/ort") +@RequestScoped +public class OrtService { + + /** + * The data repository granting read/write access. + */ + @Inject + @RepositoryConfig(type=RepositoryType.RW) + private Repository defaultRepo; + + @Inject + @AuthorizationConfig(type=AuthorizationType.HEADER) + private Authorization authorization; + + /** + * Get all SOrt objects. + *

+ * The requested objects can be filtered using a URL parameter named + * ortId. + *

+ * Example: http://example.com/location?ortId=[ID] + * + * @return Response object containing all (filtered) SOrt objects. + */ + @GET + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Response get( + @Context HttpHeaders headers, + @Context UriInfo info + ) { + MultivaluedMap params = info.getQueryParameters(); + if (params.isEmpty() || !params.containsKey("ortId")) { + return defaultRepo.getAll(Ort.class, "stamm"); + } + String ortId = params.getFirst("ortId"); + QueryBuilder builder = + new QueryBuilder( + defaultRepo.entityManager("stamm"), + Ort.class); + builder.and("id", ortId); + return defaultRepo.filter(builder.getQuery(), "stamm"); + } + + /** + * Get a single SOrt object by id. + *

+ * The id is appended to the URL as a path parameter. + *

+ * Example: http://example.com/location/{id} + * + * @return Response object containing a single SOrt. + */ + @GET + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response getById( + @Context HttpHeaders headers, + @PathParam("id") String id + ) { + return defaultRepo.getById( + Ort.class, + Integer.valueOf(id), + "stamm"); + } + + /** + * Create a SOrt object. + *

+ * The new object is embedded in the post data as JSON formatted string. + *

+ *

+     * 
+     * {
+     *  "bezeichnung": [string],
+     *  "beschreibung": [string],
+     *  "unscharf": [string],
+     *  "nutsCode": [string],
+     *  "koordXExtern": [string],
+     *  "koordYExtern": [string],
+     *  "hoeheLand": [string],
+     *  "longitude": [number],
+     *  "latitude": [number],
+     *  "staatId": [number],
+     *  "verwaltungseinheitId": [string],
+     *  "otyp": [string],
+     *  "letzteAenderung": [date]
+     * }
+     * 
+     * 
+ * @return A response object containing the created SOrt. + */ + @POST + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Response create( + @Context HttpServletRequest request, + Ort ort + ) { + if (!authorization.isAuthorized( + request, + ort, + RequestMethod.DELETE, + Ort.class) + ) { + return new Response(false, 699, ort); + } + /* Persist the new object*/ + return defaultRepo.create(ort, "stamm"); + } + + /** + * Update an existing SOrt object. + *

+ * The object to update should come as JSON formatted string. + *

+     * 
+     * {
+     *  "id": [number],
+     *  "bezeichnung": [string],
+     *  "beschreibung": [string],
+     *  "unscharf": [string],
+     *  "nutsCode": [string],
+     *  "koordXExtern": [string],
+     *  "koordYExtern": [string],
+     *  "hoeheLand": [number],
+     *  "longitude": [number],
+     *  "latitude": [number],
+     *  "staatId": [number],
+     *  "verwaltungseinheitId": [string],
+     *  "otyp": [string],
+     *  "letzteAenderung": [date]
+     * }
+     * 
+     * 
+ * + * @return Response object containing the updated SOrt object. + */ + @PUT + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response update( + @Context HttpServletRequest request, + Ort ort + ) { + if (!authorization.isAuthorized( + request, + ort, + RequestMethod.DELETE, + Ort.class) + ) { + return new Response(false, 699, ort); + } + Response response = defaultRepo.update(ort, "stamm"); + Response updated = defaultRepo.getById( + Ort.class, + ((Ort)response.getData()).getId(), "stamm"); + return updated; + } + + /** + * Delete an existing SOrt object by id. + *

+ * The id is appended to the URL as a path parameter. + *

+ * Example: http://example.com/location/{id} + * + * @return Response object. + */ + @DELETE + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response delete( + @Context HttpServletRequest request, + @PathParam("id") String id + ) { + /* Get the object by id*/ + Ort ort = + defaultRepo.getByIdPlain(Ort.class, Integer.valueOf(id), "stamm"); + if (!authorization.isAuthorized( + request, + ort, + RequestMethod.DELETE, + Ort.class) + ) { + return new Response(false, 699, ort); + } + /* Delete the object*/ + return defaultRepo.delete(ort, "stamm"); + } +} diff -r 075f511243d5 -r 313bd1d227f1 src/main/java/de/intevation/lada/rest/stamm/ProbenehmerService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/intevation/lada/rest/stamm/ProbenehmerService.java Fri Jan 08 12:10:09 2016 +0100 @@ -0,0 +1,174 @@ +/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz + * Software engineering by Intevation GmbH + * + * This file is Free Software under the GNU GPL (v>=3) + * and comes with ABSOLUTELY NO WARRANTY! Check out + * the documentation coming with IMIS-Labordaten-Application for details. + */ +package de.intevation.lada.rest.stamm; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.UriInfo; + +import de.intevation.lada.model.stamm.DatensatzErzeuger; +import de.intevation.lada.model.stamm.Probenehmer; +import de.intevation.lada.util.annotation.AuthorizationConfig; +import de.intevation.lada.util.annotation.RepositoryConfig; +import de.intevation.lada.util.auth.Authorization; +import de.intevation.lada.util.auth.AuthorizationType; +import de.intevation.lada.util.data.Repository; +import de.intevation.lada.util.data.RepositoryType; +import de.intevation.lada.util.rest.RequestMethod; +import de.intevation.lada.util.rest.Response; + +/** + * REST service for Probenehmer objects. + *

+ * The services produce data in the application/json media type. + * A typical response holds information about the action performed and the data. + *

+ * 
+ * {
+ *  "success": [boolean];
+ *  "message": [string],
+ *  "data":[{
+ *      "id": [number],
+ *      "mstId": [string],
+ *      "netzbetreiberId": [string]
+ *  }],
+ *  "errors": [object],
+ *  "warnings": [object],
+ *  "readonly": [boolean],
+ *  "totalCount": [number]
+ * }
+ * 
+ * 
+ * + * @author Raimund Renkert + */ +@Path("rest/probenehmer") +@RequestScoped +public class ProbenehmerService { + + /** + * The data repository granting read access. + */ + @Inject + @RepositoryConfig(type=RepositoryType.RW) + private Repository repository; + + @Inject + @AuthorizationConfig(type=AuthorizationType.HEADER) + private Authorization authorization; + + /** + * Get all Probenehmer objects. + *

+ * Example: http://example.com/probenehmer + * + * @return Response object containing all objects. + */ + @GET + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Response get( + @Context HttpHeaders headers, + @Context UriInfo info + ) { + return repository.getAll(Probenehmer.class, "stamm"); + } + + /** + * Get a single Datenbasis object by id. + *

+ * The id is appended to the URL as a path parameter. + *

+ * Example: http://example.com/probenehmer/{id} + * + * @return Response object containing a single object. + */ + @GET + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response getById( + @Context HttpHeaders headers, + @PathParam("id") String id + ) { + return repository.getById( + Probenehmer.class, + Integer.valueOf(id), + "stamm"); + } + + @POST + @Path("/") + @Produces(MediaType.APPLICATION_JSON) + public Response create( + @Context HttpServletRequest request, + Probenehmer probenehmer + ) { + if (!authorization.isAuthorized( + request, + probenehmer, + RequestMethod.POST, + Probenehmer.class) + ) { + return new Response(false, 699, probenehmer); + } + + return repository.create(probenehmer, "stamm"); + } + + @PUT + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response update( + @Context HttpServletRequest request, + Probenehmer probenehmer + ) { + if (!authorization.isAuthorized( + request, + probenehmer, + RequestMethod.PUT, + Probenehmer.class) + ) { + return new Response(false, 699, probenehmer); + } + + return repository.update(probenehmer, "stamm"); + } + + @DELETE + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response delete( + @Context HttpServletRequest request, + @PathParam("id") String id + ) { + Probenehmer probenehmer = repository.getByIdPlain( + Probenehmer.class, Integer.valueOf(id), "stamm"); + if (probenehmer == null || + !authorization.isAuthorized( + request, + probenehmer, + RequestMethod.DELETE, + Probenehmer.class + ) + ) { + return new Response(false, 699, null); + } + return repository.delete(probenehmer, "stamm"); + } +}