package kr.wisestone.owl.util; import kr.wisestone.owl.common.MessageAccessor; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.vo.PageVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; public class PageUtil { @SuppressWarnings("unused") private static final Logger LOGGER = LoggerFactory.getLogger(PageUtil.class); @Autowired private MessageAccessor messageAccessor; /** * 유효성을 체크한 후에 유효하지 않으면 에러를 발생시킨다. * @param pageVo */ public void validatePageVo(PageVo pageVo) { if (pageVo == null) { throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.PAGE_NOT_EXIST_INFO)); } if (pageVo.getPage() == null || pageVo.getPage() < 0) { if (pageVo.getRelPage() == null || pageVo.getRelPage() < 0 || pageVo.getDownPage() == null || pageVo.getDownPage() < 0) { throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.PAGE_NEGATIVE_OR_NULL)); } } if (pageVo.getPageSize() == null || pageVo.getPageSize() < 0) { if (pageVo.getRelPageSize() == null || pageVo.getRelPageSize() < 0 || pageVo.getDownPageSize() == null || pageVo.getDownPageSize() < 0) { throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.PAGE_SIZE_NEGATIVE_OR_NULL)); } } } public Pageable convertPageable(PageVo pageVo) { return PageRequest.of(pageVo.getPage(), pageVo.getPageSize()); } public Pageable getDefaultPageable() { return PageRequest.of(0, 300); } public Pageable getDefaultPageable(int page, int size) { return PageRequest.of(page, size); } public PageVo getDefaultPageVo() { return new PageVo(0, 300); } public static Pageable applySort(Pageable page, String field, Sort.Direction direction) { return PageRequest.of(page.getPageNumber(), page.getPageSize(), new Sort(direction, field)); } }