package nlib.cmm.service; public class PagingVO { public final int DEFAULT_PAGE_SIZE = NlibProperty.getInt("list.paging.page.size", 10); int pageIndex = 1; /* 페이지 번호 */ int pageSize = DEFAULT_PAGE_SIZE; /* 페이지 크기 (1페이지당 보여줄 자료건수) */ int totRecordCount = 0; /* 총건수 */ int pageStart = 0; /* 시작번호 (limit용)*/ int startPage = 0; /*시작페이지 */ int endPage = 0; /* 끝페이지 */ int lastPage = 0; /* 마지막페이지 */ private int cntPage = DEFAULT_PAGE_SIZE; /* 노출되는 페이지 개수 ex) << < 1 2 3 4 5 > >> */ public int getStartPage() { return startPage; } public int getCntPage() { return cntPage; } public void setCntPage(int cntPage) { this.cntPage = cntPage; } public void setStartPage(int startPage) { this.startPage = startPage; } public int getEndPage() { return endPage; } public void setEndPage(int endPage) { this.endPage = endPage; } public int getLastPage() { return lastPage; } public void setLastPage(int lastPage) { this.lastPage = lastPage; } public int getPageStart() { return pageStart; } public void setPageStart(int pageStart) { this.pageStart = pageStart; } public int getPageIndex() { return pageIndex; } public void setPageIndex(int pageIndex) { if(pageIndex < 1) pageIndex = 1; else this.pageIndex = pageIndex; } public void setPageIndex(String sPageIndex) { try { pageIndex = Integer.parseInt(sPageIndex); } catch(Exception e) { pageIndex = 1; } } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { if(pageSize < 1) pageSize = DEFAULT_PAGE_SIZE; else this.pageSize = pageSize; } public void setPageSize(String sPageSize) { try { pageSize = Integer.parseInt(sPageSize); } catch(Exception e) { pageSize = NlibProperty.getInt("list.paging.page.size", 10); } } public int getTotRecordCount() { return totRecordCount; } public void setTotRecordCount(int totRecordCount) { this.totRecordCount = totRecordCount; } public int getPageStartRowNum() { if(pageIndex < 1) pageIndex = 1; if(pageSize < 1) pageSize = 10; return ((pageIndex - 1) * pageSize); } public void setPagingVO(int totRecordCount, int pageIndex, int pageSize) { setPageIndex(pageIndex); //현재 페이지 setPageSize(pageSize); //페이지 당 게시글수 setTotRecordCount(totRecordCount); //게시글 총 갯수 calcLastPage(totRecordCount,pageSize); //제일 마지막 페이지 계산 //시작 끝 페이지 계산 - 아래. calcStartEndPage(pageIndex, cntPage); setPageStart(pageIndex, pageSize); } // 제일 마지막 페이지 계산 public void calcLastPage(int totRecordCount, int pageSize) { setLastPage((int) Math.ceil((double)totRecordCount / (double)pageSize)); } // 시작, 끝 페이지 계산 public void calcStartEndPage(int pageIndex, int cntPage) { setEndPage(((int)Math.ceil((double)pageIndex / (double)cntPage )) * cntPage ); if (getLastPage() < getEndPage()) { setEndPage(getLastPage()); } if(getTotRecordCount() > 0) { if(getEndPage() % cntPage == 0) { setStartPage( 1 + (getEndPage() / cntPage - 1) * cntPage); }else { setStartPage(getEndPage() / cntPage * cntPage +1); } } if (getStartPage() < 1) { setStartPage(1); } } // DB 쿼리에서 사용할 start값 계산 public void setPageStart(int pageIndex, int pageSize) { this.pageStart = ((pageIndex - 1) * pageSize); } }