From dd7ad6840ec8dd85187c845e8d59b276db66c634 Mon Sep 17 00:00:00 2001 From: "luca.frosini" Date: Thu, 9 Nov 2023 17:38:51 +0100 Subject: [PATCH] Added pagination support --- .../templates/QueryTemplateManagement.java | 19 +++++++++++++++++-- .../resourceregistry/rest/Access.java | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagement.java index 32eb61f..59ae54b 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagement.java @@ -3,8 +3,6 @@ package org.gcube.informationsystem.resourceregistry.queries.templates; import java.util.HashMap; import java.util.UUID; -import javax.ws.rs.BadRequestException; - import org.gcube.com.fasterxml.jackson.core.JsonProcessingException; import org.gcube.com.fasterxml.jackson.databind.JsonNode; import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; @@ -30,6 +28,8 @@ import org.gcube.informationsystem.resourceregistry.instances.base.ElementManage import org.gcube.informationsystem.resourceregistry.instances.base.entities.EntityElementManagement; import org.gcube.informationsystem.resourceregistry.instances.model.Operation; import org.gcube.informationsystem.resourceregistry.queries.json.JsonQuery; +import org.gcube.informationsystem.resourceregistry.requests.RequestUtility; +import org.gcube.informationsystem.resourceregistry.requests.ServerRequestInfo; import org.gcube.informationsystem.resourceregistry.utils.OrientDBUtility; import org.gcube.informationsystem.serialization.ElementMapper; import org.gcube.informationsystem.types.reference.entities.EntityType; @@ -348,13 +348,28 @@ public class QueryTemplateManagement extends EntityElementManagement iterable = oDatabaseDocument.browseClass(typeName, polymorphic); for (ODocument vertex : iterable) { + if(++position < offset) { + continue; + } + QueryTemplateManagement queryTemplateManagement = new QueryTemplateManagement(); queryTemplateManagement.setElement((OVertex) vertex); try { JsonNode jsonObject = queryTemplateManagement.serializeAsJsonNode(); arrayNode.add(jsonObject); + if(limit > 0 && ++count >= limit) { + break; + } } catch (ResourceRegistryException e) { logger.error("Unable to correctly serialize {}. It will be excluded from results. {}", vertex.toString(), OrientDBUtility.SHOULD_NOT_OCCUR_ERROR_MESSAGE); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java index 4374d0e..1cb5c98 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java @@ -155,6 +155,7 @@ public class Access extends BaseRest { ServerRequestInfo serverRequestInfo = initRequestInfo(); serverRequestInfo.setAllMeta(true); serverRequestInfo.checkBooleanQueryParameter(ContextPath.INCLUDE_META_QUERY_PARAMETER); + serverRequestInfo.checkLimitOffset(); QueryTemplateManagement queryTemplateManagement = new QueryTemplateManagement(); return queryTemplateManagement.all(false);