|
package org.jfw.util;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class PageQueryResult<T> {
private int total;
private int pageNo = 1;
private int pageSize;
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
private List<T> data;
public static <T> PageQueryResult<T> build(List<T> list, int pageSize, int pageNo) {
PageQueryResult<T> ret = new PageQueryResult<T>();
ret.setTotal(list.size());
pageSize = Math.max(1, pageSize);
pageNo = Math.max(1, pageNo);
if (list.isEmpty()) {
ret.setData(list);
ret.setPageNo(pageNo);
ret.setPageSize(1);
} else if (pageNo == 1) {
ret.setPageNo(pageNo);
ret.setPageSize(pageSize);
ret.setData(list.subList(0,Math.min(list.size(), pageSize)));
} else {
int tps = list.size() / pageSize;
if (list.size() % pageSize != 0) {
++tps;
}
if (pageNo > tps) {
pageNo = tps;
}
ret.setPageNo(pageNo);
ret.setPageSize(pageSize);
int begin = pageNo * pageSize - pageSize;
ret.setData(list.subList(begin,Math.min(list.size(), begin + pageSize)));
}
return ret;
}
public static void main(String[] args) {
List<String> list = new LinkedList<String>();
for(int i = 0 ; i < 14;++i) list.add("a");
PageQueryResult.build(list,10,2);
new PageQueryResult<String>().setData(Collections.<String> emptyList());
}
}
|