# HG changeset patch # User Raimund Renkert # Date 1453387026 -3600 # Node ID 670f58112734f7ec46a66d27f3ca3118d2e5f411 # Parent 9f4be0bc724d48d1fba1a9fb3a0b4cbd9399671b Allow paging for editable stammdaten and set readonly attribute. diff -r 9f4be0bc724d -r 670f58112734 src/main/java/de/intevation/lada/rest/stamm/DatensatzErzeugerService.java --- a/src/main/java/de/intevation/lada/rest/stamm/DatensatzErzeugerService.java Thu Jan 21 15:36:33 2016 +0100 +++ b/src/main/java/de/intevation/lada/rest/stamm/DatensatzErzeugerService.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,6 +22,7 @@ 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; @@ -86,10 +89,32 @@ @Path("/") @Produces(MediaType.APPLICATION_JSON) public Response get( - @Context HttpHeaders headers, + @Context HttpServletRequest request, @Context UriInfo info ) { - return repository.getAll(DatensatzErzeuger.class, "stamm"); + MultivaluedMap params = info.getQueryParameters(); + List erzeuger = + repository.getAllPlain(DatensatzErzeuger.class, "stamm"); + int size = erzeuger.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 > erzeuger.size()) { + end = erzeuger.size(); + } + erzeuger = erzeuger.subList(start, end); + } + + for (DatensatzErzeuger erz : erzeuger) { + erz.setReadonly( + !authorization.isAuthorized( + request, + erz, + RequestMethod.POST, + DatensatzErzeuger.class)); + } + return new Response (true, 200, erzeuger, size); } /** diff -r 9f4be0bc724d -r 670f58112734 src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java --- 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 params = info.getQueryParameters(); + List 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); } /** diff -r 9f4be0bc724d -r 670f58112734 src/main/java/de/intevation/lada/rest/stamm/OrtService.java --- a/src/main/java/de/intevation/lada/rest/stamm/OrtService.java Thu Jan 21 15:36:33 2016 +0100 +++ b/src/main/java/de/intevation/lada/rest/stamm/OrtService.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; @@ -101,12 +103,31 @@ @Path("/") @Produces(MediaType.APPLICATION_JSON) public Response get( - @Context HttpHeaders headers, + @Context HttpServletRequest request, @Context UriInfo info ) { MultivaluedMap params = info.getQueryParameters(); if (params.isEmpty() || !params.containsKey("ortId")) { - return defaultRepo.getAll(Ort.class, "stamm"); + List orte = defaultRepo.getAllPlain(Ort.class, "stamm"); + int size = orte.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 > orte.size()) { + end = orte.size(); + } + orte = orte.subList(start, end); + } + for (Ort o : orte) { + o.setReadonly( + !authorization.isAuthorized( + request, + o, + RequestMethod.POST, + Ort.class)); + } + return new Response(true, 200, orte, size); } String ortId = params.getFirst("ortId"); QueryBuilder builder = diff -r 9f4be0bc724d -r 670f58112734 src/main/java/de/intevation/lada/rest/stamm/ProbenehmerService.java --- a/src/main/java/de/intevation/lada/rest/stamm/ProbenehmerService.java Thu Jan 21 15:36:33 2016 +0100 +++ b/src/main/java/de/intevation/lada/rest/stamm/ProbenehmerService.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.Probenehmer; import de.intevation.lada.util.annotation.AuthorizationConfig; import de.intevation.lada.util.annotation.RepositoryConfig; @@ -84,10 +86,32 @@ @Path("/") @Produces(MediaType.APPLICATION_JSON) public Response get( - @Context HttpHeaders headers, + @Context HttpServletRequest request, @Context UriInfo info ) { - return repository.getAll(Probenehmer.class, "stamm"); + MultivaluedMap params = info.getQueryParameters(); + List nehmer = + repository.getAllPlain(Probenehmer.class, "stamm"); + int size = nehmer.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 > nehmer.size()) { + end = nehmer.size(); + } + nehmer = nehmer.subList(start, end); + } + + for (Probenehmer p : nehmer) { + p.setReadonly( + !authorization.isAuthorized( + request, + p, + RequestMethod.POST, + Probenehmer.class)); + } + return new Response(true, 200, nehmer, size); } /**