# HG changeset patch # User Raimund Renkert # Date 1426753669 -3600 # Node ID 9dd72a2860b50ead88538dbb4ad7d53dd9624153 # Parent 20e87ff455c0f129f25754e45df46b872ffd7a22 Use paging parameters to send sublists of the result. diff -r 20e87ff455c0 -r 9dd72a2860b5 src/main/java/de/intevation/lada/rest/ProbeService.java --- a/src/main/java/de/intevation/lada/rest/ProbeService.java Wed Mar 18 15:44:23 2015 +0100 +++ b/src/main/java/de/intevation/lada/rest/ProbeService.java Thu Mar 19 09:27:49 2015 +0100 @@ -7,14 +7,18 @@ */ package de.intevation.lada.rest; +import java.io.StringReader; import java.util.ArrayList; 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.ws.rs.DELETE; import javax.ws.rs.GET; @@ -110,6 +114,14 @@ List results = new ArrayList(); try { sql = jsonQuery.getString("sql"); + if (params.containsKey("sort")) { + String sort = params.getFirst("sort"); + JsonReader reader = Json.createReader(new StringReader(sort)); + JsonObject sortProperties = reader.readObject(); + sql += " ORDER BY "; + sql += sortProperties.getJsonString("property") + " "; + sql += sortProperties.getJsonString("direction"); + } JsonArray jsonFilters = jsonQuery.getJsonArray("filters"); JsonArray jsonResults = jsonQuery.getJsonArray("result"); for (int i = 0; i < jsonFilters.size(); i++) { @@ -130,7 +142,15 @@ filters, params, defaultRepo.entityManager("land")); - return new Response(true, 200, QueryTools.prepareResult(query.getResultList(), results)); + List> 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")); + List> subList = result.subList(start, limit + start); + return new Response(true, 200, subList, result.size()); + } + return new Response(true, 200, result, result.size()); } /**