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