150 lines
3.5 KiB
Java
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);
|
|
}
|
|
}
|