package board.util;
private int currentPage = 1;
private int pageSize = 10;
private int blockSize = 10;
private int totalPages;
private int totalBlocks;
private int startPageNum;
private int endPageNum;
private int currentBlock;
// for design
private String firstLink = "[<<]";
private String firstOffLink = "";
private String prevLink = "[<]";
private String prevOffLink = "";
private String nextLink = "[>]";
private String nextOffLink = "";
private String lastLink = "[>>]";
private String lastOffLink = "";
private String delimiter = "|";
// current Page Wrapper
private String preWrap = "<b>";
private String postWrap = "</b>";
private String linkPage = "";
private String queryString = "";
private int start,end;
return start;
}
this.start = start;
}
return end;
}
this.end = end;
}
return firstLink;
}
this.firstLink = firstLink;
}
return firstOffLink;
}
this.firstOffLink = firstOffLink;
}
return prevLink;
}
this.prevLink = prevLink;
}
return prevOffLink;
}
this.prevOffLink = prevOffLink;
}
return nextLink;
}
this.nextLink = nextLink;
}
return nextOffLink;
}
this.nextOffLink = nextOffLink;
}
return lastLink;
}
this.lastLink = lastLink;
}
return lastOffLink;
}
this.lastOffLink = lastOffLink;
}
return delimiter;
}
this.delimiter = delimiter;
}
return preWrap;
}
this.preWrap = preWrap;
}
return postWrap;
}
this.postWrap = postWrap;
}
return linkPage;
}
this.linkPage = linkPage;
}
return queryString;
}
this.queryString = queryString;
}
public StringBuffer pageString = new StringBuffer();
public Paging(int currentPage , int pageSize , int blockSize , int totalRows)
{
this.currentPage = currentPage;
this.pageSize = pageSize;
this.blockSize = blockSize;
this.totalRows = totalRows;
initialize();
}
public void initialize()
{
this.totalPages = (int)Math.ceil((double)this.totalRows / this.pageSize);
this.totalBlocks = (int)Math.ceil((double)this.totalPages / this.blockSize);
this.currentBlock = (int)Math.ceil((double)((this.currentPage - 1) / this.blockSize)) + 1;
this.startPageNum = ((this.currentBlock - 1) * this.pageSize) + 1;
this.endPageNum = this.startPageNum + this.pageSize;
this.start = (currentPage-1)*pageSize+1;
this.end = start+pageSize-1;
}
public void prePrint()
{
// set first block link
if(this.currentBlock > 1)
pageString.append("<a href=\"" + this.linkPage + "?" + this.queryString + this.amp + "page=" + (((this.currentBlock - 2) * this.pageSize) + 1) + "\">" + this.firstLink + "</a> ");
else
pageString.append(this.firstOffLink + " ");
// set prev page link
if(this.currentPage > 1)
pageString.append("<a href=\"" + this.linkPage + "?" + this.queryString + this.amp + "page=" + (this.currentPage - 1) + "\">" + this.prevLink + "</a> ");
else
pageString.append(this.prevOffLink + " ");
}
public void postPrint()
{
// set next page link
if(this.currentPage < this.totalPages )
pageString.append("<a href=\"" + this.linkPage + "?" + this.queryString + this.amp + "page=" + (this.currentPage + 1) + "\">" + this.nextLink + "</a> ");
else
pageString.append(this.nextOffLink + " ");
// set last page link
if(this.currentBlock < this.totalBlocks)
pageString.append("<a href=\"" + this.linkPage + "?" + this.queryString + this.amp + "page=" + ((this.currentBlock * this.pageSize) + 1) + "\">" + this.lastLink + "</a> ");
else
pageString.append(this.lastOffLink);
}
public void printList()
{
for(int i = startPageNum ; i <= endPageNum ; i++)
{
if(i > this.totalPages || i == endPageNum)
break;
else if(i > startPageNum)
pageString.append(this.delimiter);
if(i == this.currentPage)
pageString.append(" " + this.preWrap + i + this.postWrap + " ");
else
pageString.append(" <a href=\"" + this.linkPage + "?" + this.queryString + this.amp + "page=" + i + "\">" + i + "</a> ");
}
}
public String print()
{
// set amp if already to set up queryString property
if(!this.queryString.equals(""))
this.amp = "&";
if(this.totalPages > 1)
{
this.prePrint();
this.printList();
this.postPrint();
}
return(pageString.toString());
}
/**
* @param args
*/
/*
public static void main(String[] args) {
// TODO Auto-generated method stub
Pagination page = new Pagination(1 , 10, 10 , 11);
page.linkPage = "pagenum.jsp";
page.queryString = "param1=test¶m2=test2";
// for design
page.firstLink = "<img src=\"/first.gif\">";
page.prevLink = "<img src=\"/prev.gif\">";
page.nextLink = "<img src=\"/next.gif\">";
page.lastLink = "<img src=\"/last.gif\">";
page.firstOffLink = "[<<]";
page.prevOffLink = "[<]";
page.nextOffLink = "[>]";
page.lastOffLink = "[>>]";
page.delimiter = "||";
System.out.println(page.print());
}
*/