/** * <pre> * Copyright: Copyright(C) 2011-2012, ketayao.com * Date: 2013年8月11日 * Author: <a href="mailto:ketayao@gmail.com">ketayao</a> * Description: * * </pre> **/ package com.ketayao.fensy.page; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * * @author <a href="mailto:ketayao@gmail.com">ketayao</a> * @since 2013年8月11日 下午4:28:39 */ public abstract class AbstractPage<T> implements IPage<T>, Serializable{ /** 描述 */ private static final long serialVersionUID = 1820419010335143732L; private final int pageNumber; private final int pageSize; private final List<T> content = new ArrayList<T>(); private final long total; /** * @param pageNumber * @param pageSize * @param total */ public AbstractPage(List<T> content, long total, int pageNumber, int pageSize) { if (null == content) { throw new IllegalArgumentException("Content must not be null!"); } this.content.addAll(content); this.total = total; this.pageNumber = pageNumber; this.pageSize = pageSize; } /** * @return * @see com.ketayao.fensy.page.IPage#getNumber() */ @Override public int getNumber() { return pageNumber; } /** * @return * @see com.ketayao.fensy.page.IPage#getSize() */ @Override public int getSize() { return pageSize; } /** * @return * @see com.ketayao.fensy.page.IPage#getTotalPages() */ @Override public int getTotalPages() { return getSize() == 0 ? 0 : (int) Math.ceil((double) total / (double) getSize()); } /** * @return * @see com.ketayao.fensy.page.IPage#getNumberOfElements() */ @Override public int getNumberOfElements() { return content.size(); } /** * @return * @see com.ketayao.fensy.page.IPage#getTotalElements() */ @Override public long getTotalElements() { return total; } /** * @return * @see com.ketayao.fensy.page.IPage#hasPreviousPage() */ @Override public boolean hasPreviousPage() { return getNumber() > 0; } /** * @return * @see com.ketayao.fensy.page.IPage#isFirstPage() */ @Override public boolean isFirstPage() { return !hasPreviousPage(); } /** * @return * @see com.ketayao.fensy.page.IPage#hasNextPage() */ @Override public boolean hasNextPage() { return (getNumber() + 1) * getSize() < total; } /** * @return * @see com.ketayao.fensy.page.IPage#isLastPage() */ @Override public boolean isLastPage() { return !hasNextPage(); } /** * @return * @see com.ketayao.fensy.page.IPage#iterator() */ @Override public Iterator<T> iterator() { return content.iterator(); } /** * @return * @see com.ketayao.fensy.page.IPage#getContent() */ @Override public List<T> getContent() { return content; } /** * @return * @see com.ketayao.fensy.page.IPage#hasContent() */ @Override public boolean hasContent() { return !content.isEmpty(); } }