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

cn.featherfly.web.pagination.RequestParameterPageFactory Maven / Gradle / Ivy

The newest version!

package cn.featherfly.web.pagination;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import cn.featherfly.common.lang.AssertIllegalArgument;
import cn.featherfly.common.lang.NumberUtils;
import cn.featherfly.common.structure.page.Page;
import cn.featherfly.common.structure.page.SimplePagination;
import jakarta.servlet.http.HttpServletRequest;

/**
 * RequestParameterPageFactory.
 *
 * @author 钟冀
 */
public class RequestParameterPageFactory implements PageFactory {

    protected final Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * {@inheritDoc}
     */
    @Override
    public Page create(HttpServletRequest request) {
        Object p = request.getParameter(pageNumberName);

        Integer pageNumber = NumberUtils.parse(p + "", defaultPageNumber);

        SimplePagination pagination = new SimplePagination();

        pagination.setNumber(pageNumber);

        pagination.setSize(getPageSize(request));

        return pagination;
    }

    private int getPageSize(HttpServletRequest request) {
        if (allowDaynmicPageSize) {
            Object ps = request.getParameter(pageSizeName);
            int pageSize = NumberUtils.parse(ps + "", defaultPageSize);
            if (pageSize > allowMaxPageSize) {
                logger.debug("pageSize({}) > allowMaxPageSize({}), set pageSize = allowMaxPageSize");
                pageSize = allowMaxPageSize;
            }
            return pageSize;
        }
        return defaultPageSize;
    }

    //	private Integer getPageNumberSize(HttpServletRequest request) {
    //		if (allowDaynmicPageNumberSize) {
    //			Object ps = request.getParameter(pageNumberName);
    //			return StringUtils.parse(ps + "", defaultPageNumberSize);
    //		}
    //		return defaultPageNumberSize;
    //	}

    // ********************************************************************
    //	property
    // ********************************************************************

    private boolean allowDaynmicPageSize;

    //	private boolean allowDaynmicPageNumberSize;

    // 每页显示数量
    private String pageSizeName = "_ps";

    // 第几页
    private String pageNumberName = "_p";

    // 显示分页页数的个数
    //	private String pageNumberSizeName = "_pns";

    // 默认每页显示数量
    private int defaultPageSize = 10;

    // 默认显示分页页数的个数
    private int defaultPageNumberSize = 10;

    // 默认显示的页
    private int defaultPageNumber = 1;

    // 允许的每页显示最大数
    private int allowMaxPageSize = 10;

    /**
     * 返回pageSizeName
     *
     * @return pageSizeName
     */
    public String getPageSizeName() {
        return pageSizeName;
    }

    /**
     * 设置pageSizeName
     *
     * @param pageSizeName pageSizeName
     */
    public void setPageSizeName(String pageSizeName) {
        AssertIllegalArgument.isNotEmpty(pageSizeName, "pageSizeName不能为空");
        this.pageSizeName = pageSizeName;
    }

    /**
     * 返回pageNumberName
     *
     * @return pageNumberName
     */
    public String getPageNumberName() {
        return pageNumberName;
    }

    /**
     * 设置pageNumberName
     *
     * @param pageNumberName pageNumberName
     */
    public void setPageNumberName(String pageNumberName) {
        AssertIllegalArgument.isNotEmpty(pageNumberName, "pageNumberName不能为空");
        this.pageNumberName = pageNumberName;
    }

    /**
     * 返回defaultPageSize
     *
     * @return defaultPageSize
     */
    public int getDefaultPageSize() {
        return defaultPageSize;
    }

    /**
     * 设置defaultPageSize
     *
     * @param defaultPageSize defaultPageSize
     */
    public void setDefaultPageSize(int defaultPageSize) {
        this.defaultPageSize = defaultPageSize;
    }

    /**
     * 返回defaultPageNumberSize
     *
     * @return defaultPageNumberSize
     */
    public int getDefaultPageNumberSize() {
        return defaultPageNumberSize;
    }

    /**
     * 设置defaultPageNumberSize
     *
     * @param defaultPageNumberSize defaultPageNumberSize
     */
    public void setDefaultPageNumberSize(int defaultPageNumberSize) {
        this.defaultPageNumberSize = defaultPageNumberSize;
    }

    /**
     * 返回defaultPageNumber
     *
     * @return defaultPageNumber
     */
    public int getDefaultPageNumber() {
        return defaultPageNumber;
    }

    /**
     * 设置defaultPageNumber
     *
     * @param defaultPageNumber defaultPageNumber
     */
    public void setDefaultPageNumber(int defaultPageNumber) {
        this.defaultPageNumber = defaultPageNumber;
    }

    /**
     * 返回allowDaynmicPageSize
     *
     * @return allowDaynmicPageSize
     */
    public boolean isAllowDaynmicPageSize() {
        return allowDaynmicPageSize;
    }

    /**
     * 设置allowDaynmicPageSize
     *
     * @param allowDaynmicPageSize allowDaynmicPageSize
     */
    public void setAllowDaynmicPageSize(boolean allowDaynmicPageSize) {
        this.allowDaynmicPageSize = allowDaynmicPageSize;
    }

    /**
     * 返回allowMaxPageSize
     *
     * @return allowMaxPageSize
     */
    public int getAllowMaxPageSize() {
        return allowMaxPageSize;
    }

    /**
     * 设置allowMaxPageSize
     *
     * @param allowMaxPageSize allowMaxPageSize
     */
    public void setAllowMaxPageSize(int allowMaxPageSize) {
        this.allowMaxPageSize = allowMaxPageSize;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy