[Lada-commits] [PATCH 4 of 4] Added services for messprogramm and messprogrammmmt
Wald Commits
scm-commit at wald.intevation.org
Mon Apr 27 18:50:39 CEST 2015
# HG changeset patch
# User Raimund Renkert <raimund.renkert at intevation.de>
# Date 1430153483 -7200
# Node ID 4211a1e32f51a3dd2f76b8117a9c4100bce1689c
# Parent cdcb7a141529a7a0161f5490adf883fad8881b8b
Added services for messprogramm and messprogrammmmt.
diff -r cdcb7a141529 -r 4211a1e32f51 src/main/java/de/intevation/lada/rest/MessprogrammMmtService.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/intevation/lada/rest/MessprogrammMmtService.java Mon Apr 27 18:51:23 2015 +0200
@@ -0,0 +1,249 @@
+/* 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;
+
+import java.sql.Timestamp;
+import java.util.Date;
+
+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.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.UriInfo;
+
+import de.intevation.lada.model.land.Messprogramm;
+import de.intevation.lada.model.land.MessprogrammMmt;
+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 MessprogrammMmt objects.
+ * <p>
+ * The services produce data in the application/json media type.
+ * All HTTP methods use the authorization module to determine if the user is
+ * allowed to perform the requested action.
+ * A typical response holds information about the action performed and the data.
+ * <pre>
+ * <code>
+ * {
+ * "success": [boolean];
+ * "message": [string],
+ * "data":[{
+ * }],
+ * "errors": [object],
+ * "warnings": [object],
+ * "readonly": [boolean],
+ * "totalCount": [number]
+ * }
+ * </code>
+ * </pre>
+ *
+ * @author <a href="mailto:rrenkert at intevation.de">Raimund Renkert</a>
+ */
+ at Path("messprogrammmmt")
+ at RequestScoped
+public class MessprogrammMmtService {
+
+ /**
+ * The data repository granting read/write access.
+ */
+ @Inject
+ @RepositoryConfig(type=RepositoryType.RW)
+ private Repository defaultRepo;
+
+ /**
+ * The authorization module.
+ */
+ @Inject
+ @AuthorizationConfig(type=AuthorizationType.OPEN_ID)
+ private Authorization authorization;
+
+ /**
+ * Get all MessprogrammMmt objects.
+ * <p>
+ * The requested objects can be filtered using a URL parameter named
+ * messprogrammId.
+ * <p>
+ * Example: http://example.com/messprogrammmmt?messprogrammId=[ID]
+ *
+ * @return Response object containing all MessprogrammMmt objects.
+ */
+ @GET
+ @Path("/")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response get(
+ @Context UriInfo info,
+ @Context HttpServletRequest request
+ ) {
+ MultivaluedMap<String, String> params = info.getQueryParameters();
+ if (params.isEmpty() || !params.containsKey("messprogrammId")) {
+ return defaultRepo.getAll(MessprogrammMmt.class, "land");
+ }
+ String messprogrammId = params.getFirst("messprogrammId");
+ QueryBuilder<MessprogrammMmt> builder =
+ new QueryBuilder<MessprogrammMmt>(
+ defaultRepo.entityManager("land"),
+ MessprogrammMmt.class);
+ builder.and("messprogrammId", messprogrammId);
+ return authorization.filter(
+ request,
+ defaultRepo.filter(builder.getQuery(), "land"),
+ MessprogrammMmt.class);
+ }
+
+ /**
+ * Get a MessprogrammMmt object by id.
+ * <p>
+ * The id is appended to the URL as a path parameter.
+ * <p>
+ * Example: http://example.com/messprogrammmmt/{id}
+ *
+ * @return Response object containing a single MessprogrammMmt.
+ */
+ @GET
+ @Path("/{id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response getById(
+ @Context HttpServletRequest request,
+ @PathParam("id") String id
+ ) {
+ return authorization.filter(
+ request,
+ defaultRepo.getById(MessprogrammMmt.class, Integer.valueOf(id), "land"),
+ MessprogrammMmt.class);
+ }
+
+ /**
+ * Create a MessprogrammMmt object.
+ * <p>
+ * The new object is embedded in the post data as JSON formatted string.
+ * <p>
+ * <pre>
+ * <code>
+ * {
+ * }
+ * </code>
+ * </pre>
+ *
+ * @return A response object containing the created MessprogrammMmt.
+ */
+ @POST
+ @Path("/")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response create(
+ @Context HttpServletRequest request,
+ MessprogrammMmt messprogrammmmt
+ ) {
+ if (!authorization.isAuthorized(
+ request,
+ messprogrammmmt,
+ RequestMethod.POST,
+ MessprogrammMmt.class)
+ ) {
+ return new Response(false, 699, null);
+ }
+
+ /* Persist the new messprogrammmmt object*/
+ Response response = defaultRepo.create(messprogrammmmt, "land");
+ MessprogrammMmt ret = (MessprogrammMmt)response.getData();
+ Response created =
+ defaultRepo.getById(MessprogrammMmt.class, ret.getId(), "land");
+ return authorization.filter(
+ request,
+ new Response(true, 200, created.getData()),
+ MessprogrammMmt.class);
+ }
+
+ /**
+ * Update an existing MessprogrammMmt object.
+ * <p>
+ * The object to update should come as JSON formatted string.
+ * <pre>
+ * <code>
+ * {
+ * }
+ * </code>
+ * </pre>
+ *
+ * @return Response object containing the updated MessprogrammMmt object.
+ */
+ @PUT
+ @Path("/{id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response update(
+ @Context HttpServletRequest request,
+ MessprogrammMmt messprogrammmmt
+ ) {
+ if (!authorization.isAuthorized(
+ request,
+ messprogrammmmt,
+ RequestMethod.PUT,
+ MessprogrammMmt.class)
+ ) {
+ return new Response(false, 699, null);
+ }
+ messprogrammmmt.setLetzteAenderung(new Timestamp(new Date().getTime()));
+ Response response = defaultRepo.update(messprogrammmmt, "land");
+ Response updated = defaultRepo.getById(
+ MessprogrammMmt.class,
+ ((MessprogrammMmt)response.getData()).getId(), "land");
+ return authorization.filter(
+ request,
+ updated,
+ MessprogrammMmt.class);
+ }
+
+ /**
+ * Delete an existing MessprogrammMmt object by id.
+ * <p>
+ * The id is appended to the URL as a path parameter.
+ * <p>
+ * Example: http://example.com/messprogammmmt/{id}
+ *
+ * @return Response object.
+ */
+ @DELETE
+ @Path("/{id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response delete(
+ @Context HttpServletRequest request,
+ @PathParam("id") String id
+ ) {
+ /* Get the messprogrammmmt object by id*/
+ Response messprogrammmmt =
+ defaultRepo.getById(MessprogrammMmt.class, Integer.valueOf(id), "land");
+ MessprogrammMmt messprogrammmmtObj = (MessprogrammMmt)messprogrammmmt.getData();
+ if (!authorization.isAuthorized(
+ request,
+ messprogrammmmtObj,
+ RequestMethod.DELETE,
+ Messprogramm.class)
+ ) {
+ return new Response(false, 699, null);
+ }
+ /* Delete the messprogrammmmt object*/
+ Response response = defaultRepo.delete(messprogrammmmtObj, "land");
+ return response;
+ }
+}
diff -r cdcb7a141529 -r 4211a1e32f51 src/main/java/de/intevation/lada/rest/MessprogrammService.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/intevation/lada/rest/MessprogrammService.java Mon Apr 27 18:51:23 2015 +0200
@@ -0,0 +1,306 @@
+/* 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;
+
+import java.io.StringReader;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonException;
+import javax.json.JsonObject;
+import javax.json.JsonReader;
+import javax.persistence.Query;
+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.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.UriInfo;
+
+import de.intevation.lada.model.land.Messprogramm;
+import de.intevation.lada.query.QueryTools;
+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 Messprogramm objects.
+ * <p>
+ * The services produce data in the application/json media type.
+ * All HTTP methods use the authorization module to determine if the user is
+ * allowed to perform the requested action.
+ * A typical response holds information about the action performed and the data.
+ * <pre>
+ * <code>
+ * {
+ * "success": [boolean];
+ * "message": [string],
+ * "data":[{
+ * }],
+ * "errors": [object],
+ * "warnings": [object],
+ * "readonly": [boolean],
+ * "totalCount": [number]
+ * }
+ * </code>
+ * </pre>
+ *
+ * @author <a href="mailto:rrenkert at intevation.de">Raimund Renkert</a>
+ */
+ at Path("messprogramm")
+ at RequestScoped
+public class MessprogrammService {
+
+ /**
+ * The data repository granting read/write access.
+ */
+ @Inject
+ @RepositoryConfig(type=RepositoryType.RW)
+ private Repository defaultRepo;
+
+ /**
+ * The authorization module.
+ */
+ @Inject
+ @AuthorizationConfig(type=AuthorizationType.OPEN_ID)
+ private Authorization authorization;
+
+ /**
+ * Get all Messprogramm objects.
+ * <p>
+ * The requested objects can be filtered using the following URL
+ * parameters:<br>
+ * * qid: The id of the query.<br>
+ * * page: The page to display in a paginated result grid.<br>
+ * * start: The first Probe item.<br>
+ * * limit: The count of Probe items.<br>
+ * * sort: Sort the result ascending(ASC) or descenting (DESC).<br>
+ * <br>
+ * The response data contains a stripped set of Probe objects. The returned fields
+ * are defined in the query used in the request.
+ * <p>
+ * Example:
+ * http://example.com/probe?qid=[ID]&page=[PAGE]&start=[START]&limit=[LIMIT]&sort=[{"property":"probeId","direction":"ASC"}]
+ *
+ * @return Response object containing all Messprogramm objects.
+ */
+ @GET
+ @Path("/")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response get(
+ @Context UriInfo info,
+ @Context HttpServletRequest request
+ ) {
+ MultivaluedMap<String, String> params = info.getQueryParameters();
+ if (params.isEmpty() || !params.containsKey("qid")) {
+ return defaultRepo.getAll(Messprogramm.class, "land");
+ }
+ String qid = params.getFirst("qid");
+ JsonObject jsonQuery = QueryTools.getMpQueryById(qid);
+ String sql = "";
+ List<String> filters = new ArrayList<String>();
+ List<String> results = new ArrayList<String>();
+ try {
+ sql = jsonQuery.getString("sql");
+ if (params.containsKey("sort")) {
+ String sort = params.getFirst("sort");
+ JsonReader reader = Json.createReader(new StringReader(sort));
+ JsonObject sortProperties = reader.readArray().getJsonObject(0);
+ sql += " ORDER BY ";
+ sql += sortProperties.getJsonString("property").getString() + " ";
+ sql += sortProperties.getJsonString("direction").getString();
+ }
+ JsonArray jsonFilters = jsonQuery.getJsonArray("filters");
+ JsonArray jsonResults = jsonQuery.getJsonArray("result");
+ for (int i = 0; i < jsonFilters.size(); i++) {
+ filters.add(
+ jsonFilters.getJsonObject(i).getString("dataIndex"));
+ }
+ results.add("id");
+ for (int i = 0; i < jsonResults.size(); i++) {
+ results.add(
+ jsonResults.getJsonObject(i).getString("dataIndex"));
+ }
+ }
+ catch (JsonException je) {
+ return new Response(false, 603, new ArrayList<Object>());
+ }
+ Query query = QueryTools.prepareQuery(
+ sql,
+ filters,
+ params,
+ defaultRepo.entityManager("land"));
+ @SuppressWarnings("unchecked")
+ List<Map<String, Object>> result =
+ QueryTools.prepareResult(query.getResultList(), results);
+ if (params.containsKey("start") && params.containsKey("limit")) {
+ int start = Integer.valueOf(params.getFirst("start"));
+ int limit = Integer.valueOf(params.getFirst("limit"));
+ int end = limit + start;
+ if (start + limit > result.size()) {
+ end = result.size();
+ }
+ List<Map<String, Object>> subList = result.subList(start, end);
+ return new Response(true, 200, subList, result.size());
+ }
+ return new Response(true, 200, result, result.size());
+ }
+
+ /**
+ * Get a Messprogramm object by id.
+ * <p>
+ * The id is appended to the URL as a path parameter.
+ * <p>
+ * Example: http://example.com/messprogramm/{id}
+ *
+ * @return Response object containing a single Messprogramm.
+ */
+ @GET
+ @Path("/{id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response getById(
+ @Context HttpServletRequest request,
+ @PathParam("id") String id
+ ) {
+ return authorization.filter(
+ request,
+ defaultRepo.getById(Messprogramm.class, Integer.valueOf(id), "land"),
+ Messprogramm.class);
+ }
+
+ /**
+ * Create a Messprogramm object.
+ * <p>
+ * The new object is embedded in the post data as JSON formatted string.
+ * <p>
+ * <pre>
+ * <code>
+ * {
+ * }
+ * </code>
+ * </pre>
+ *
+ * @return A response object containing the created Messprogramm.
+ */
+ @POST
+ @Path("/")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response create(
+ @Context HttpServletRequest request,
+ Messprogramm messprogramm
+ ) {
+ if (!authorization.isAuthorized(
+ request,
+ messprogramm,
+ RequestMethod.POST,
+ Messprogramm.class)
+ ) {
+ return new Response(false, 699, null);
+ }
+
+ /* Persist the new messprogramm object*/
+ Response response = defaultRepo.create(messprogramm, "land");
+ Messprogramm ret = (Messprogramm)response.getData();
+ Response created =
+ defaultRepo.getById(Messprogramm.class, ret.getId(), "land");
+ return authorization.filter(
+ request,
+ new Response(true, 200, created.getData()),
+ Messprogramm.class);
+ }
+
+ /**
+ * Update an existing Messprogramm object.
+ * <p>
+ * The object to update should come as JSON formatted string.
+ * <pre>
+ * <code>
+ * {
+ * }
+ * </code>
+ * </pre>
+ *
+ * @return Response object containing the updated Messprogramm object.
+ */
+ @PUT
+ @Path("/{id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response update(
+ @Context HttpServletRequest request,
+ Messprogramm messprogramm
+ ) {
+ if (!authorization.isAuthorized(
+ request,
+ messprogramm,
+ RequestMethod.PUT,
+ Messprogramm.class)
+ ) {
+ return new Response(false, 699, null);
+ }
+ messprogramm.setLetzteAenderung(new Timestamp(new Date().getTime()));
+ Response response = defaultRepo.update(messprogramm, "land");
+ Response updated = defaultRepo.getById(
+ Messprogramm.class,
+ ((Messprogramm)response.getData()).getId(), "land");
+ return authorization.filter(
+ request,
+ updated,
+ Messprogramm.class);
+ }
+
+ /**
+ * Delete an existing Messprogramm object by id.
+ * <p>
+ * The id is appended to the URL as a path parameter.
+ * <p>
+ * Example: http://example.com/messprogamm/{id}
+ *
+ * @return Response object.
+ */
+ @DELETE
+ @Path("/{id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response delete(
+ @Context HttpServletRequest request,
+ @PathParam("id") String id
+ ) {
+ /* Get the messung object by id*/
+ Response messprogramm =
+ defaultRepo.getById(Messprogramm.class, Integer.valueOf(id), "land");
+ Messprogramm messprogrammObj = (Messprogramm)messprogramm.getData();
+ if (!authorization.isAuthorized(
+ request,
+ messprogrammObj,
+ RequestMethod.DELETE,
+ Messprogramm.class)
+ ) {
+ return new Response(false, 699, null);
+ }
+ /* Delete the messprogramm object*/
+ Response response = defaultRepo.delete(messprogrammObj, "land");
+ return response;
+ }
+}
More information about the Lada-commits
mailing list