public class PageHandler {

private SearchCondition sc;

public final int naviSize = 10; // page navigation size

private int totalCnt; // 게시물의 총 갯수

private int totalPage; // 전체 페이지의 갯수

private int beginPage; // 화면에 보여줄 첫 페이지

private int endPage; // 화면에 보여줄 마지막 페이지

private boolean showNext = false; // 이후를 보여줄지의 여부. endPage==totalPage이면, showNext는 false

private boolean showPrev = false; // 이전을 보여줄지의 여부. beginPage==1이 아니면 showPrev는 false

 

public PageHandler(int totalCnt, Integer page) {

this(totalCnt, new SearchCondition(page, 10));

}

 

public PageHandler(int totalCnt, Integer page, Integer pageSize) {

this(totalCnt, new SearchCondition(page, pageSize));

}

 

public PageHandler(int totalCnt, SearchCondition sc) {

this.totalCnt = totalCnt;

this.sc = sc;

 

doPaging(totalCnt, sc);

}

 

private void doPaging(int totalCnt, SearchCondition sc) {

this.totalPage = (int)Math.ceil(totalCnt/(double)sc.getPageSize());

this.sc.setPage(Math.min(sc.getPage(), totalPage)); // page가 totalPage보다 크지 않게

this.beginPage = (this.sc.getPage() -1) / naviSize * naviSize + 1; // 11 -> 11, 10 -> 1, 15->11. 따로 떼어내서 테스트

this.endPage = Math.min(beginPage + naviSize - 1, totalPage);

this.showPrev = beginPage!=1;

this.showNext = endPage!=totalPage;

}

'JAVA > 실습' 카테고리의 다른 글

자바 게시판 만들기(2) 게시판 구현  (0) 2023.09.12
[JAVA] 틱택토 게임  (0) 2023.09.10

+ Recent posts