Move page object creation to PageResult class

This commit is contained in:
René Pfeuffer
2018-06-22 10:42:02 +02:00
parent 9ec3833a97
commit da0cb2a5a4
4 changed files with 27 additions and 21 deletions

View File

@@ -33,14 +33,10 @@
package sonia.scm;
import sonia.scm.util.Util;
import java.io.IOException;
import java.util.Collection;
import java.util.Comparator;
import static com.google.common.base.Preconditions.checkArgument;
/**
* Base interface for all manager classes.
*
@@ -141,14 +137,7 @@ public interface Manager<T extends ModelObject, E extends Exception>
* empty page result is returned.
*/
default PageResult<T> getPage(Comparator<T> comparator, int pageNumber, int pageSize) {
checkArgument(pageSize > 0, "pageSize must be at least 1");
checkArgument(pageNumber >= 0, "pageNumber must be non-negative");
Collection<T> allEntities = getAll(comparator);
Collection<T> pagedEntities = Util.createSubCollection(allEntities, pageNumber * pageSize, pageSize);
return new PageResult<>(pagedEntities, allEntities.size());
return PageResult.createPage(getAll(comparator), pageNumber, pageSize);
}
}

View File

@@ -3,6 +3,9 @@ package sonia.scm;
import java.util.Collection;
import java.util.Collections;
import static com.google.common.base.Preconditions.checkArgument;
import static sonia.scm.util.Util.createSubCollection;
/**
* This represents the result of a page request. Contains the results for
* the page and the overall count of all elements.
@@ -12,6 +15,15 @@ public class PageResult<T extends ModelObject> {
private final Collection<T> entities;
private final int overallCount;
public static <T extends ModelObject> PageResult<T> createPage(Collection<T> allEntities, int pageNumber, int pageSize) {
checkArgument(pageSize > 0, "pageSize must be at least 1");
checkArgument(pageNumber >= 0, "pageNumber must be non-negative");
Collection<T> pagedEntities = createSubCollection(allEntities, pageNumber * pageSize, pageSize);
return new PageResult<>(pagedEntities, allEntities.size());
}
public PageResult(Collection<T> entities, int overallCount) {
this.entities = entities;
this.overallCount = overallCount;