SPRING/chapter04_MVC

PageDTO.java

GAWON 2023. 7. 18. 09:17
package org.joonzis.domain;

import lombok.Data;

@Data
public class PageDTO {
	private int startPage;      //시작 페이지 번호
	private int endPage;		//끝 페이지 번호
	private boolean prev, next; //이전 , 다음페이지 이동
	private int total;			//전체 게시물 수		
	private Criteria cri;		
	
	//페이지 번호를 10개씩 본다는 가정
	public PageDTO(Criteria cri, int total) {
		this.cri = cri;
		this.total = total;
		
		this.endPage = (int)(Math.ceil(cri.getPageNum() / 10.0)) * 10;
		//1페이지 : Math.ceil(0.1) * 10 = 10
		//10페이지 : Math.ceil(1) * 10 = 10;
		//11페이지 : Math.ceil(1.1) * 10 = 20;
		
		this.startPage = this.endPage - 9;
		//만약 10개씩 보여준다면 시작 번호는 무조건 끝 번호에서 9만큼 빼면 된다.
		//ex) 2 3 4 5 6 7 8 9 10 11
		
		int realEnd = (int)(Math.ceil((total * 1.0) / cri.getAmount()));
		if(realEnd < this.endPage) {
			this.endPage = realEnd;
		}
		
		//전체 데이터 수 (total)가 80이면 끝 번호(endPage)는 8 이된다
		//만약 끝 번호(endPage)와 한 페이지 당 출력되는 데이터 수(amount)의 곱이
		//전체 데이터 수(total)보다 크면ex) 11* 10 > 80
		//다시 total을 이용해서 다시 계산해야 한다
		
		this.prev = this.startPage > 1; //1보다 크면 true
		this.next = this.endPage < realEnd; //현재 끝 번호 보다 실제 끝 페이지가 더 크면 true 
		
		
	}
}