<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FCollections_Data_Structure%2FPaging</id>
		<title>Java/Collections Data Structure/Paging - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FCollections_Data_Structure%2FPaging"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Paging&amp;action=history"/>
		<updated>2026-04-18T20:52:49Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Paging&amp;diff=9103&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Paging&amp;diff=9103&amp;oldid=prev"/>
				<updated>2010-06-01T07:25:22Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 07:25, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Paging&amp;diff=9102&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Paging&amp;diff=9102&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:48Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Implementation of PaginatedList backed by an ArrayList ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 *  Copyright 2004 Clinton Begin&lt;br /&gt;
 *&lt;br /&gt;
 *  Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 *  you may not use this file except in compliance with the License.&lt;br /&gt;
 *  You may obtain a copy of the License at&lt;br /&gt;
 *&lt;br /&gt;
 *      http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 *&lt;br /&gt;
 *  Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 *  distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 *  See the License for the specific language governing permissions and&lt;br /&gt;
 *  limitations under the License.&lt;br /&gt;
 */&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.ListIterator;&lt;br /&gt;
/**&lt;br /&gt;
 * Implementation of PaginatedList backed by an ArrayList&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public class PaginatedArrayList implements PaginatedList {&lt;br /&gt;
  private static final ArrayList EMPTY_LIST = new ArrayList(0);&lt;br /&gt;
  private List list;&lt;br /&gt;
  private List page;&lt;br /&gt;
  private int pageSize;&lt;br /&gt;
  private int index;&lt;br /&gt;
  /**&lt;br /&gt;
   * @param pageSize&lt;br /&gt;
   */&lt;br /&gt;
  public PaginatedArrayList(int pageSize) {&lt;br /&gt;
    this.pageSize = pageSize;&lt;br /&gt;
    this.index = 0;&lt;br /&gt;
    this.list = new ArrayList();&lt;br /&gt;
    repaginate();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Constructor to set the initial size and the page size&lt;br /&gt;
   * &lt;br /&gt;
   * @param initialCapacity -&lt;br /&gt;
   *          the initial size&lt;br /&gt;
   * @param pageSize -&lt;br /&gt;
   *          the page size&lt;br /&gt;
   */&lt;br /&gt;
  public PaginatedArrayList(int initialCapacity, int pageSize) {&lt;br /&gt;
    this.pageSize = pageSize;&lt;br /&gt;
    this.index = 0;&lt;br /&gt;
    this.list = new ArrayList(initialCapacity);&lt;br /&gt;
    repaginate();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Constructor to create an instance using an existing collection&lt;br /&gt;
   * &lt;br /&gt;
   * @param c -&lt;br /&gt;
   *          the collection to build the instance with&lt;br /&gt;
   * @param pageSize -&lt;br /&gt;
   *          the page size&lt;br /&gt;
   */&lt;br /&gt;
  public PaginatedArrayList(Collection c, int pageSize) {&lt;br /&gt;
    this.pageSize = pageSize;&lt;br /&gt;
    this.index = 0;&lt;br /&gt;
    this.list = new ArrayList(c);&lt;br /&gt;
    repaginate();&lt;br /&gt;
  }&lt;br /&gt;
  private void repaginate() {&lt;br /&gt;
    if (list.isEmpty()) {&lt;br /&gt;
      page = EMPTY_LIST;&lt;br /&gt;
    } else {&lt;br /&gt;
      int start = index * pageSize;&lt;br /&gt;
      int end = start + pageSize - 1;&lt;br /&gt;
      if (end &amp;gt;= list.size()) {&lt;br /&gt;
        end = list.size() - 1;&lt;br /&gt;
      }&lt;br /&gt;
      if (start &amp;gt;= list.size()) {&lt;br /&gt;
        index = 0;&lt;br /&gt;
        repaginate();&lt;br /&gt;
      } else if (start &amp;lt; 0) {&lt;br /&gt;
        index = list.size() / pageSize;&lt;br /&gt;
        if (list.size() % pageSize == 0) {&lt;br /&gt;
          index--;&lt;br /&gt;
        }&lt;br /&gt;
        repaginate();&lt;br /&gt;
      } else {&lt;br /&gt;
        page = list.subList(start, end + 1);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /* List accessors (uses page) */&lt;br /&gt;
  public int size() {&lt;br /&gt;
    return page.size();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isEmpty() {&lt;br /&gt;
    return page.isEmpty();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean contains(Object o) {&lt;br /&gt;
    return page.contains(o);&lt;br /&gt;
  }&lt;br /&gt;
  public Iterator iterator() {&lt;br /&gt;
    return page.iterator();&lt;br /&gt;
  }&lt;br /&gt;
  public Object[] toArray() {&lt;br /&gt;
    return page.toArray();&lt;br /&gt;
  }&lt;br /&gt;
  public Object[] toArray(Object a[]) {&lt;br /&gt;
    return page.toArray(a);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean containsAll(Collection c) {&lt;br /&gt;
    return page.containsAll(c);&lt;br /&gt;
  }&lt;br /&gt;
  public Object get(int index) {&lt;br /&gt;
    return page.get(index);&lt;br /&gt;
  }&lt;br /&gt;
  public int indexOf(Object o) {&lt;br /&gt;
    return page.indexOf(o);&lt;br /&gt;
  }&lt;br /&gt;
  public int lastIndexOf(Object o) {&lt;br /&gt;
    return page.lastIndexOf(o);&lt;br /&gt;
  }&lt;br /&gt;
  public ListIterator listIterator() {&lt;br /&gt;
    return page.listIterator();&lt;br /&gt;
  }&lt;br /&gt;
  public ListIterator listIterator(int index) {&lt;br /&gt;
    return page.listIterator(index);&lt;br /&gt;
  }&lt;br /&gt;
  public List subList(int fromIndex, int toIndex) {&lt;br /&gt;
    return page.subList(fromIndex, toIndex);&lt;br /&gt;
  }&lt;br /&gt;
  /* List mutators (uses master list) */&lt;br /&gt;
  public boolean add(Object o) {&lt;br /&gt;
    boolean b = list.add(o);&lt;br /&gt;
    repaginate();&lt;br /&gt;
    return b;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean remove(Object o) {&lt;br /&gt;
    boolean b = list.remove(o);&lt;br /&gt;
    repaginate();&lt;br /&gt;
    return b;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean addAll(Collection c) {&lt;br /&gt;
    boolean b = list.addAll(c);&lt;br /&gt;
    repaginate();&lt;br /&gt;
    return b;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean addAll(int index, Collection c) {&lt;br /&gt;
    boolean b = list.addAll(index, c);&lt;br /&gt;
    repaginate();&lt;br /&gt;
    return b;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean removeAll(Collection c) {&lt;br /&gt;
    boolean b = list.removeAll(c);&lt;br /&gt;
    repaginate();&lt;br /&gt;
    return b;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean retainAll(Collection c) {&lt;br /&gt;
    boolean b = list.retainAll(c);&lt;br /&gt;
    repaginate();&lt;br /&gt;
    return b;&lt;br /&gt;
  }&lt;br /&gt;
  public void clear() {&lt;br /&gt;
    list.clear();&lt;br /&gt;
    repaginate();&lt;br /&gt;
  }&lt;br /&gt;
  public Object set(int index, Object element) {&lt;br /&gt;
    Object o = list.set(index, element);&lt;br /&gt;
    repaginate();&lt;br /&gt;
    return o;&lt;br /&gt;
  }&lt;br /&gt;
  public void add(int index, Object element) {&lt;br /&gt;
    list.add(index, element);&lt;br /&gt;
    repaginate();&lt;br /&gt;
  }&lt;br /&gt;
  public Object remove(int index) {&lt;br /&gt;
    Object o = list.remove(index);&lt;br /&gt;
    repaginate();&lt;br /&gt;
    return o;&lt;br /&gt;
  }&lt;br /&gt;
  /* Paginated List methods */&lt;br /&gt;
  public int getPageSize() {&lt;br /&gt;
    return pageSize;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isFirstPage() {&lt;br /&gt;
    return index == 0;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isMiddlePage() {&lt;br /&gt;
    return !(isFirstPage() || isLastPage());&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isLastPage() {&lt;br /&gt;
    return list.size() - ((index + 1) * pageSize) &amp;lt; 1;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isNextPageAvailable() {&lt;br /&gt;
    return !isLastPage();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isPreviousPageAvailable() {&lt;br /&gt;
    return !isFirstPage();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean nextPage() {&lt;br /&gt;
    if (isNextPageAvailable()) {&lt;br /&gt;
      index++;&lt;br /&gt;
      repaginate();&lt;br /&gt;
      return true;&lt;br /&gt;
    } else {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public boolean previousPage() {&lt;br /&gt;
    if (isPreviousPageAvailable()) {&lt;br /&gt;
      index--;&lt;br /&gt;
      repaginate();&lt;br /&gt;
      return true;&lt;br /&gt;
    } else {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void gotoPage(int pageNumber) {&lt;br /&gt;
    index = pageNumber;&lt;br /&gt;
    repaginate();&lt;br /&gt;
  }&lt;br /&gt;
  public int getPageIndex() {&lt;br /&gt;
    return index;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright 2004 Clinton Begin&lt;br /&gt;
 * &lt;br /&gt;
 * Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;); you may not&lt;br /&gt;
 * use this file except in compliance with the License. You may obtain a copy of&lt;br /&gt;
 * the License at&lt;br /&gt;
 * &lt;br /&gt;
 * http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 * &lt;br /&gt;
 * Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS, WITHOUT&lt;br /&gt;
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the&lt;br /&gt;
 * License for the specific language governing permissions and limitations under&lt;br /&gt;
 * the License.&lt;br /&gt;
 */&lt;br /&gt;
/**&lt;br /&gt;
 * Interface for lists that support paging&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
interface PaginatedList extends List {&lt;br /&gt;
  /**&lt;br /&gt;
   * Returns the maximum number of items per page&lt;br /&gt;
   * &lt;br /&gt;
   * @return The maximum number of items per page.&lt;br /&gt;
   */&lt;br /&gt;
  public int getPageSize();&lt;br /&gt;
  /**&lt;br /&gt;
   * Is the current page the first page?&lt;br /&gt;
   * &lt;br /&gt;
   * @return True if the current page is the first page or if only a single page&lt;br /&gt;
   *         exists.&lt;br /&gt;
   */&lt;br /&gt;
  public boolean isFirstPage();&lt;br /&gt;
  /**&lt;br /&gt;
   * Is the current page a middle page (ie not first or last)?&lt;br /&gt;
   * &lt;br /&gt;
   * @return True if the current page is not the first or last page, and more&lt;br /&gt;
   *         than one page exists (always returns false if only a single page&lt;br /&gt;
   *         exists).&lt;br /&gt;
   */&lt;br /&gt;
  public boolean isMiddlePage();&lt;br /&gt;
  /**&lt;br /&gt;
   * Is the current page the last page?&lt;br /&gt;
   * &lt;br /&gt;
   * @return True if the current page is the last page or if only a single page&lt;br /&gt;
   *         exists.&lt;br /&gt;
   */&lt;br /&gt;
  public boolean isLastPage();&lt;br /&gt;
  /**&lt;br /&gt;
   * Is a page available after the current page?&lt;br /&gt;
   * &lt;br /&gt;
   * @return True if the next page is available&lt;br /&gt;
   */&lt;br /&gt;
  public boolean isNextPageAvailable();&lt;br /&gt;
  /**&lt;br /&gt;
   * Is a page available before the current page?&lt;br /&gt;
   * &lt;br /&gt;
   * @return True if the previous page is available&lt;br /&gt;
   */&lt;br /&gt;
  public boolean isPreviousPageAvailable();&lt;br /&gt;
  /**&lt;br /&gt;
   * Moves to the next page after the current page. If the current page is the&lt;br /&gt;
   * last page, wrap to the first page.&lt;br /&gt;
   * &lt;br /&gt;
   * @return True if the page changed&lt;br /&gt;
   */&lt;br /&gt;
  public boolean nextPage();&lt;br /&gt;
  /**&lt;br /&gt;
   * Moves to the page before the current page. If the current page is the first&lt;br /&gt;
   * page, wrap to the last page.&lt;br /&gt;
   * &lt;br /&gt;
   * @return True if the page changed&lt;br /&gt;
   */&lt;br /&gt;
  public boolean previousPage();&lt;br /&gt;
  /**&lt;br /&gt;
   * Moves to a specified page. If the specified page is beyond the last page,&lt;br /&gt;
   * wrap to the first page. If the specified page is before the first page,&lt;br /&gt;
   * wrap to the last page.&lt;br /&gt;
   * &lt;br /&gt;
   * @param pageNumber&lt;br /&gt;
   *          The page to go to&lt;br /&gt;
   */&lt;br /&gt;
  public void gotoPage(int pageNumber);&lt;br /&gt;
  /**&lt;br /&gt;
   * Returns the current page index, which is a zero based integer. All&lt;br /&gt;
   * paginated list implementations should know what index they are on, even if&lt;br /&gt;
   * they don&amp;quot;t know the ultimate boundaries (min/max).&lt;br /&gt;
   * &lt;br /&gt;
   * @return The current page&lt;br /&gt;
   */&lt;br /&gt;
  public int getPageIndex();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Paging over a collection ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2003-2006, Simon Brown&lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer in&lt;br /&gt;
 *     the documentation and/or other materials provided with the&lt;br /&gt;
 *     distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Neither the name of Pebble nor the names of its contributors may&lt;br /&gt;
 *     be used to endorse or promote products derived from this software&lt;br /&gt;
 *     without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS IS&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE&lt;br /&gt;
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE&lt;br /&gt;
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE&lt;br /&gt;
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR&lt;br /&gt;
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF&lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS&lt;br /&gt;
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br /&gt;
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;br /&gt;
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
import java.util.List;&lt;br /&gt;
/**&lt;br /&gt;
 * Helper class that implements paging over a collection.&lt;br /&gt;
 *&lt;br /&gt;
 * @author    Simon Brown&lt;br /&gt;
 */&lt;br /&gt;
public class Pageable&amp;lt;T&amp;gt; {&lt;br /&gt;
  /** the default page size */&lt;br /&gt;
  public static final int DEFAULT_PAGE_SIZE = 10;&lt;br /&gt;
  private static final int PAGE_WINDOW = 10;&lt;br /&gt;
  /** the list over which this class is paging */&lt;br /&gt;
  private List&amp;lt;T&amp;gt; list;&lt;br /&gt;
  /** the page size */&lt;br /&gt;
  private int pageSize = DEFAULT_PAGE_SIZE;&lt;br /&gt;
  /** the current page */&lt;br /&gt;
  private int page;&lt;br /&gt;
  /** the starting index */&lt;br /&gt;
  private int startingIndex;&lt;br /&gt;
  /** the ending index */&lt;br /&gt;
  private int endingIndex;&lt;br /&gt;
  /** the maximum number of pages */&lt;br /&gt;
  private int maxPages;&lt;br /&gt;
  /**&lt;br /&gt;
   * Creates a new instance with the specified list.&lt;br /&gt;
   *&lt;br /&gt;
   * @param list    a List&lt;br /&gt;
   */&lt;br /&gt;
  public Pageable(List&amp;lt;T&amp;gt; list) {&lt;br /&gt;
    this.list = list;&lt;br /&gt;
    this.page = 1;&lt;br /&gt;
    this.maxPages = 1;&lt;br /&gt;
    calculatePages();&lt;br /&gt;
  }&lt;br /&gt;
  private void calculatePages() {&lt;br /&gt;
    if (pageSize &amp;gt; 0) {&lt;br /&gt;
      // calculate how many pages there are&lt;br /&gt;
      if (list.size() % pageSize == 0) {&lt;br /&gt;
        maxPages = list.size() / pageSize;&lt;br /&gt;
      } else {&lt;br /&gt;
        maxPages = (list.size() / pageSize) + 1;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets the list that this instance is paging over.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  a List&lt;br /&gt;
   */&lt;br /&gt;
  public List&amp;lt;T&amp;gt; getList() {&lt;br /&gt;
    return this.list;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets the subset of the list for the current page.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  a List&lt;br /&gt;
   */&lt;br /&gt;
  public List&amp;lt;T&amp;gt; getListForPage() {&lt;br /&gt;
    return list.subList(startingIndex, endingIndex);&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets the page size.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  the page size as an int&lt;br /&gt;
   */&lt;br /&gt;
  public int getPageSize() {&lt;br /&gt;
    return this.pageSize;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Sets the page size.&lt;br /&gt;
   *&lt;br /&gt;
   * @param pageSize   the page size as an int&lt;br /&gt;
   */&lt;br /&gt;
  public void setPageSize(int pageSize) {&lt;br /&gt;
    this.pageSize = pageSize;&lt;br /&gt;
    calculatePages();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets the page.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  the page as an int&lt;br /&gt;
   */&lt;br /&gt;
  public int getPage() {&lt;br /&gt;
    return this.page;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Sets the page size.&lt;br /&gt;
   *&lt;br /&gt;
   * @param p    the page as an int&lt;br /&gt;
   */&lt;br /&gt;
  public void setPage(int p) {&lt;br /&gt;
    if (p &amp;gt;= maxPages) {&lt;br /&gt;
      this.page = maxPages;&lt;br /&gt;
    } else if (p &amp;lt;= 1) {&lt;br /&gt;
      this.page = 1;&lt;br /&gt;
    } else {&lt;br /&gt;
      this.page = p;&lt;br /&gt;
    }&lt;br /&gt;
    // now work out where the sub-list should start and end&lt;br /&gt;
    startingIndex = pageSize * (page-1);&lt;br /&gt;
    if (startingIndex &amp;lt; 0) {&lt;br /&gt;
      startingIndex = 0;&lt;br /&gt;
    }&lt;br /&gt;
    endingIndex = startingIndex + pageSize;&lt;br /&gt;
    if (endingIndex &amp;gt; list.size()) {&lt;br /&gt;
      endingIndex = list.size();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets the maximum number of pages.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  the maximum number of pages as an int&lt;br /&gt;
   */&lt;br /&gt;
  public int getMaxPages() {&lt;br /&gt;
    return this.maxPages;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Determines whether there is a previous page and gets the page number.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  the previous page number, or zero&lt;br /&gt;
   */&lt;br /&gt;
  public int getPreviousPage() {&lt;br /&gt;
    if (page &amp;gt; 1) {&lt;br /&gt;
      return page-1;&lt;br /&gt;
    } else {&lt;br /&gt;
      return 0;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Determines whether there is a next page and gets the page number.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  the next page number, or 0&lt;br /&gt;
   */&lt;br /&gt;
  public int getNextPage() {&lt;br /&gt;
    if (page &amp;lt; maxPages) {&lt;br /&gt;
      return page+1;&lt;br /&gt;
    } else {&lt;br /&gt;
      return 0;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets the minimum page in the window.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  the page number&lt;br /&gt;
   */&lt;br /&gt;
  public int getMinPageRange() {&lt;br /&gt;
    if (getPage() &amp;gt; PAGE_WINDOW) {&lt;br /&gt;
      return getPage() - PAGE_WINDOW;&lt;br /&gt;
    } else {&lt;br /&gt;
      return 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets the maximum page in the window.&lt;br /&gt;
   *&lt;br /&gt;
   * @return  the page number&lt;br /&gt;
   */&lt;br /&gt;
  public int getMaxPageRange() {&lt;br /&gt;
    if (getPage() &amp;lt; (getMaxPages() - PAGE_WINDOW)) {&lt;br /&gt;
      return getPage() + PAGE_WINDOW;&lt;br /&gt;
    } else {&lt;br /&gt;
      return getMaxPages();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>