본문 바로가기
카테고리 없음

[Java / SSG BLOG]-페이징 코드

by MilkSweetpotato 2020. 12. 26.
class Main {
	public static void main(String[] args) {
		int articlesCount = 100;
		int articlesInAPage = 10;
		int pageBoxSize = 10;
		int page = 1;
		// 1 ~ 10
		// 11 ~ 20
		// 21 ~ 30
		
		// 토탈 페이지 계산
		int totalPage = (int)Math.ceil((double)articlesCount / articlesInAPage);
		
		// 현재 페이지 계산
		if ( page < 1 ) {
			page = 1;
		}
		
		if ( page > totalPage ) {
			page = totalPage;
		}
		
		// 현재 페이지 박스 시작, 끝 계산
		int previousPageBoxesCount = (page - 1) / pageBoxSize;
		int pageBoxStartPage = pageBoxSize * previousPageBoxesCount + 1;
		int pageBoxEndPage = pageBoxStartPage + pageBoxSize - 1;
		
		if ( pageBoxEndPage > totalPage ) {
			pageBoxEndPage = totalPage;
		}
		
		// 이전버튼 페이지 계산
		int pageBoxStartBeforePage = pageBoxStartPage - 1;
		if ( pageBoxStartBeforePage < 1 ) {
			pageBoxStartBeforePage = 1;
		}
		
		// 다음버튼 페이지 계산
		int pageBoxEndAfterPage = pageBoxEndPage + 1;
		
		if ( pageBoxEndAfterPage > totalPage ) {
			pageBoxEndAfterPage = totalPage;
		}
		
		// 이전버튼 노출여부 계산
		boolean pageBoxStartBeforeBtnNeedToShow = pageBoxStartBeforePage != pageBoxStartPage;
		// 다음버튼 노출여부 계산
		boolean pageBoxEndAfterBtnNeedToShow = pageBoxEndAfterPage != pageBoxEndPage;
		
		System.out.printf("totalPage : %d\n", totalPage);
		System.out.printf("page : %d\n", page);
		System.out.printf("previousPageBoxesCount : %d\n", previousPageBoxesCount);
		System.out.printf("pageBoxStartBeforePage : %d\n", pageBoxStartBeforePage);
		System.out.printf("pageBoxStartPage : %d\n", pageBoxStartPage);
		System.out.printf("pageBoxEndPage : %d\n", pageBoxEndPage);
		System.out.printf("pageBoxEndAfterPage : %d\n", pageBoxEndAfterPage);
		System.out.printf("pageBoxStartBeforeBtnNeedToShow : %b\n", pageBoxStartBeforeBtnNeedToShow);
		System.out.printf("pageBoxEndAfterBtnNeedToShow : %b\n", pageBoxEndAfterBtnNeedToShow);
		
		
	}
}