package cn.itcast.oa.domain;

import java.io.Serializable;
import java.util.List;

/**
* 分页功能中的一页的信息(封装对象)
*
* @author
* @version V1.0
*/
@SuppressWarnings({ "serial", "rawtypes" })
public class PageBean implements Serializable {

// 指定的或是页面参数
/** 当前页 */
private int currentPage;// 当前页
/** 每页显示多少条数据 */
private int pageSize;// 每页显示多少条数据

// 查询数据库
/** 总记录数 */
private int recordCount;// 总记录数
/** 本页的数据列表 */
private List recordList;// 本页的数据列表

// 计算
/** 总页数 */
private int pageCount;// 总页数
/** 页码列表的开始索引(包含) */
private int beginPageIndex;// 页码列表的开始索引(包含)
/** 页码列表的结束索引(包含) */
private int endPageIndex;// 页码列表的结束索引(包含)

/**
* 只接受前4个必要的属性,会自动计算出其它3个属性的值
*
* @param currentPage
* 当前页
* @param pageSize
* 每页显示多少条数据
* @param recordCount
* 总记录数
* @param recordList
* 本页的数据列表
*/
public PageBean(int currentPage, int pageSize, int recordCount, List recordList) {
this.currentPage = currentPage;
this.pageSize = pageSize;
this.recordCount = recordCount;
this.recordList = recordList;

// 计算总页码
this.pageCount = (recordCount + pageSize - 1) / pageSize;

// 计算 beginPageIndex 和 endPageIndex 结束索引
// >> 总页数不多于10页,则全部显示
if (pageCount <= 10) {
beginPageIndex = 1;
endPageIndex = pageCount;
}
// >> 总页数多于10页,则显示当前页附近的共10个页
else {
// >> 当前页附近的共10个页码(前4个 + 当前页 + 后5个)
beginPageIndex = currentPage - 4;
endPageIndex = currentPage + 5;
// >> 当前面的页码不足4个时,则显示前10个页码
if (beginPageIndex < 1) {
beginPageIndex = 1;
endPageIndex = 10;
}
// >> 当后面的页码不足5个时,则显示后10个页码
if (endPageIndex > pageCount) {
endPageIndex = pageCount;
beginPageIndex = pageCount - 10 + 1;
}
}
}

public List getRecordList() {
return recordList;
}

public void setRecordList(List recordList) {
this.recordList = recordList;
}

public int getCurrentPage() {
return currentPage;
}

public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

public int getPageCount() {
return pageCount;
}

public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}

public int getPageSize() {
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

public int getRecordCount() {
return recordCount;
}

public void setRecordCount(int recordCount) {
this.recordCount = recordCount;
}

public int getBeginPageIndex() {
return beginPageIndex;
}

public void setBeginPageIndex(int beginPageIndex) {
this.beginPageIndex = beginPageIndex;
}

public int getEndPageIndex() {
return endPageIndex;
}

public void setEndPageIndex(int endPageIndex) {
this.endPageIndex = endPageIndex;
}

}