ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 페이징(Paging) 계산 Class
    IT/java 2021. 2. 4. 15:42


    public class Page {
    	String name;// 이름
    	
    	
    	//user setting var
    	int itemTotalCount		= 0;		//아이템크기
    	int	pageItemCount		= 10;		//페이지에 한번에 보여줄 아이템크기
    	int pageCount			= 1;		//페이지수 보여줄 개수
    	
    	
    	//user chioce var
    	int currentItem			= 1;		//현재 아이템 번호
    	
    	
    	public Page() {
    	}
    	public Page(String name) {
    		this.name=name;
    	}	
    	public Page(String name, int itemTotalCount, int pageItemCount, int pageCount, int currentItem) {
    		setName(name);
    		setItemTotalCount(itemTotalCount);
    		setPageCount(pageCount);
    		setCurrentItem(currentItem);
    	}
    	
    	public String getName() {
    		return name;
    	}
    	public Page setName(String name) {
    		this.name = name;
    		return this;
    	}
    	//아이템크기
    	public int getItemTotalCount() {
    		return itemTotalCount;
    	}
    	public Page setItemTotalCount(int itemTotalCount) {
    		if(itemTotalCount < 1){
    			itemTotalCount = 0;
    		}
    		this.itemTotalCount = itemTotalCount;
    		return this;
    	}
    	//페이지에 한번에 보여줄 아이템크기
    	public int getPageItemCount() {
    		return pageItemCount;
    	}
    	//페이지당 보여줄 아이템개수
    	public Page setPageItemCount(int pageItemCount) {
    		this.pageItemCount = pageItemCount;
    		return this;
    	}
    	
    	//페이지수 보여줄 개수
    	public int getPageCount() {
    		return pageCount;
    	}
    	public Page setPageCount(int pageCount) {
    		this.pageCount = pageCount;
    		return this;
    	}
    	
    ///////////////////////////settting
    	//현재 페이지 번호
    	public int getCurrentPage() {
    		int currentPage = (currentItem/pageItemCount) + ((currentItem%pageItemCount)>0?1:0); //현재위치 / 페이지에보여줄아이템수  + 나머지0이상있는경우 +1
    		int pageMax = getPageMax();
    		int pageMin = getPageMin();
    		if(currentPage>pageMax){
    			currentPage=pageMax;
    		}else if(currentPage < 1){
    			currentPage = pageMin;
    		}
    		
    		
    		
    		return currentPage;
    	}
    	public Page setCurrentPage(int currentPage) {
    		currentItem = (pageItemCount*currentPage - 1) + 1; //바로전페이지로 이동후 +1로 아이템위치셋팅
    		
    		int totalCont = getItemTotalCount();
    		if(currentItem>getItemTotalCount()){
    			currentItem = totalCont;
    		}else if(currentItem<1){
    			currentItem=0;
    		}
    		
    		
    		int pageMax = getPageMax();
    		int pageMin = getPageMin();
    		if(currentPage>pageMax){
    			currentPage=pageMax;
    		}else if(currentPage<1){
    			currentPage = pageMin;
    		}
    		return this;
    	}
    	
    	//현재 아이템 번호
    	public int getCurrentItem() {
    		return currentItem;
    	}
    	public Page setCurrentItem(int currentItem) throws IllegalArgumentException {
    		if(currentItem>getItemTotalCount()){
    			throw new IllegalArgumentException("max over");
    		}
    		this.currentItem = currentItem;
    		return this;
    	}
    	
    	
    	//////auto------
    //	public int[] getPage() {
    //		return page;
    //	}
    	public int getPageMin() {
    		return 1;
    	}
    	public int getPageMax() {
    		int max = (itemTotalCount/pageItemCount) + ((itemTotalCount%pageItemCount)>0?1:0);
    		int pageMin = getPageMin();
    		if(max<1){
    			max = pageMin;
    		}
    		return max;
    	}
    	
    	//현재 페이지의 아이템 최소값
    	public int getCurrentPageItemMin() {
    		return (getCurrentPage() - 1 ) * getPageItemCount() + 1; //전페이지 
    	}
    	//현재 페이지의 아이템 최대값
    	public int getCurrentPageItemMax() {
    		int itemTotatCount = getItemTotalCount();
    		int max = getCurrentPageItemMin()+ getPageItemCount() - 1;
    		if(max>itemTotatCount){
    			max = itemTotatCount;
    		}
    		return max;
    	}
    	
    	//페이징 표시의   처음 페이지  값
    	public int getCurrentPageMin() {
    		int currentPage = getCurrentPage();
    		
    		int currentPageMin = currentPage - (getPageCount() / 2);
    		if(currentPageMin < 1){
    			currentPageMin = 1;
    		}
    		return currentPageMin;
    	}
    	//페이징 표시의   최대 페이지  값
    	public int getCurrentPageMax() {
    		int pageMax = getPageMax();
    		
    		int currentPageMin = getCurrentPageMin() + (getPageCount()) - 1;
    		if(currentPageMin>pageMax){
    			currentPageMin = pageMax;
    		}
    		return currentPageMin;
    	}
    	
    	
    	
    	
    	public void process(){
    		getName();
    		getItemTotalCount();
    		getPageItemCount();
    		getPageCount();
    		getCurrentPage();
    		getCurrentItem();
    		getPageMin();
    		getPageMax();
    		getCurrentPageMin();
    		getCurrentPageMax();
    		
    	}
    
    	@Override
    	public String toString() {
    		process();
    		return "getName()=" + getName() + ", \r\n getItemTotalCount(총아이템수)="
    				+ getItemTotalCount() + ",\r\n getPageItemCount(한페이지당 표시 아이템수)="
    				+ getPageItemCount() + ",\r\n getPageCount(페이징쪽에 페이지표시 보여줄수)=" + getPageCount()
    				+ ",\r\n getCurrentPage(현재페이지)=" + getCurrentPage()
    				+ ",\r\n getCurrentItem(현재아이템위치)=" + getCurrentItem() + ",\r\n getPageMin()="
    				+ getPageMin() + ",\r\n getPageMax(마지막 페이지 번호)=" + getPageMax()
    				+ ",\r\n getCurrentPageMin(보여질페이지에 처음페이지 번호)=" + getCurrentPageMin()
    				+ ",\r\n getCurrentPageMax(보여질페이지에 마지막페이지 번호)=" + getCurrentPageMax()
    				
    				+ ",\r\n getCurrentPageItemMin(현재페이지 처음 아이템 번호)=" + getCurrentPageItemMin()
    				+ ",\r\n getCurrentPageItemMax(현재페이지 마지막 아이템 번호)=" + getCurrentPageItemMax()
    				
    				;
    	}
    	
    	
    	
    //	public static void main(String[] args) {
    //		Page page = new Page();
    //		page.setItemTotalCount(94);//총개수
    //		//page.setPageCount(1); //페이지수 보여질수
    //		page.setPageItemCount(10);
    //		page.setCurrentPage(1);
    //		System.out.println(page);
    //	}
    	
    }
    


    댓글

Designed by Tistory.