import java.util.HashMap; import java.util.List; import java.util.Map; import com.alensic.nursing.utils.StringUtil; /** * Pagination * * @author zhchen * */ public class PagingService{ /** * front page * * @param pageMap * @return */ public Map doFirstPage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //Initialize paging parameters if(!initPageBean(pageMap, resultMap, page)) return resultMap; //current page page.setPageNum(1); // return result assignment setResultMap (resultMap, pageMap, page); return resultMap; } /** * Next page * * @param pageMap * @return */ public Map doNextPage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //Initialize paging parameters if(!initPageBean(pageMap, resultMap, page)) return resultMap; int maxPage = page.getMaxPage(); //current page int start = Integer.parseInt(pageMap.get("cur_page_num") == null?"0":pageMap.get("cur_page_num").toString()); if(start+1 > maxPage){ }else{ start = start+1; } //current page page.setPageNum(start); // return result assignment setResultMap (resultMap, pageMap, page); return resultMap; } /** * Previous page * * @param pageMap * @return */ public Map doPrePage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //Initialize paging parameters if(!initPageBean(pageMap, resultMap, page)) return resultMap; //current page int start = Integer.parseInt(pageMap.get("cur_page_num") == null?"0":pageMap.get("cur_page_num").toString()); if(start-1 < 1){ }else{ start = start-1; } //current page page.setPageNum(start); // return result assignment setResultMap (resultMap, pageMap, page); return resultMap; } /** * the last page * * @param pageMap * @return */ public Map doLastPage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //Initialize paging parameters if(!initPageBean(pageMap, resultMap, page)) return resultMap; int maxPage = page.getMaxPage(); //current page page.setPageNum(maxPage); // return result assignment setResultMap (resultMap, pageMap, page); return resultMap; } /** * Query page information according to the page * * @param pageMap * @return */ public Map doGoToPage(Map pageMap){ Map resultMap = new HashMap(); PageBean page = new PageBean(); //Initialize paging parameters if(!initPageBean(pageMap, resultMap, page)) return resultMap; int maxPage = page.getMaxPage(); //last page number String pageNum = pageMap.get("page_num") == null?"0":pageMap.get("page_num").toString(); // Verify that the incoming parameter is a number boolean isNum = pageNum.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+) )?)$"); if(!isNum){ resultMap.put("errorMsg", "The value entered on the page is not a number"); return resultMap; } int start = Integer.parseInt(pageNum); if(start < 1){ start = 1; }else if(start > maxPage){ start = maxPage; } //current page page.setPageNum(start); // return result assignment setResultMap (resultMap, pageMap, page); return resultMap; } /** * Initialize paging parameters * * @param pageMap parameters passed in by the page * @param resultMap returns the result * @param page paging bean * @return boolean true: success, false: failure */ private boolean initPageBean(Map pageMap,Map resultMap,PageBean page){ //Query the total number of records String pageMax = pageMap.get("page_max") == null ?"":pageMap.get("page_max").toString(); String queryCondition = pageMap.get("query_condition") == null ?"":pageMap.get("query_condition").toString(); if(StringUtil.isEmpty(pageMax)){ resultMap.put("errorMsg", "No variable is set -- how many items are displayed on each page"); return false; } int maxResult = getMaxPage(queryCondition); page.setMaxResult(maxResult); page.setPageMax(Integer.parseInt(pageMax)); page.setMaxPage(); return true; } /** * return result assignment * * @param resultMap returns the collection * @param pageMap conditions passed in the page * @param page page object * */ private void setResultMap(Map resultMap,Map pageMap,PageBean page){ //Query the information of the current page String condition = pageMap.get("query_condition") == null ?"":pageMap.get("query_condition").toString(); int pageMax = page.getPageMax(); int pageNum = page.getPageNum(); List list = findPageInfo((pageNum-1)*pageMax, pageMax,condition); Map pageResultMap = new HashMap(); pageResultMap.put("pageNum", page.getPageNum()); pageResultMap.put("maxResult", page.getMaxResult()); pageResultMap.put("pageMax", page.getPageMax()); pageResultMap.put("maxPage", page.getMaxPage()); resultMap.put("page", pageResultMap); resultMap.put("query_result", list); } /** * Query the information of the current page * * @param offset starting line number * @param size returns the number of records * @param condition query condition * @return list */ public List findPageInfo(int offset,int size,String condition){ return null; } /** * Get the total number of records * * @param queryCondition query condition * @return int */ public int getMaxPage(String queryCondition) { int maxPage = 0; return maxPage; } }
/** * Paging build * * @author zhchen */ public class PageBean { private int pageNum = 1; // current page private int maxResult; // total number of records private int pageMax; // number of displays per page private int maxPage; // total number of pages public int getPageMax() { return pageMax; } public void setPageMax(int pageMax) { this.pageMax = pageMax; } public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getMaxPage() { return maxPage; } public void setMaxPage() { this.maxPage = (maxResult % pageMax == 0 ? maxResult / pageMax : maxResult / pageMax + 1); } public int getMaxResult() { return maxResult; } public void setMaxResult(int maxResult) { this.maxResult = maxResult; } }