All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy