diff src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java @ 843:670f58112734

Allow paging for editable stammdaten and set readonly attribute.
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 21 Jan 2016 15:37:06 +0100
parents 313bd1d227f1
children c2725534f08b
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java	Thu Jan 21 15:36:33 2016 +0100
+++ b/src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java	Thu Jan 21 15:37:06 2016 +0100
@@ -7,6 +7,8 @@
  */
 package de.intevation.lada.rest.stamm;
 
+import java.util.List;
+
 import javax.enterprise.context.RequestScoped;
 import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
@@ -20,9 +22,9 @@
 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.DatensatzErzeuger;
 import de.intevation.lada.model.stamm.MessprogrammKategorie;
 import de.intevation.lada.util.annotation.AuthorizationConfig;
 import de.intevation.lada.util.annotation.RepositoryConfig;
@@ -87,10 +89,32 @@
     @Path("/")
     @Produces(MediaType.APPLICATION_JSON)
     public Response get(
-        @Context HttpHeaders headers,
+        @Context HttpServletRequest request,
         @Context UriInfo info
     ) {
-        return repository.getAll(MessprogrammKategorie.class, "stamm");
+        MultivaluedMap<String, String> params = info.getQueryParameters();
+        List<MessprogrammKategorie> kategorie =
+            repository.getAllPlain(MessprogrammKategorie.class, "stamm");
+        int size = kategorie.size();
+        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 > kategorie.size()) {
+                end = kategorie.size();
+            }
+            kategorie = kategorie.subList(start, end);
+        }
+
+        for (MessprogrammKategorie mk : kategorie) {
+            mk.setReadonly(
+                !authorization.isAuthorized(
+                    request,
+                    mk,
+                    RequestMethod.POST,
+                    MessprogrammKategorie.class));
+        }
+        return new Response(true, 200, kategorie, size);
     }
 
     /**
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)