content: package cn.com.tx.domain.pagination;
  
  import java.io.Serializable;
  import java.util.ArrayList;
  import java.util.List;
  
  public class Pagination<T> implements Serializable {
  
  	/**
  	 * 
  	 */
  	private static final long serialVersionUID = 5038839734218582220L;
  
  	private int totalResult = 0;
  
  	private int totalPage = 1;
  
  	private int pageIndex = 1;
  
  	private int maxLength = 5;
  
  	private int fromIndex = 0;
  
  	private int toIndex = 0;
  
  	private List<T> list = new ArrayList<T>();
  	
  	public Pagination(){
  		
  	}
  	
  	
  
  	public void setTotalResult(int totalResult) {
  		this.totalResult = totalResult;
  	}
  
  
  
  	public void setTotalPage(int totalPage) {
  		this.totalPage = totalPage;
  	}
  
  
  
  	public void setPageIndex(int pageIndex) {
  		this.pageIndex = pageIndex;
  	}
  
  
  
  	public void setMaxLength(int maxLength) {
  		this.maxLength = maxLength;
  	}
  
  
  
  	public void setFromIndex(int fromIndex) {
  		this.fromIndex = fromIndex;
  	}
  
  
  
  	public void setToIndex(int toIndex) {
  		this.toIndex = toIndex;
  	}
  
  
  
  	public int getFromIndex() {
  		return this.fromIndex;
  	}
  
  	public int getToIndex() {
  		return this.toIndex;
  	}
  
  	public int getNextPage() {
  		if (this.pageIndex < this.totalPage) {
  			return this.pageIndex + 1;
  		} else {
  			return this.pageIndex;
  		}
  	}
  
  	public int getPrevPage() {
  		if (this.pageIndex > 1) {
  			return this.pageIndex - 1;
  		}
  		return this.pageIndex;
  	}
  
  	/**
  	 * @return the currentPage
  	 */
  	public int getPageIndex() {
  		return pageIndex;
  	}
  
  	/**
  	 * @return the list
  	 */
  	public List<T> getList() {
  		if (list == null) {
  			return new ArrayList<T>();
  		}
  		return new ArrayList<T>(list);
  	}
  
  	/**
  	 * @return the totalPage
  	 */
  	public int getTotalPage() {
  		return totalPage;
  	}
  
  	/**
  	 * @return the totalRecord
  	 */
  	public int getTotalResult() {
  		return totalResult;
  	}
  
  	public int getMaxLength() {
  		return maxLength;
  	}
  
  	/**
  	 * 
  	 * @param totalResult
  	 * @param pageIndex
  	 * @param maxLength
  	 */
  	public Pagination(int totalResult, int pageIndex, int maxLength) {
  		if (maxLength > 0) {
  			this.maxLength = maxLength;
  		}
  		if (totalResult > 0) {
  			this.totalResult = totalResult;
  		}
  		if (pageIndex > 0) {
  			this.pageIndex = pageIndex;
  		}
  		this.totalPage = this.totalResult / this.maxLength;
  		if (this.totalResult % this.maxLength != 0) {
  			this.totalPage = this.totalPage + 1;
  		}
  		if (this.totalPage == 0) {
  			this.totalPage = 1;
  		}
  		if (this.pageIndex > this.totalPage) {
  			this.pageIndex = this.totalPage;
  		}
  		if (this.pageIndex <= 0) {
  			this.pageIndex = 1;
  		}
  		this.fromIndex = (this.pageIndex - 1) * maxLength;
  		this.toIndex = this.fromIndex + maxLength;
  		if (this.toIndex < 0) {
  			this.toIndex = fromIndex;
  		}
  		if (this.toIndex > this.totalResult) {
  			this.toIndex = this.totalResult;
  		}
  
  	}
  
  	/**
  	 * @param datas
  	 *            the datas to set
  	 */
  	public void setList(List<T> list) {
  		this.list = list;
  	}
  
  	/*
  	 * (non-Javadoc)
  	 * 
  	 * @see java.lang.Object#toString()
  	 */
  	@Override
  	public String toString() {
  		StringBuffer sb = new StringBuffer();
  		sb.append("Pagination:\r\n");
  		sb.append("\tpageIndex\t" + this.pageIndex + "\r\n");
  		sb.append("\ttotalPage\t" + this.totalPage + "\r\n");
  		sb.append("\tmaxLength\t" + this.maxLength + "\r\n");
  		sb.append("\ttotalResult\t" + this.totalResult + "\r\n");
  		for (T t : list) {
  			sb.append(t + "\r\n");
  		}
  		return sb.toString();
  	}
  	
  }
  