| package com.xzx.gc.util;  | 
|   | 
| import java.io.Serializable;  | 
| import java.util.HashMap;  | 
| import java.util.List;  | 
| import java.util.Map;  | 
|   | 
| public class PageQuery<T> implements Serializable {  | 
|     private static final long serialVersionUID = -7523359884334787081L;  | 
|     public static final String pageFlag = "_page";  | 
|     public static final Boolean pageObj;  | 
|     public static long DEFAULT_PAGE_SIZE;  | 
|     protected List<T> list;  | 
|     protected Object paras;  | 
|     protected String orderBy;  | 
|     protected long pageNumber;  | 
|     protected long pageSize;  | 
|     protected long totalPage;  | 
|     protected long totalRow;  | 
|     private transient PageQuery.ParasBuilder parasBuilder;  | 
|   | 
|     public PageQuery() {  | 
|         this(1L, (Object)null);  | 
|     }  | 
|   | 
|     public PageQuery(long pageNumber) {  | 
|         this(pageNumber, (Object)null);  | 
|     }  | 
|   | 
|     public PageQuery(long pageNumber, long pageSize) {  | 
|         this(pageNumber, (Object)null);  | 
|         this.pageSize = pageSize;  | 
|     }  | 
|   | 
|     public PageQuery(long pageNumber, long pageSize, Object paras) {  | 
|         this(pageNumber, paras);  | 
|         this.pageSize = pageSize;  | 
|     }  | 
|   | 
|     public PageQuery(long pageNumber, Object paras) {  | 
|         this.pageSize = DEFAULT_PAGE_SIZE;  | 
|         this.totalRow = -1L;  | 
|         this.parasBuilder = new PageQuery.ParasBuilder();  | 
|         this.pageNumber = pageNumber;  | 
|         this.paras = paras;  | 
|     }  | 
|   | 
|     public PageQuery(long pageNumber, Object paras, String userDefinedOrderBy) {  | 
|         this.pageSize = DEFAULT_PAGE_SIZE;  | 
|         this.totalRow = -1L;  | 
|         this.parasBuilder = new PageQuery.ParasBuilder();  | 
|         this.pageNumber = pageNumber;  | 
|         this.paras = paras;  | 
|         this.orderBy = userDefinedOrderBy;  | 
|     }  | 
|   | 
|     public PageQuery(long pageNumber, Object paras, long totalRow) {  | 
|         this(pageNumber, paras);  | 
|         this.totalRow = totalRow;  | 
|     }  | 
|   | 
|     public PageQuery(long pageNumber, Object paras, String userDefinedOrderBy, long totalRow) {  | 
|         this.pageSize = DEFAULT_PAGE_SIZE;  | 
|         this.totalRow = -1L;  | 
|         this.parasBuilder = new PageQuery.ParasBuilder();  | 
|         this.pageNumber = pageNumber;  | 
|         this.paras = paras;  | 
|         this.orderBy = userDefinedOrderBy;  | 
|         this.totalRow = totalRow;  | 
|     }  | 
|   | 
|     public PageQuery(long pageNumber, Object paras, long totalRow, long pageSize) {  | 
|         this(pageNumber, paras);  | 
|         this.totalRow = totalRow;  | 
|         this.pageSize = pageSize;  | 
|     }  | 
|   | 
|     public List<T> getList() {  | 
|         return this.list;  | 
|     }  | 
|   | 
|     public void setList(List list) {  | 
|         this.list = list;  | 
|     }  | 
|   | 
|     public long getPageNumber() {  | 
|         return this.pageNumber;  | 
|     }  | 
|   | 
|     public void setPageNumber(long pageNumber) {  | 
|         this.pageNumber = pageNumber;  | 
|     }  | 
|   | 
|     public long getPageSize() {  | 
|         return this.pageSize;  | 
|     }  | 
|   | 
|     public void setPageSize(long pageSize) {  | 
|         this.pageSize = pageSize;  | 
|     }  | 
|   | 
|     public long getTotalPage() {  | 
|         this.calcTotalPage();  | 
|         return this.totalPage;  | 
|     }  | 
|   | 
|     public long getTotalRow() {  | 
|         return this.totalRow;  | 
|     }  | 
|   | 
|     public void setTotalRow(long totalRow) {  | 
|         this.totalRow = totalRow;  | 
|     }  | 
|   | 
|     public boolean isFirstPage() {  | 
|         return this.pageNumber == 1L;  | 
|     }  | 
|   | 
|     public boolean isLastPage() {  | 
|         this.calcTotalPage();  | 
|         return this.pageNumber == this.totalPage;  | 
|     }  | 
|   | 
|     public Object getParas() {  | 
|         return this.paras;  | 
|     }  | 
|   | 
|     public void setParas(Object paras) {  | 
|         this.parasBuilder.setRoot(paras);  | 
|         this.paras = this.parasBuilder.build();  | 
|     }  | 
|   | 
|     public void setPara(String key, Object value) {  | 
|         this.parasBuilder.set(key, value);  | 
|         this.paras = this.parasBuilder.build();  | 
|     }  | 
|   | 
|     public String getOrderBy() {  | 
|         return this.orderBy;  | 
|     }  | 
|   | 
|     public void setOrderBy(String orderBy) {  | 
|         this.orderBy = orderBy;  | 
|     }  | 
|   | 
|     public PageQuery.ParasBuilder parasBuilder() {  | 
|         return this.parasBuilder;  | 
|     }  | 
|   | 
|     private void calcTotalPage() {  | 
|         if (this.totalRow == 0L) {  | 
|             this.totalPage = 1L;  | 
|         } else if (this.totalRow % this.pageSize == 0L) {  | 
|             this.totalPage = this.totalRow / this.pageSize;  | 
|         } else {  | 
|             this.totalPage = this.totalRow / this.pageSize + 1L;  | 
|         }  | 
|   | 
|     }  | 
|   | 
|     @Override  | 
|     public int hashCode() {  | 
|         boolean prime = true;  | 
|         int result = 1;  | 
|         result = 31 * result + (this.orderBy == null ? 0 : this.orderBy.hashCode());  | 
|         result = 31 * result + (int)(this.pageNumber ^ this.pageNumber >>> 32);  | 
|         result = 31 * result + (int)(this.pageSize ^ this.pageSize >>> 32);  | 
|         result = 31 * result + (this.paras == null ? 0 : this.paras.hashCode());  | 
|         return result;  | 
|     }  | 
|     @Override  | 
|     public boolean equals(Object obj) {  | 
|         if (this == obj) {  | 
|             return true;  | 
|         } else if (obj == null) {  | 
|             return false;  | 
|         } else if (this.getClass() != obj.getClass()) {  | 
|             return false;  | 
|         } else {  | 
|             PageQuery other = (PageQuery)obj;  | 
|             if (this.orderBy == null) {  | 
|                 if (other.orderBy != null) {  | 
|                     return false;  | 
|                 }  | 
|             } else if (!this.orderBy.equals(other.orderBy)) {  | 
|                 return false;  | 
|             }  | 
|   | 
|             if (this.pageNumber != other.pageNumber) {  | 
|                 return false;  | 
|             } else if (this.pageSize != other.pageSize) {  | 
|                 return false;  | 
|             } else if (this.paras == null) {  | 
|                 return other.paras == null;  | 
|             } else {  | 
|                 return this.paras.equals(other.paras);  | 
|             }  | 
|         }  | 
|     }  | 
|   | 
|     static {  | 
|         pageObj = Boolean.TRUE;  | 
|         DEFAULT_PAGE_SIZE = 20L;  | 
|     }  | 
|   | 
|     public static class ParasBuilder {  | 
|         private Object root;  | 
|         private Map map = null;  | 
|   | 
|         public ParasBuilder() {  | 
|         }  | 
|   | 
|         public Object build() {  | 
|             if (this.map != null && this.root != null) {  | 
|                 this.map.put("_root", this.root);  | 
|                 return this.map;  | 
|             } else if (this.map == null && this.root != null) {  | 
|                 return this.root;  | 
|             } else {  | 
|                 return this.map != null && this.root == null ? this.map : null;  | 
|             }  | 
|         }  | 
|   | 
|         public Object getRoot() {  | 
|             return this.root;  | 
|         }  | 
|   | 
|         public void setRoot(Object o) {  | 
|             this.root = o;  | 
|         }  | 
|   | 
|         public void set(String key, Object value) {  | 
|             if (this.map == null) {  | 
|                 this.map = new HashMap();  | 
|             }  | 
|   | 
|             this.map.put(key, value);  | 
|         }  | 
|     }  | 
| }  |