itsm_ysm/src/main/java/nlib/cmm/service/PagingVO.java
2021-10-08 14:20:50 +09:00

150 lines
3.5 KiB
Java

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