Refactor PageableExecutionUtils.
Closes #3103 Original pull request #3113
This commit is contained in:
@@ -31,6 +31,7 @@ import org.springframework.util.Assert;
|
||||
* @author Oliver Gierke
|
||||
* @author Christoph Strobl
|
||||
* @author Jens Schauder
|
||||
* @author Jay Lee
|
||||
* @since 2.4
|
||||
*/
|
||||
public abstract class PageableExecutionUtils {
|
||||
@@ -54,19 +55,30 @@ public abstract class PageableExecutionUtils {
|
||||
Assert.notNull(pageable, "Pageable must not be null");
|
||||
Assert.notNull(totalSupplier, "TotalSupplier must not be null");
|
||||
|
||||
if (pageable.isUnpaged() || pageable.getOffset() == 0) {
|
||||
|
||||
if (pageable.isUnpaged() || pageable.getPageSize() > content.size()) {
|
||||
return new PageImpl<>(content, pageable, content.size());
|
||||
}
|
||||
|
||||
return new PageImpl<>(content, pageable, totalSupplier.getAsLong());
|
||||
if (pageable.isUnpaged()) {
|
||||
return new PageImpl<>(content, pageable, content.size());
|
||||
}
|
||||
|
||||
if (content.size() != 0 && pageable.getPageSize() > content.size()) {
|
||||
if (isFirstPage(pageable) && isPartialPage(content, pageable)) {
|
||||
return new PageImpl<>(content, pageable, content.size());
|
||||
}
|
||||
|
||||
if (isSubsequentPage(pageable) && !content.isEmpty() && isPartialPage(content, pageable)) {
|
||||
return new PageImpl<>(content, pageable, pageable.getOffset() + content.size());
|
||||
}
|
||||
|
||||
return new PageImpl<>(content, pageable, totalSupplier.getAsLong());
|
||||
}
|
||||
|
||||
private static <T> boolean isPartialPage(List<T> content, Pageable pageable) {
|
||||
return pageable.getPageSize() > content.size();
|
||||
}
|
||||
|
||||
private static boolean isFirstPage(Pageable pageable) {
|
||||
return pageable.getOffset() == 0;
|
||||
}
|
||||
|
||||
private static boolean isSubsequentPage(Pageable pageable) {
|
||||
return !isFirstPage(pageable);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user