import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alensic.nursing.utils.StringUtil;
/**
* 分页
*
* @author zhchen
*
*/
public class PagingService{
/**
* 首页
*
* @param pageMap
* @return
*/
public Map doFirstPage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
//当前页
page.setPageNum(1);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 下一页
*
* @param pageMap
* @return
*/
public Map doNextPage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
int maxPage = page.getMaxPage();
//当前页
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;
}
//当前页
page.setPageNum(start);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 上一页
*
* @param pageMap
* @return
*/
public Map doPrePage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
//当前页
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;
}
//当前页
page.setPageNum(start);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 最后一页
*
* @param pageMap
* @return
*/
public Map doLastPage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
int maxPage = page.getMaxPage();
//当前页
page.setPageNum(maxPage);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 根据页面查询页面信息
*
* @param pageMap
* @return
*/
public Map doGoToPage(Map pageMap){
Map resultMap = new HashMap();
PageBean page = new PageBean();
//初始化分页参数
if(!initPageBean(pageMap, resultMap, page)) return resultMap;
int maxPage = page.getMaxPage();
//最后页码
String pageNum = pageMap.get("page_num") == null?"0":pageMap.get("page_num").toString();
//验证传入的参数是否为数字
boolean isNum = pageNum.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
if(!isNum){
resultMap.put("errorMsg", "页面输入的值不是数字");
return resultMap;
}
int start = Integer.parseInt(pageNum);
if(start < 1){
start = 1;
}else if(start > maxPage){
start = maxPage;
}
//当前页
page.setPageNum(start);
//返回结果赋值
setResultMap(resultMap, pageMap, page);
return resultMap;
}
/**
* 初始化分页参数
*
* @param pageMap 页面传入的参数
* @param resultMap 返回结果
* @param page 分页bean
* @return boolean true:成功,false:失败
*/
private boolean initPageBean(Map pageMap,Map resultMap,PageBean page){
//查询总记录数
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", "没有设置变量--每页显示多少条");
return false;
}
int maxResult = getMaxPage(queryCondition);
page.setMaxResult(maxResult);
page.setPageMax(Integer.parseInt(pageMax));
page.setMaxPage();
return true;
}
/**
* 返回结果赋值
*
* @param resultMap 返回集合
* @param pageMap 页面传入的条件
* @param page page对象
*
*/
private void setResultMap(Map resultMap,Map pageMap,PageBean 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);
}
/**
* 查询当前页的信息
*
* @param offset 起始行号
* @param size 返回记录数
* @param condition 查询条件
* @return list
*/
public List findPageInfo(int offset,int size,String condition){
return null;
}
/**
* 获取总记录数
*
* @param queryCondition 查询条件
* @return int
*/
public int getMaxPage(String queryCondition) {
int maxPage = 0;
return maxPage;
}
}
/**
* 分页组建
*
* @author zhchen
*/
public class PageBean {
private int pageNum = 1; // 当前页
private int maxResult; // 总记录数
private int pageMax; // 每页显示数
private int maxPage; // 总页数
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;
}
}