페이징 처리

YeonSeong·2021년 11월 1일
0

문제상황


다음처럼 총 게시물의 개수와 페이지인덱스를 알경우 페이징 처리해주는 프로그램을 짜고 싶다.

테스트 코드

public class PagerTest {
    public static void main(String[] args){

        long totalCount = 139;
        long pageIndex = 12;

        Pager pager = new Pager(totalCount);
        System.out.println(pager.html(pageIndex));
    }
}

아래와 같이 구현했다.

구현 코드

public class Pager {
    long totalCount;
    long pageIndex;

    Pager(long count){
        totalCount = count;
    }

    public void setPageIndex(long pageIndex) {
        this.pageIndex = pageIndex;
    }

    public String aTagGenerator(String var){
        return "<a href='#'>" + var +"</a> \n";
    }

    public String aTagGenerator(long var){
        return "<a href='#'>" + var +"</a> \n";
    }

    public String aTagFocusGenerator(long var){
        return "<a href='#' class = 'on'>" + var +"</a> \n";
    }

    public int maxPageCalculator(long totalCount){
        return (int) Math.ceil(totalCount/10);
    }

    public String middleATag(){
        String result = "";

        int initialNumber = (int) Math.floor(pageIndex/10)*10 + 1;

        for(int i = initialNumber; i < initialNumber + 10; i++){ // 10개씩 출력
            if(i == pageIndex){
                result += aTagFocusGenerator(i);

            } else {
                result += aTagGenerator(i);
            }

            if(i > maxPageCalculator(totalCount)){ // 최대 페이지를 넘어가면 멈춤
                break;
            }
        };

        return result;
    }

    public String format(){
        return aTagGenerator("[처음]") +
                aTagGenerator("[이전]") +
                middleATag() +
                aTagGenerator("[다음]") +
                aTagGenerator("[마지막]");
    }

    public String html(long index){
       setPageIndex(index);
       return format();
    }
}

리뷰

aTagGenerator, aTagfocusGenerator 부분에 링크를 매개변수로 받아서 넣어주면 더 좋을 듯 하다.

profile
선한 의도가 선한 결과를 만드는 시스템을 만드는게 꿈입니다.

0개의 댓글