public class PageInfo {
//총 개수
private int total;
//현재페이지
private int currentPage;
//페이지 수
private int totalPages;
//네비 첫 페이지
private int navFirstPage;
//네비 마지막 페이지
private int navLastPage;
//이전 페이지
private int prevPage;
//다음 페이지
private int nextPage;
//네비게이션
private int[] pageList;
//첫 페이지인지
private boolean isFirstPage;
//첫 네비인지
private boolean isFirstNavPage;
//마지막 페이지인지
private boolean isLastPage;
//마지막 네비인지
private boolean isLastNavPage;
public PageInfo(int total, int currentPage, int totalPages, int navFirstPage, int navLastPage, int prevPage,
int nextPage, int[] pageList, boolean isFirstPage, boolean isFirstNavPage, boolean isLastPage,
boolean isLastNavPage) {
this.total = total;
this.currentPage = currentPage;
this.totalPages = totalPages;
this.navFirstPage = navFirstPage;
this.navLastPage = navLastPage;
this.prevPage = prevPage;
this.nextPage = nextPage;
this.pageList = pageList;
this.isFirstPage = isFirstPage;
this.isFirstNavPage = isFirstNavPage;
this.isLastPage = isLastPage;
this.isLastNavPage = isLastNavPage;
}
public int getTotal() {
return total;
}
public int getCurrentPage() {
return currentPage;
}
public int getTotalPages() {
return totalPages;
}
public int getNavFirstPage() {
return navFirstPage;
}
public int getNavLastPage() {
return navLastPage;
}
public int getPrevPage() {
return prevPage;
}
public int getNextPage() {
return nextPage;
}
public int[] getPageList() {
return pageList;
}
public boolean isFirstPage() {
return isFirstPage;
}
public boolean isFirstNavPage() {
return isFirstNavPage;
}
public boolean isLastPage() {
return isLastPage;
}
public boolean isLastNavPage() {
return isLastNavPage;
}
@Override
public String toString() {
return "PageInfo{" +
"total=" + total +
", currentPage=" + currentPage +
", totalPages=" + totalPages +
", navFirstPage=" + navFirstPage +
", navLastPage=" + navLastPage +
", prevPage=" + prevPage +
", nextPage=" + nextPage +
", pageList=" + Arrays.toString(pageList) +
", isFirstPage=" + isFirstPage +
", isFirstNavPage=" + isFirstNavPage +
", isLastPage=" + isLastPage +
", isLastNavPage=" + isLastNavPage +
'}';
}
}
public class Pagination{
private static int pageListLength = 10;
private static int navigateLength = 5;
public Pagination() {}
public Pagination(int pageListLength, int navigateLength) {
this.pageListLength = pageListLength;
this.navigateLength = navigateLength;
}
public static PageInfo pageInfoSet(int page,int total){
page = page <= 0 ? 1 :page;
total = total <= 0 ? 0 : total;
int totalPage = (int)Math.ceil((double)total /(double) pageListLength);
int prevPage = page - 1 > 0 ? page > totalPage ? 0 : page - 1 : 0;
int nextPage = page + 1 <= totalPage? page + 1 : 0;
int pageCount = (int)Math.ceil((double)page/(double)navigateLength) - 1 ;
int startPage = pageCount == 0 ? 1 : (pageCount * navigateLength) + 1;
int naviLength = totalPage - (pageCount * navigateLength) < navigateLength ? totalPage - (pageCount * navigateLength) :navigateLength ;
int endPage = startPage + naviLength - 1;
int[] pageList = IntStream.rangeClosed(startPage, endPage).toArray();
int navFirstPage = Arrays.stream(pageList).min().orElse(0);
int navLastPage = Arrays.stream(pageList).reduce(0, Integer::max);
boolean isFirstPage = page == 1;
boolean isLastPage = page == totalPage;
boolean isFirstNavPage = page <= navigateLength ;
boolean isLastNavPage = (page == totalPage) || (int)Math.ceil((double)totalPage/(double) navigateLength) - 1 == pageCount;
return new PageInfo(total,page,totalPage,navFirstPage,navLastPage,prevPage,nextPage,pageList,isFirstPage,isFirstNavPage,isLastPage,isLastNavPage);
}
}
Pagination pagination = new Pagination(10,10);
PageInfo pageInfo = pagination.pageInfoSet(1,200);
System.out.println("pageInfo.toString() = " + pageInfo.toString());
pageInfo.toString() =
PageInfo{total=200, currentPage=1, totalPages=20, navFirstPage=1, navLastPage=10
, prevPage=0, nextPage=2, pageList=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], isFirstPage=true
, isFirstNavPage=true, isLastPage=false, isLastNavPage=false}
'Java' 카테고리의 다른 글
[Java] 클라이언트 ip 주소가져오기 (0) | 2023.12.01 |
---|---|
[Java] 중첩 클래스 (0) | 2023.11.01 |
[Java] 주민등록번호 유효성 체크 (1) | 2023.10.17 |
[Java]SHA-256 (0) | 2023.10.12 |
[Java] try-with-resources (0) | 2023.09.13 |