package com.jrails.page;
/**
* Created by arden
* User: <a href="mailto:arden.emily@gmail.com">arden</a>
* Date: 2009-2-12 12:26:51
*/
public abstract class Page<T> {
// 当前页
protected int pageNo = 1;
// 一页显示多少条记录
protected int pageSize = -1;
// 总共多少条
protected int totalCount = -1;
public Page() {}
public Page(int pageSize) {
this.pageSize = pageSize;
}
/**
* 获得每页的记录数量,无默
* 认值.
*/
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/**
* 是否已设置每页的记录数量.
*/
public boolean isPageSizeSetted() {
return pageSize > -1;
}
/**
* 获得当前页的页号,序号从1开始,默认为1.
*/
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
if (pageNo <= 0) {
this.pageNo = 1;
} else {
this.pageNo = pageNo;
}
}
/**
* 根据pageNo和pageSize计算当前页第一条记录在总结果集中的位置,序号从0开始.
*/
public int getFirst() {
if (pageNo < 1 || pageSize < 1)
return -1;
else
return ((pageNo - 1) * pageSize);
}
/**
* 是否已设置第一条记录记录在总结果集中的位置.
*/
public boolean isFirstSetted() {
return (pageNo > 0 && pageSize > 0);
}
/**
* 总记录数.
*/
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
/**
* 计算总页数.
*/
public int getTotalPages() {
if (totalCount == -1)
return -1;
int count = totalCount / pageSize;
if (totalCount % pageSize > 0) {
count++;
}
return count;
}
/**
* 是否还有下一页.
*/
public boolean isHasNext() {
return (pageNo + 1 <= getTotalPages());
}
/**
* 返回下页的页号,序号从1开始.
*/
public int getNextPage() {
if (isHasNext())
return pageNo + 1;
else
return pageNo;
}
/**
* 是否还有上一页.
*/
public boolean isHasPre() {
return (pageNo - 1 >= 1);
}
/**
* 返回上页的页号,序号从1开始.
*/
public int getPrePage() {
if (isHasPre())
return pageNo - 1;
else
return pageNo;
}
}