2 * Copyright (c) 2012, the Last.fm Java Project and Committers All rights
3 * reserved. Redistribution and use of this software in source and binary forms,
4 * with or without modification, are permitted provided that the following
5 * conditions are met: - Redistributions of source code must retain the above
6 * copyright notice, this list of conditions and the following disclaimer. -
7 * Redistributions in binary form must reproduce the above copyright notice,
8 * this list of conditions and the following disclaimer in the documentation
9 * and/or other materials provided with the distribution. THIS SOFTWARE IS
10 * PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
11 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
13 * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
14 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
16 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
17 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 package com.cyanogenmod.eleven.lastfm;
24 import java.util.Collection;
25 import java.util.Iterator;
28 * A <code>PaginatedResult</code> is returned by methods which result set might
29 * be so large that it needs to be paginated. Each <code>PaginatedResult</code>
30 * contains the total number of result pages, the current page and a
31 * <code>Collection</code> of entries for the current page.
33 * @author Janni Kovacs
35 public class PaginatedResult<T> implements Iterable<T> {
37 private final int page;
39 private final int totalPages;
41 public final Collection<T> pageResults;
48 PaginatedResult(final int page, final int totalPages, final Collection<T> pageResults) {
50 this.totalPages = totalPages;
51 this.pageResults = pageResults;
55 * Returns the page number of this result.
59 public int getPage() {
64 * Returns the total number of pages available.
68 public int getTotalPages() {
73 * Returns <code>true</code> if this Result contains no elements, which is
74 * the case for service calls that would have returned a
75 * <code>PaginatedResult</code> but fail.
77 * @return <code>true</code> if this result contains no elements
79 public boolean isEmpty() {
80 return pageResults == null || pageResults.isEmpty();
84 public Iterator<T> iterator() {
85 return pageResults.iterator();