package itn.com.utl.page;

import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;


public class PaginationUtil {
    /**
     * 작성자   : 조민수
     * 작성일자 : 2026/07/24
     * 공통 페이징 정보를 초기화한다.
     *
     * <p>사용 방법 및 적용 예시는 사내 Wiki의
     * 'https://wiki.iten.co.kr/40.프로젝트:2026_base_프로젝트:0.참고자료:공용함수정보:pagination-util' 문서를 참고한다.</p>
     *
     * @param <T vo> BasePaginationVO를 상속한 VO
     * @return 초기화된 PaginationInfo
     */
    public static <T extends PageableVO> PaginationInfo init(T vo) {
        PaginationInfo paginationInfo = new PaginationInfo();
        paginationInfo.setCurrentPageNo(vo.getPageIndex());
        paginationInfo.setRecordCountPerPage(vo.getPageUnit());
        paginationInfo.setPageSize(vo.getPageSize());

        vo.setFirstIndex(paginationInfo.getFirstRecordIndex());
        vo.setLastIndex(paginationInfo.getLastRecordIndex());
        vo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
        return paginationInfo;
    }

    public static <T extends PageableVO> PaginationInfo initWithSort(T vo, String defaultCnd, String defaultOrd) {
        if(vo.getSearchSortCnd() == null || vo.getSearchSortCnd().isEmpty()) {
            vo.setSearchSortCnd(defaultCnd);
        }
        if (vo.getSearchSortOrd() == null || vo.getSearchSortOrd().isEmpty()) {
            vo.setSearchSortOrd(defaultOrd);  // asc / desc
        }
        return init(vo);
    }


}
