localhost-back/src/main/java/io/company/localhost/utils/PageUtil.java

76 lines
2.4 KiB
Java

/************************************************************
*
* @packageName : io.company.localhost.utils
* @fileName : PageUtil.java
* @author : 조인제
* @date : 24.12.06
* @description :
*
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 24.12.06 조인제 최초 생성
*
*************************************************************/
package io.company.localhost.utils;
import com.github.pagehelper.PageInfo;
import io.company.localhost.common.dto.MapDto;
public class PageUtil {
public static PageInfo<MapDto> redefineNavigation(PageInfo<MapDto> list){
// 페이지 배열
int[] nav = list.getNavigatepageNums();
// 몇 페이지
int navigatePages = list.getNavigatePages();
// 현재 페이지
int currentPage = list.getPageNum();
// 총 페이지 수
int total = list.getPages();
// 배열 길이
int navLength = nav.length;
if(navLength != 0){
int ff = (int) Math.ceil((double) nav[navLength -1] / navigatePages);
int gg = ff * navigatePages;
if(gg - currentPage >= navigatePages){
gg = gg - navigatePages;
}else if(gg == 0){
gg = navigatePages;
}
if(gg > total && total >= navigatePages ){
navLength = total%navigatePages;
}
int[] nav2 = new int[navLength];
gg = gg - (navigatePages - 1);
for(int i = 0 ; i < nav2.length ; i++){
nav2[i] = gg++;
}
list.setNavigatepageNums(nav2);
list.setNavigateFirstPage(nav2[0]);
list.setNavigateLastPage(nav2[nav2.length -1]);
}
// 페이지 그룹 크기 (예: 10개씩)
int groupSize = list.getNavigatePages();
int totalPages = list.getPages();
// 현재 페이지 그룹 계산
int currentGroup = (int) Math.ceil((double) currentPage / groupSize);
int totalGroups = (int) Math.ceil((double) totalPages / groupSize);
// 이전/다음 그룹 존재 여부 설정
list.setHasPreviousPage(currentGroup > 1); // 이전 그룹 존재
list.setHasNextPage(currentGroup < totalGroups); // 다음 그룹 존재
return list;
}
}