Program/Java Programming

PageNavigation.java

Hue Kim 2012. 7. 2. 17:52

/**

 * <br>프로그램명 : PageNavigation.java

 * <br>설명 : 페이지 관련 처리

 * <br>Version : 1.0

 * <br>작성일자 : 2002/01/11 작성자 : 이희형

 * <br>수정일자 : 수정자 :

 * <br>수정내용 :

 */

package kr.re.kict.etc;


import java.util.Vector;



public class PageNavigation

{

 

// 현재 페이지 번호 

  private int pageNo;

  // 전체 게시물 숫자

  private int totalCount;

// 한 화면에 보여주는 데이터 수

private int displayCnt;

// 한 화면에 보여주는 페이지 수

private int displayPageRange;

  // 이전 페이지 번호

private int previousPage;

// 다음 페이지 번호

  private int nextPage;

  // 마지막 페이지 번호

  private int lastPage;


// pageNavigation('페이지번호','게시판 총 갯수','한페이지에 보여지는 리스트수','한화면에 보여지는 페이지 리스트수')

// PageNavigation pageNavigation = new PageNavigation(Integer.parseInt(pageNo), totalCount, listCount, pageCount);

 

/**

*  다음 파라미터로 PageNavigation 객체를 생성한다.

*  사용방법은 

*  1. 한 화면당 게시물 숫자, 한 화면에 보여줄 페이지 인덱수 수, 보여줄 페이지번호를 파라미터로 받는다.

*  2. 조건에 맞는 총 게시물 숫자를 구한다.

*  3. 이 생성자 PageNavigation(int currentPageNo, int totalCnt, int displayCntNo, int displayPageRangeNo)를 이용하여 객체 생성

*  4. pageNavigation.getPreviousPageNo(), pageNavigation.getNextPageNo() 를 이용하여 이전 다음 페이지 번호를 얻는다. (JSP에서 사용)

*  5. pageNavigation.getPageList() 를 이용하여 페이진 인덱스 리스트를 얻는다. (JSP에서 사용)

*  6. 쿼리에 사용할 rownum 상,하한을 pageNavigation.getMinCount(), pageNavigation.getMaxCount() 메쏘드로 얻어 사용한다.

     *  <p>

*  @param int currentPageNo        현재 페이지 번호

*  @param int totalCnt          게시물 총 갯수

*  @param int displayCntNo         한 페이지에 보여주는 게시물 수

*  @param int displayPageRangeNo   한 화면에 보여지는 페이지인덱스 수

*/

public PageNavigation(int currentPageNo, int totalCnt, int displayCntNo, int displayPageRangeNo)

{

  setPageNo(currentPageNo);  

setTotalCnt(totalCnt);

setDisplay(displayCntNo);

setPageRange(displayPageRangeNo);

assignPage();

}

 

/**

*  현재 페이지 번호를 반환한다.

     *  <p>

*  @return int

*/

  public int getPageNo()

{

return pageNo;


/**

*  최종 페이지 번호를 반환한다.

     *  <p>

*  @return int

*/

  public int getLastPageNo()

{

return lastPage;


/**

*  다음 페이지 번호를 반환한다.

     *  <p>

*  @return int

*/

public int getNextPageNo()

{

return nextPage;


/**

*  다음 페이지 번호를 반환한다.

     *  <p>

*  @return int

*/

  public int getPreviousPageNo()

{

return previousPage;


/**

*  전체 개시물 수를 반환한다.

     *  <p>

*  @return int

*/

public int getTotalCnt()

{

return totalCount;


/**

*  부분 범위 처리 쿼리의 max rownum 반환  

     *  <p>

*  @return int

*/

  public String getMaxCount()

{

return String.valueOf(pageNo * displayCnt + 1);

}


/**

*  부분 범위 처리 쿼리의 min rownum 반환  

     *  <p>

*  @return int

*/

  public String getMinCount()

{

  return String.valueOf((pageNo-1) * displayCnt);

}

 

/**

*  페이진 인덱스 리스트를 얻는다.  

     *  <p>

*  @return int

*/

public Vector getPageList()

{

Vector<String> vec = new Vector<String>();


  for(int i= previousPage+1; i <  lastPage ;i++) {

  vec.addElement(String.valueOf(i));

}

  return vec;

}

  //현재 페이지 입력

  public void setPageNo(int var)

{

pageNo = var;

}

  //현재 페이지 입력

  public void setTotalCnt(int var)

{

totalCount = var;

}

  // 한 화면에 보여줄 데이터수

public void setDisplay(int var)

{

displayCnt = var;

}

// 페이지 범위를 어디까지 설정할지 부분 

public void setPageRange(int var)

{

displayPageRange = var;

}


/**

*  internal use  

     *  <p>

*/

private void assignPage()

{

  int pageRange = 0;


  previousPage = ((int)((pageNo - 1)/displayPageRange))*displayPageRange;

  nextPage = ((int)((pageNo - 1)/displayPageRange) + 1)*displayPageRange + 1;

  lastPage = nextPage;

 

if(totalCount <= (nextPage -1 )*displayCnt){

pageRange = 1;

if(totalCount%displayCnt != 0){

pageRange = 2;

}

lastPage = (int)(totalCount/displayCnt) + pageRange;

nextPage = 0;

  }

 

}