jsp paging


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

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326865525&siteId=291194637
jsp