2010년 2월 5일 금요일

페이징 클래스

페이징 클래스 짜기가 귀찮아서 웹서핑을 하는 도중 2008년도에 내가 만든 소스를 발견.......

이런 우연이... -_-;;; 후덜덜...

아무튼, 자료를 한곳으로 모으기로 하였으니 이곳에 모아두어야 겠당.

[code java]
/*
 * Author : Mikelim(mikelim@ciyah.com)
 *
 * Pagination Class
 *
 * @properties
 *         firstLink , prevLink, nextLink , lastLink : set up image or text if you want.
 *         delimiter : set up image or text
 *         prewrap , postwrap : currentPage design wrapper tag
 */

public class Pagination {

    private int totalRows = 0;
    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;

    private String amp = "";
   
    // for design
    public String firstLink = "[<<]";
    public String firstOffLink = "";
    public String prevLink = "[<]";
    public String prevOffLink = "";
    public String nextLink = "[>]";
    public String nextOffLink = "";
    public String lastLink = "[>>]";
    public String lastOffLink = "";
   
    public String delimiter = "|";
   
    // current Page Wrapper
    public String preWrap = "<b>";
    public String postWrap = "</b>";
   
    public String linkPage = "";
    public String queryString = "";
   
    // result temp object
    public StringBuffer pageString = new StringBuffer();
   
    public Pagination(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;
    }
   
    public void prePrint()
    {
        // set first block link
        if(this.currentBlock > 1)
            pageString.append("<a href=\"" + this.linkPage + "?" + this.queryString + this.amp + "pg=" + (((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 + "pg=" + (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 + "pg=" + (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 + "pg=" + ((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 + "pg=" + 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 pg = new Pagination(20 , 10, 10 , 352);
        pg.linkPage = "pagenum.jsp";
        pg.queryString = "param1=test&param2=test2";
       
        // for design
        pg.firstLink = "<img src=\"/first.gif\">";
        pg.prevLink = "<img src=\"/prev.gif\">";
        pg.nextLink = "<img src=\"/next.gif\">";
        pg.lastLink = "<img src=\"/last.gif\">";
       
        pg.delimiter = "|";
       
       
        //print
        System.out.println(pg.print());
    }
    */

}
[/code]

소스파일은 첨부~~

댓글 없음:

댓글 쓰기