From fb61ec8d34ccf3b6d12d32e2a27fff48e216cd81 Mon Sep 17 00:00:00 2001 From: Artem Shilin Date: Thu, 14 May 2020 15:11:08 +0200 Subject: [PATCH] Sort order parameter for data messages request --- .../api/resources/v1/resources/DataMessages.java | 14 ++++++++++++-- .../resources/v1/resources/DataMessagesJson.java | 6 ++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/rest-api/resources/src/main/java/org/eclipse/kapua/app/api/resources/v1/resources/DataMessages.java b/rest-api/resources/src/main/java/org/eclipse/kapua/app/api/resources/v1/resources/DataMessages.java index 38782dce6df..960034a3689 100644 --- a/rest-api/resources/src/main/java/org/eclipse/kapua/app/api/resources/v1/resources/DataMessages.java +++ b/rest-api/resources/src/main/java/org/eclipse/kapua/app/api/resources/v1/resources/DataMessages.java @@ -12,7 +12,6 @@ package org.eclipse.kapua.app.api.resources.v1.resources; import com.google.common.base.Strings; - import org.eclipse.kapua.KapuaException; import org.eclipse.kapua.app.api.resources.v1.resources.model.CountResult; import org.eclipse.kapua.app.api.resources.v1.resources.model.DateParam; @@ -28,16 +27,20 @@ import org.eclipse.kapua.service.datastore.client.model.InsertResponse; import org.eclipse.kapua.service.datastore.internal.mediator.ChannelInfoField; import org.eclipse.kapua.service.datastore.internal.mediator.MessageField; +import org.eclipse.kapua.service.datastore.internal.schema.MessageSchema; import org.eclipse.kapua.service.datastore.model.DatastoreMessage; import org.eclipse.kapua.service.datastore.model.MessageListResult; import org.eclipse.kapua.service.datastore.model.query.AndPredicate; import org.eclipse.kapua.service.datastore.model.query.MessageQuery; import org.eclipse.kapua.service.datastore.model.query.RangePredicate; +import org.eclipse.kapua.service.datastore.model.query.SortField; +import org.eclipse.kapua.service.datastore.model.query.SortDirection; import org.eclipse.kapua.service.datastore.model.query.StorableFetchStyle; import org.eclipse.kapua.service.datastore.model.query.StorablePredicate; import org.eclipse.kapua.service.datastore.model.query.StorablePredicateFactory; import org.eclipse.kapua.service.datastore.model.query.TermPredicate; + import javax.ws.rs.Consumes; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; @@ -48,7 +51,9 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import java.util.ArrayList; import java.util.Date; +import java.util.List; @Path("{scopeId}/data/messages") public class DataMessages extends AbstractKapuaResource { @@ -88,7 +93,8 @@ public > MessageListResult simpleQuery( // @QueryParam("metricMin") String metricMinValue, // @QueryParam("metricMax") String metricMaxValue, // @QueryParam("offset") @DefaultValue("0") int offset,// - @QueryParam("limit") @DefaultValue("50") int limit) throws KapuaException { + @QueryParam("limit") @DefaultValue("50") int limit, + @QueryParam("order") @DefaultValue("desc") String order) throws KapuaException { AndPredicate andPredicate = STORABLE_PREDICATE_FACTORY.newAndPredicate(); if (!Strings.isNullOrEmpty(clientId)) { @@ -116,6 +122,10 @@ public > MessageListResult simpleQuery( // query.setOffset(offset); query.setLimit(limit); + List sort = new ArrayList<>(); + sort.add(SortField.of(SortDirection.valueOf(order.toUpperCase()), MessageSchema.MESSAGE_TIMESTAMP)); + query.setSortFields(sort); + return query(scopeId, query); } diff --git a/rest-api/resources/src/main/java/org/eclipse/kapua/app/api/resources/v1/resources/DataMessagesJson.java b/rest-api/resources/src/main/java/org/eclipse/kapua/app/api/resources/v1/resources/DataMessagesJson.java index 7faf85c2e7b..31999ee9c0c 100644 --- a/rest-api/resources/src/main/java/org/eclipse/kapua/app/api/resources/v1/resources/DataMessagesJson.java +++ b/rest-api/resources/src/main/java/org/eclipse/kapua/app/api/resources/v1/resources/DataMessagesJson.java @@ -91,7 +91,8 @@ public > JsonMessageListResult simpleQueryJson( @QueryParam("metricMin") String metricMinValue, @QueryParam("metricMax") String metricMaxValue, @QueryParam("offset") @DefaultValue("0") int offset, - @QueryParam("limit") @DefaultValue("50") int limit) throws KapuaException { + @QueryParam("limit") @DefaultValue("50") int limit, + @QueryParam("order") @DefaultValue("desc") String order) throws KapuaException { MessageListResult result = DATA_MESSAGES.simpleQuery( scopeId, @@ -105,7 +106,8 @@ public > JsonMessageListResult simpleQueryJson( metricMinValue, metricMaxValue, offset, - limit); + limit, + order); List jsonDatastoreMessages = new ArrayList<>(); result.getItems().forEach(m -> jsonDatastoreMessages.add(new JsonDatastoreMessage(m)));