package com.boardgamegeek.ui.model; import android.text.TextUtils; import java.util.ArrayList; import java.util.List; public class PaginatedData<T> { private List<T> items; private int totalItemCount; private int currentPageNumber; private int pageSize; private final String errorMessage; public PaginatedData(List<T> items, int totalItemCount, int currentPageNumber, int pageSize) { this.items = items; if (this.items == null) { this.items = new ArrayList<>(); } this.totalItemCount = totalItemCount; this.currentPageNumber = currentPageNumber; this.pageSize = pageSize; errorMessage = ""; } public PaginatedData(Exception e) { errorMessage = e.getLocalizedMessage(); } public PaginatedData(PaginatedData<T> data) { if (data.items == null) { this.items = new ArrayList<>(); } else { this.items = new ArrayList<>(data.items); } this.totalItemCount = data.totalItemCount; this.currentPageNumber = data.currentPageNumber; this.pageSize = data.pageSize; this.errorMessage = data.errorMessage; } public void addPage(List<T> items) { this.items.addAll(items); currentPageNumber++; } public void clear() { items.clear(); currentPageNumber = 0; totalItemCount = 0; } public List<T> getItems() { return items; } public int getCurrentPageNumber() { return currentPageNumber; } public int getNextPageNumber() { return currentPageNumber + 1; } public boolean hasMoreResults() { return currentPageNumber * pageSize < totalItemCount; } public boolean hasError() { return !TextUtils.isEmpty(errorMessage); } public String getErrorMessage() { return errorMessage; } }