package com.stripe.model; import com.stripe.net.RequestOptions; import java.util.Iterator; import java.util.List; import java.util.Map; /** * Provides a representation of a single page worth of data from the Stripe * API. * * The following code will have the effect of iterating through a single page * worth of invoice data retrieve from the API: * * <pre> * {@code * foreach (Invoice invoice : Invoice.list(...).getData()) { * System.out.println("Current invoice = " + invoice.toString()); * } * } * </pre> * * The class also provides a helper for iterating over collections that may be * longer than a single page: * * <pre> * {@code * foreach (Invoice invoice : Invoice.list(...).autoPagingIterable()) { * System.out.println("Current invoice = " + invoice.toString()); * } * } * </pre> */ public abstract class StripeCollection<T extends HasId> extends StripeObject implements StripeCollectionInterface<T> { List<T> data; Integer totalCount; Boolean hasMore; private RequestOptions requestOptions; private Map<String, Object> requestParams; String url; /** 3/2014: Legacy (from before newstyle pagination API) */ Integer count; public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } public Boolean getHasMore() { return hasMore; } public void setHasMore(Boolean hasMore) { this.hasMore = hasMore; } public String getURL() { return url; } public void setURL(String url) { this.url = url; } /** 3/2014: Legacy (from before newstyle pagination API) */ public Integer getCount() { return count; } /** 3/2014: Legacy (from before newstyle pagination API) */ public void setCount(Integer count) { this.count = count; } /** * Returns an iterable that can be used to iterate across all objects * across all pages. As page boundaries are encountered, the next page will * be fetched automatically for continued iteration. */ public Iterable<T> autoPagingIterable() { return new PagingIterable<T>(this); } public RequestOptions getRequestOptions() { return this.requestOptions; } public Map<String, Object> getRequestParams() { return this.requestParams; } public void setRequestOptions(RequestOptions requestOptions) { this.requestOptions = requestOptions; } public void setRequestParams(Map<String, Object> requestParams) { this.requestParams = requestParams; } }