diff --git a/source/java/org/alfresco/util/ScriptPagingDetails.java b/source/java/org/alfresco/util/ScriptPagingDetails.java index 8b87cb2ed5..5c0cd83e66 100644 --- a/source/java/org/alfresco/util/ScriptPagingDetails.java +++ b/source/java/org/alfresco/util/ScriptPagingDetails.java @@ -1,5 +1,8 @@ package org.alfresco.util; +import org.alfresco.query.PagingRequest; +import org.alfresco.query.PagingResults; + /** * A simple paging details wrapper, to hold things like the * skip count, max items and total items. This is typically @@ -9,8 +12,10 @@ package org.alfresco.util; * Note that {@link org.alfresco.repo.web.paging.Paging} * provides an alternate solution for other paging * use cases. + * + * TODO Set a value for {@link #setRequestTotalCountMax(int)} */ -public class ScriptPagingDetails +public class ScriptPagingDetails extends PagingRequest { public enum ItemsSizeConfidence { EXACT, @@ -19,24 +24,21 @@ public class ScriptPagingDetails UNKNOWN }; - private int skipCount = -1; // TODO To PagingRequest - private String queryExecutionId = null; // TODO To PagingRequest - private int maxItems = -1; // TODO To PagingRequest - private int totalItems = -1; private int totalItemsRangeMax = -1; private ItemsSizeConfidence confidence = ItemsSizeConfidence.UNKNOWN; - public ScriptPagingDetails() {} + public ScriptPagingDetails() + { + super(-1, null); + } public ScriptPagingDetails(int maxItems, int skipCount) { this(maxItems, skipCount, null); } public ScriptPagingDetails(int maxItems, int skipCount, String queryExecutionId) { - this.maxItems = maxItems; - this.skipCount = skipCount; - this.queryExecutionId = queryExecutionId; + super(skipCount, maxItems, queryExecutionId); } public ItemsSizeConfidence getConfidence() @@ -52,6 +54,13 @@ public class ScriptPagingDetails { return totalItems; } + + /** + * Records the total number of items that were found. If the value is -1, + * then the confidence is set to {@link ItemsSizeConfidence#UNKNOWN}, otherwise + * the confidence is {@link ItemsSizeConfidence#EXACT} + * @param totalItems The total number of items the search found + */ public void setTotalItems(int totalItems) { this.totalItems = totalItems; @@ -66,6 +75,43 @@ public class ScriptPagingDetails } } + /** + * Records the total number of results found, and the confidence + * in this, from the Paging Results + * @param results The PagingResults to extract the information from + */ + public void setTotalItems(PagingResults results) + { + Integer min = results.getTotalResultCount().getFirst(); + Integer max = results.getTotalResultCount().getSecond(); + + // Get the total count and confidence + if(min == null) + { + this.totalItems = -1; + this.confidence = ItemsSizeConfidence.UNKNOWN; + } + else if(max == null) + { + this.totalItems = min; + this.confidence = ItemsSizeConfidence.AT_LEAST; + } + else if(min == max) + { + this.totalItems = min; + this.confidence = ItemsSizeConfidence.EXACT; + } + else + { + this.totalItems = min; + this.totalItemsRangeMax = max; + this.confidence = ItemsSizeConfidence.RANGE; + } + + // Finally record the query execution ID + setQueryExecutionId(results.getQueryExecutionId()); + } + /** * Where the confidence is {@link ItemsSizeConfidence#RANGE}, returns * the upper bound of the range. @@ -75,28 +121,17 @@ public class ScriptPagingDetails return totalItemsRangeMax; } - public int getMaxItems() - { - return maxItems; - } public void setMaxItems(int maxItems) { - this.maxItems = maxItems; + super.setMaxItems(maxItems); } - public int getSkipCount() - { - return skipCount; - } public void setSkipCount(int skipCount) { - this.skipCount = skipCount; + super.setSkipCount(skipCount); } - public String getQueryExecutionId() { - return queryExecutionId; - } public void setQueryExecutionId(String queryExecutionId) { - this.queryExecutionId = queryExecutionId; + super.setQueryExecutionId(queryExecutionId); } } \ No newline at end of file