net.jrouter.paging.component.Page Maven / Gradle / Ivy
package net.jrouter.paging.component;
import java.util.List;
/**
* 分页模型接口。
*
* @param Generic type 分页结果类型。
*/
public interface Page { //NOPMD for ShortClassName
/**
* Returns the page to be returned.
*
* @return the page to be returned.
*/
int getPageNumber();
/**
* 返回最大下一页标签。
*
* @return 最大下一页标签;可能为负值。
*
* @see #getMaxResults()
* @see #setContent(java.util.List)
*/
default int getMaxNextPageNumber() {
return getTotalPages();
}
/**
* Returns the number of items to be returned.
*
* @return the number of items of that page
*/
int getPageSize();
/**
* 是否自动执行count以计算{@code totalPages}。
*
* @return {@code true} if auto automatically, otherwise {@code false}.
*/
boolean isAutoCount();
/**
* Returns the total page to be returned.
*
* @return the total page to be returned.
*/
int getTotalPages();
/**
* Get max elements size really need to get.
*
* @return Amount of elements really need to get.
*/
default int getMaxResults() {
return getPageSize();
}
/**
* Set total elements size and check.
*
* @param totalElements 设置数据总数目以计算分页各参数。
*/
void countTotalElements(long totalElements);
/**
* Get total elements of count, return -1 if not count.
*
* @return Total elements of count.
*/
default Long getTotalElements() {
return null;
}
/**
* 设置实际查询的单页数据(包含偏移量)列表,并计算偏移量。
*
* @param content 实际查询的数据量。
*
* @see #getMaxResults()
*/
void setContent(List content);
/**
* 获取列表数据。
*
* @return 列表数据。
*/
List getContent();
}