다음처럼 총 게시물의 개수와 페이지인덱스를 알경우 페이징 처리해주는 프로그램을 짜고 싶다.
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 부분에 링크를 매개변수로 받아서 넣어주면 더 좋을 듯 하다.