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;
  }
}