All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ektorp.Page Maven / Gradle / Ivy

package org.ektorp;

import java.util.Iterator;
import java.util.List;

public class Page implements Iterable {

	private final int totalSize;
	private final int pageSize;
	private final PageRequest previousPageRequest;
	private final PageRequest nextPageRequest;
	
	private final List rows;
	
	public Page(List rows, int totalSize, int pageSize, PageRequest previousPageRequest,  PageRequest nextPageRequest) {
		this.rows = rows;
		this.totalSize = totalSize;
		this.pageSize = pageSize;
		this.previousPageRequest = previousPageRequest;
		this.nextPageRequest = nextPageRequest;
	}
	
	@Override
	public Iterator iterator() {
		return rows.iterator();
	}
	/**
	 * 
	 * Exists mainly for providing compatibility with the c:forEach in jstl (1.2) as it cannot handle java.lang.Iterable
	 * @return
	 */
	public List getRows() {
		return rows;
	}
	/**
	 * Has a silly name in order to conform with the java beans naming convention
	 * @return true if there is a next page
	 */
	public boolean isHasNext() {
		return nextPageRequest != null;
	}
	/**
	 * Has a silly name in order to conform with the java beans naming convention
	 * @return true if there is a previous page
	 */
	public boolean isHasPrevious() {
		return previousPageRequest != null;
	}
	/**
	 * @return the total number of items across all pages
	 */
	public int getTotalSize() {
		return totalSize;
	}
	/**
	 * 
	 * @return the maximum number of items this page may contain.
	 *  
	 */
	public int getPageSize() {
		return pageSize;
	}
	/**
	 * @return the next page request encoded in a URL-save string.
	 * @see org.ektorp.PageRequest
	 * @throws java.lang.IllegalStateException of no next page exists
	 */
	public String getNextLink() {
		if (!isHasNext()) {
			throw new IllegalStateException("Cannot create next link as no next page exists");
		}
		return nextPageRequest.asLink();
	}
	
	public PageRequest getNextPageRequest() {
		return nextPageRequest;
	}
	
	public PageRequest getPreviousPageRequest() {
		return previousPageRequest;
	}
	/**
	 * @return the previous page request encoded in a URL-save string.
	 * @see org.ektorp.PageRequest
	 * @throws java.lang.IllegalStateException of no previous page exists
	 */
	public String getPreviousLink() {
		if (!isHasPrevious()) {
			throw new IllegalStateException("Cannot create previous link as no previous page exists");
		}
		return previousPageRequest.asLink();
	}
	
	public int size() {
		return rows.size();
	}
	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy