package cn.edu.fudan.core.utils;
import java.util.ArrayList;
import java.util.List;
//************************************************************************
//【类 名】 分页类
/**
* 分页方法实现
*
* @author yuegy
* @version 2011-02-10
*/
//************************************************************************
//【作 成】 www.sh-db.com.cn 2011-02-10(R1.00)
//************************************************************************
public class Page<T> {
private int totalRow;// 总共数据
private int startRow;// 开始数据
private int endRow;// 结束数据
private int totalPage;// 总页数
private int curPage;// 当前页
private boolean hasNext;// 存在下一页
private boolean hasPrev;// 存在上一页
private List<T> outData;// 页面显示数据
public int getTotalRow() {
return totalRow;
}
public void setTotalRow(int totalRow) {
this.totalRow = totalRow;
}
public int getStartRow() {
return startRow;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
public int getEndRow() {
return endRow;
}
public void setEndRow(int endRow) {
this.endRow = endRow;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
public boolean isHasNext() {
return hasNext;
}
public void setHasNext(boolean hasNext) {
this.hasNext = hasNext;
}
public boolean isHasPrev() {
return hasPrev;
}
public void setHasPrev(boolean hasPrev) {
this.hasPrev = hasPrev;
}
public List<T> getOutData() {
return outData;
}
public void setOutData(List<T> outData) {
this.outData = outData;
}
/**
* 页面分页数据
*
* @param pageSize 该页面显示记录
* @param allSize 查询结果
* @param inputCurPage 当前页
* @return
*/
@SuppressWarnings("unchecked")
public static Page getPageInfo(int pageSize,List inputData,int inputCurPage){
if(Util.listIsNotNull(inputData)){
int allSize = inputData.size();
Page page = new Page();
// 总共数据
page.setTotalRow(allSize);
// 计算总页数
if(0 == allSize % pageSize){
page.setTotalPage(allSize / pageSize);
}else{
page.setTotalPage( (allSize / pageSize) + 1 );
}
// 如果当前页小于等于最大页
if(inputCurPage < page.getTotalPage()){
page.setCurPage( inputCurPage );
page.setStartRow( (page.getCurPage() - 1) * pageSize );
page.setEndRow( page.getCurPage() * pageSize - 1 );
page.setHasNext( true );
if(page.getCurPage() == 1){
page.setHasPrev( false );
}else{
page.setHasPrev( true );
}
}
// 如果当前页大于等于最大页
if(inputCurPage >= page.getTotalPage()){
page.setCurPage( page.getTotalPage() );
page.setStartRow( (page.getCurPage() - 1) * pageSize );
page.setEndRow( page.getTotalRow() - 1 );
page.setHasNext( false );
if(page.getCurPage() == 1){
page.setHasPrev( false );
}else{
page.setHasPrev( true );
}
}
page.setOutData( new ArrayList());
for(int i=page.getStartRow();i<=page.getEndRow() ; i++){
page.getOutData().add(inputData.get(i));
}
page.setStartRow( page.getStartRow() + 1 );
page.setEndRow( page.getEndRow() + 1 );
return page;
}
return null;
}
}