/************************************************************ * * @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 redefineNavigation(PageInfo 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; } }