package jef.common.wrapper;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
/**
* 分页后的每页数据。一般用于数据存储层返回.<br>
* 主要包括两部分信息。
* <p>
* {@link #getTotalCount()} 返回总的记录条数
* <p>
* {@link #getList()} 返回当前页的记录数据
* @author jiyi
* @param <T>
*/
@SuppressWarnings("restriction")
@XmlAccessorType(XmlAccessType.FIELD)
public class Page<T> implements Serializable{
private static final long serialVersionUID = 1L;
private int totalCount = 0;
private int pageSize;
private List<T> list ;
public Page(){
this(0,10);
}
/**
* 构造
* @param total 全部记录的总数
*/
public Page(int total){
this(total,10);
}
/**
* 构造
* @param total 全部记录的总数
* @param pageSize 每页大小
*/
public Page(int total,int pageSize){
this.totalCount=total;
this.pageSize=pageSize;
}
/**
* 构造
* @param total 记录总数
* @param data 当前页数据
*/
public Page(int total,List<T> data,int pageSize){
this.totalCount=total;
this.pageSize=pageSize;
this.list=data;
}
/**
* 返回记录总数
* @return
*/
public int getTotalCount() {
return totalCount;
}
/**
* 设置记录总数
* @param totalCount
*/
public void setTotalCount(long totalCount) {
this.totalCount = (int)totalCount;
}
/**
* 返回记录数据
* @return
*/
public List<T> getList() {
return list;
}
/**
* 设置记录数据
* @param list
*/
public Page<T> setList(List<T> list) {
this.list = list;
return this;
}
/**
* 设置记录数据
* @param list
*/
public Page<T> setList(T[] list) {
this.list=Arrays.asList(list);
return this;
}
/**
* 获得每页的记录数
* @return
*/
public int getPageSize() {
return pageSize;
}
/**
* 获得总页数
* @return
*/
public int getTotalPage() {
if(pageSize==0)return 0;
return ((totalCount - 1) / pageSize) + 1;
}
@Override
public String toString() {
return "Total:"+totalCount+" page:"+pageSize+" "+list;
}
}