package util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.unicSolution.common.model.data.Page;
/**
* 分页的相关内容计算
*
* @author aojia
*
*/
public class PageUtil {
private static final Log logger = LogFactory.getLog(PageUtil.class);
/**
* Use the origin page to create a new page
*
* @param page
* @param totalRecords
* @return
*/
public static Page createPage(Page page, int totalRecords) {
return createPage(page.getEveryPage(), page.getCurrentPage(),
totalRecords);
}
/**
* the basic page utils not including exception handler
*
* @param everyPage 每页几条
* @param currentPage 当前第几页
* @param totalRecords 总共多少条记录
* @return page
*/
public static Page createPage(int everyPage, int currentPage,
int totalRecords) {
everyPage = getEveryPage(everyPage);
currentPage = getCurrentPage(currentPage);
int beginIndex = getBeginIndex(everyPage, currentPage);
int totalPage = getTotalPage(everyPage, totalRecords);
boolean hasNextPage = hasNextPage(currentPage, totalPage);
boolean hasPrePage = hasPrePage(currentPage);
return new Page(hasPrePage, hasNextPage, everyPage, totalPage,
currentPage, beginIndex);
}
/**
* 每页显示记录数
*
* @param everyPage
* @return
*/
private static int getEveryPage(int everyPage) {
return everyPage == 0 ? 10 : everyPage;
}
/**
* 当前页,默认1
*
* @param currentPage
* @return
*/
private static int getCurrentPage(int currentPage) {
return currentPage == 0 ? 1 : currentPage;
}
/**
* 开始的索引
*
* @param everyPage
* @param currentPage
* @return
*/
private static int getBeginIndex(int everyPage, int currentPage) {
return (currentPage - 1) * everyPage;
}
/**
* 总页数
*
* @param everyPage
* @param totalRecords
* @return
*/
private static int getTotalPage(int everyPage, int totalRecords) {
int totalPage = 0;
if (totalRecords % everyPage == 0)
totalPage = totalRecords / everyPage;
else
totalPage = totalRecords / everyPage + 1;
return totalPage;
}
/**
* 是否存在前页
* @param currentPage
* @return
*/
private static boolean hasPrePage(int currentPage) {
return currentPage == 1 ? false : true;
}
/**
* 是否存在后页
* @param currentPage
* @param totalPage
* @return
*/
private static boolean hasNextPage(int currentPage, int totalPage) {
return currentPage == totalPage || totalPage == 0 ? false : true;
}
}
发表于 @ 2007年07月31日 17:37:00|编辑