package cn.org.rapid_framework.page;
public class PageUtils {
private PageUtils(){}
public static int getFirstResult(int pageNumber,int pageSize) {
if(pageSize <= 0) throw new IllegalArgumentException("[pageSize] must great than zero");
return (pageNumber - 1) * pageSize;
}
public static Integer[] generateLinkPageNumbers(int currentPageNumber,int lastPageNumber,int count) {
int avg = count / 2;
int startPageNumber = currentPageNumber - avg;
if(startPageNumber <= 0) {
startPageNumber = 1;
}
int endPageNumber = startPageNumber + count - 1;
if(endPageNumber > lastPageNumber) {
endPageNumber = lastPageNumber;
}
if(endPageNumber - startPageNumber < count) {
startPageNumber = endPageNumber - count;
if(startPageNumber <= 0 ) {
startPageNumber = 1;
}
}
java.util.List<Integer> result = new java.util.ArrayList();
for(int i = startPageNumber; i <= endPageNumber; i++) {
result.add(new Integer(i));
}
return result.toArray(new Integer[result.size()]);
}
public static int computeLastPageNumber(int totalElements,int pageSize) {
int result = totalElements % pageSize == 0 ?
totalElements / pageSize
: totalElements / pageSize + 1;
if(result <= 1)
result = 1;
return result;
}
public static int computePageNumber(int pageNumber, int pageSize,int totalElements) {
if(pageNumber <= 1) {
return 1;
}
if (Integer.MAX_VALUE == pageNumber
|| pageNumber > computeLastPageNumber(totalElements,pageSize)) { //last page
return computeLastPageNumber(totalElements,pageSize);
}
return pageNumber;
}
}