package cn.estsh.i3plus.pojo.base.common;

/**
 * @Description:    分页辅助工具
 * @Refrence:
 * @Author : alwaysfrin
 * @CreateDate : 2018-09-04 15:58
 * @Modify:
 **/
public class PagerHelper {
    protected static Pager getPager(String pageSize,String currentPage,int totalRows,String pageMethod) {
        // 定义pager对象，用于传到页面
        Pager pager = null;

        if(pageSize != null){
            pager = new Pager(totalRows,Integer.parseInt(pageSize));
        }else{
            pager = new Pager(totalRows);
        }

        // 如果当前页号为空，表示为首次查询该页
        // 如果不为空，则刷新pager对象，输入当前页号等信息
        if (currentPage != null) {
            pager.refresh(Integer.parseInt(currentPage));
        }

        if (pageMethod != null) {
            if ("first".equals(pageMethod)) {
                pager.first();
            } else if ("previous".equals(pageMethod)) {
                pager.previous();
            } else if ("next".equals(pageMethod)) {
                pager.next();
            } else if ("last".equals(pageMethod)) {
                pager.last();
            }else{
                pager.go();
            }
        }else{
            pager.go();
        }
        return pager;
    }

    private static Pager getPager(int pageSize, int currentPage, int totalRows) {
        pageSize = pageSize == 0 ? 10 : pageSize;

        Pager pager = new Pager();
        pager.setPageSize(pageSize);
        pager.setTotalRows(totalRows);

        int totalPages = totalRows / pageSize;
        int mod = totalRows % pageSize;
        if (mod > 0) {
            totalPages++;
        }
        pager.setTotalPages(totalPages);
        if(currentPage > totalPages) {
            currentPage = totalPages;
        }
        pager.setCurrentPage(currentPage);

        int startRow = (currentPage - 1) * pageSize;
        pager.setStartRow(startRow);

        int endRow = 0;
        if (startRow + pageSize <= totalRows) {
            endRow = startRow + pageSize - 1;
        } else {
            endRow = totalRows;
        }
        pager.setEndRow(endRow);

        return pager;
    }


    public static Pager getPager(Pager oldPager,int rowCount){
        //Pager newPager = getPager(String.valueOf(oldPager.getPageSize()), String.valueOf(oldPager.getCurrentPage()), rowCount, oldPager.getPageMethod());
        Pager newPager = getPager(oldPager.getPageSize(), oldPager.getCurrentPage(), rowCount);
        return newPager;
    }

    public static void refreshPager(Pager pager,int rowCount){
        pager.setPageSize(pager.getPageSize() == 0 ? 10 : pager.getPageSize());
        pager.setTotalRows(rowCount);

        int totalPages = rowCount / pager.getPageSize();
        int mod = rowCount % pager.getPageSize();
        if (mod > 0) {
            totalPages++;
        }
        pager.setTotalPages(totalPages);
        if(pager.getCurrentPage() > totalPages) {
            pager.setCurrentPage(totalPages);
        }

        int startRow = (pager.getCurrentPage() - 1) * pager.getPageSize();
        pager.setStartRow(startRow);

        int endRow;
        if (startRow + pager.getPageSize() <= rowCount) {
            endRow = startRow + pager.getPageSize() - 1;
        } else {
            endRow = rowCount;
        }
        pager.setEndRow(endRow);
    }
}
