001: /**
002: * $Id: Paginator.java,v 1.2 2005/09/05 07:43:21 nk137934 Exp $
003: * Copyright 2005 Sun Microsystems, Inc. All
004: * rights reserved. Use of this product is subject
005: * to license terms. Federal Acquisitions:
006: * Commercial Software -- Government Users
007: * Subject to Standard License Terms and
008: * Conditions.
009: *
010: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
011: * are trademarks or registered trademarks of Sun Microsystems,
012: * Inc. in the United States and other countries.
013: */package com.sun.portal.sapportlet.util;
014:
015: import java.util.Comparator;
016: import java.util.List;
017: import java.util.ArrayList;
018:
019: public class Paginator {
020:
021: private List items = null;
022:
023: //configurable ?
024: private final int itemsPerPage = 5;
025: private int totalNumber;
026: private int numberOfPages;
027: private int currentPageNumber;
028:
029: /** Creates a new instance of Paginator */
030: public Paginator(List items) {
031:
032: this .items = items;
033:
034: if (items != null) {
035:
036: totalNumber = items.size();
037: numberOfPages = totalNumber / itemsPerPage;
038: if (numberOfPages * itemsPerPage != totalNumber) {
039: numberOfPages++;
040: }
041: //Any initialization logic that is needed
042: //by the inheriting class. For example,
043: // default sort.
044: init();
045: } else {
046: totalNumber = 0;
047: numberOfPages = 1;
048: currentPageNumber = 1;
049: }
050: }
051:
052: protected void init() {
053: }
054:
055: public List getCurrentPage() {
056: return getPageNumber(currentPageNumber);
057: }
058:
059: private List getPageNumber(int pageNumber) {
060:
061: if (items == null || totalNumber == 0) {
062: return new ArrayList();
063: }
064: ArrayList arrayList = new ArrayList(itemsPerPage);
065:
066: int start = (pageNumber - 1) * itemsPerPage;
067: int end = (pageNumber * itemsPerPage) < totalNumber ? (pageNumber * itemsPerPage)
068: : totalNumber;
069:
070: for (int k = start; k < end; k++) {
071: arrayList.add(items.get(k));
072: }
073:
074: //Set this page to the current page
075: currentPageNumber = pageNumber;
076: return arrayList;
077: }
078:
079: public void setPageNumber(int pageNumber) {
080: //
081: if (pageNumber < 1) {
082: currentPageNumber = 1;
083: } else if (pageNumber > numberOfPages) {
084: currentPageNumber = numberOfPages;
085: } else {
086: currentPageNumber = pageNumber;
087: }
088: }
089:
090: public void setFirstPage() {
091: currentPageNumber = 1;
092: }
093:
094: public void setPreviousPage() {
095: if (currentPageNumber > 1) {
096: currentPageNumber--;
097: }
098: }
099:
100: public void setNextPage() {
101: if (currentPageNumber < numberOfPages) {
102: currentPageNumber++;
103: }
104: }
105:
106: public void setLastPage() {
107: currentPageNumber = numberOfPages;
108: }
109:
110: public int getNumberOfPages() {
111: return numberOfPages;
112: }
113:
114: public int getCurrentPageNumber() {
115: return currentPageNumber;
116: }
117:
118: public int getTotalNumber() {
119: return totalNumber;
120: }
121:
122: public List getAllItems() {
123:
124: return items;
125: }
126: }
|