Java tutorial
/** * Copyright © 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); */ package com.dec.persistent; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import com.dec.common.config.Global; /** * ? * * @author ThinkGem * @version 2013-7-2 * @param <T> */ public class Page<T> { private int pageNo = 1; // ?? private int pageSize = Integer.valueOf(Global.getConfig("page.pageSize")); // ???1?? private long count;// ?1?? private int first;// private int last;// private int prev;// ? private int next;// ? private boolean firstPage;// ?? private boolean lastPage;// ??? private int length = 8;// ? private int slider = 1;// ??? private List<T> list = new ArrayList<T>(); private String orderBy = ""; // ??updatedate desc, name asc private String funcName = "page"; // ?js??page?? private String message = ""; // ???n??? /** * ? * * @param request * ? repage ???? * @param response * Cookie?? */ public Page(HttpServletRequest request, HttpServletResponse response) { this(request, response, -2); } /** * ? * * @param request * ? repage ???? * @param response * Cookie?? * @param pageSize * ??-1 ??? */ public Page(HttpServletRequest request, HttpServletResponse response, int pageSize) { // ??repage????? String no = request.getParameter("pageNo"); if (StringUtils.isNumeric(no)) { this.setPageNo(Integer.parseInt(no)); } else if (request.getParameter("repage") != null) { if (StringUtils.isNumeric(no)) { this.setPageNo(Integer.parseInt(no)); } } // ???repage?????? String size = request.getParameter("pageSize"); if (StringUtils.isNumeric(size)) { this.setPageSize(Integer.parseInt(size)); } else if (request.getParameter("repage") != null) { if (StringUtils.isNumeric(size)) { this.setPageSize(Integer.parseInt(size)); } } if (pageSize != -2) { this.pageSize = pageSize; } // ?? String orderBy = request.getParameter("orderBy"); if (StringUtils.isNotBlank(orderBy)) { this.setOrderBy(orderBy); } } public Page() { this(0, 0); } /** * ? * * @param pageNo * ?? * @param pageSize * ? */ public Page(int pageNo, int pageSize) { this(pageNo, pageSize, 0); } /** * ? * * @param pageNo * ?? * @param pageSize * ? * @param count * ?? */ public Page(int pageNo, int pageSize, long count) { this(pageNo, pageSize, count, new ArrayList<T>()); } /** * ? * * @param pageNo * ?? * @param pageSize * ? * @param count * ?? * @param list * ? */ public Page(int pageNo, int pageSize, long count, List<T> list) { this.setCount(count); this.setPageNo(pageNo); this.pageSize = pageSize; this.setList(list); } /** * ??? */ public void initialize() { // 1 this.first = 1; this.last = (int) (count / (this.pageSize < 1 ? 20 : this.pageSize) + first - 1); if (this.count % this.pageSize != 0 || this.last == 0) { this.last++; } if (this.last < this.first) { this.last = this.first; } if (this.pageNo <= 1) { this.pageNo = this.first; this.firstPage = true; } if (this.pageNo >= this.last) { this.pageNo = this.last; this.lastPage = true; } if (this.pageNo < this.last - 1) { this.next = this.pageNo + 1; } else { this.next = this.last; } if (this.pageNo > 1) { this.prev = this.pageNo - 1; } else { this.prev = this.first; } // 2 if (this.pageNo < this.first) {// ??? this.pageNo = this.first; } if (this.pageNo > this.last) {// ?? this.pageNo = this.last; } } /** * ? * * @return */ public long getCount() { return count; } /** * ? * * @param count */ public void setCount(long count) { this.count = count; if (pageSize >= count) { pageNo = 1; } } /** * ??? * * @return */ public int getPageNo() { return pageNo; } /** * ?? * * @param pageNo */ public void setPageNo(int pageNo) { this.pageNo = pageNo; } /** * ??? * * @return */ public int getPageSize() { return pageSize; } /** * ???00? * * @param pageSize */ public void setPageSize(int pageSize) { this.pageSize = pageSize <= 0 ? 10 : pageSize > 500 ? 500 : pageSize; } /** * * * @return */ public int getFirst() { return first; } /** * * * @return */ public int getLast() { return last; } /** * ?? * * @return getLast(); */ public int getTotalPage() { return getLast(); } /** * ?? * * @return */ public boolean isFirstPage() { return firstPage; } /** * ??? * * @return */ public boolean isLastPage() { return lastPage; } /** * ? * * @return */ public int getPrev() { if (isFirstPage()) { return pageNo; } else { return pageNo - 1; } } /** * ? * * @return */ public int getNext() { if (isLastPage()) { return pageNo; } else { return pageNo + 1; } } /** * ?? * * @return List<T> */ public List<T> getList() { return list; } /** * ? * * @param list */ public void setList(List<T> list) { this.list = list; } /** * ??? * * @return */ public String getOrderBy() { return orderBy; } /** * ? ?updatedate desc, name asc */ public void setOrderBy(String orderBy) { this.orderBy = orderBy; } /** * ??js?? function ${page.funcName}(pageNo){location= * "${ctx}/list-${category.id}${urlSuffix}?pageNo="+i;} * * @return */ public String getFuncName() { return funcName; } /** * ?js??page?? * * @param funcName * page */ public void setFuncName(String funcName) { this.funcName = funcName; } /** * ???n??? * * @param message */ public void setMessage(String message) { this.message = message; } /** * ? * * @return this.pageSize==-1 */ public boolean isDisabled() { return this.pageSize == -1; } /** * ? * * @return this.count==-1 */ public boolean isNotCount() { return this.count == -1; } /** * ? Hibernate FirstResult */ public int getFirstResult() { int firstResult = (getPageNo() - 1) * getPageSize(); if (firstResult >= getCount()) { firstResult = 0; } return firstResult; } /** * ? Hibernate MaxResults */ public int getMaxResults() { return getPageSize(); } public String toString() { return "Page [pageNo=" + pageNo + ", pageSize=" + pageSize + ", count=" + count + ", first=" + first + ", last=" + last + ", prev=" + prev + ", next=" + next + ", firstPage=" + firstPage + ", lastPage=" + lastPage + ", length=" + length + ", slider=" + slider + ", list=" + list + ", orderBy=" + orderBy + ", funcName=" + funcName + ", message=" + message + "]"; } }