Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.belladati.sdk.impl;
  
  import java.net.URI;
  import java.util.Iterator;
  import java.util.List;
  
 
 abstract class PaginatedListImpl<T> implements PaginatedList<T> {
 
 	protected final List<T> currentData = new ArrayList<T>();
 	private final BellaDatiServiceImpl service;
 	private final String relativeUrl;
 	private final String field;

The first page loaded during the most recent call to a load() method
 
 	private int firstPage = -1;
The most recent page loaded
 
 	private int page = -1;
The page size currently used by this instance
 
 	private int size = -1;
 
 	PaginatedListImpl(BellaDatiServiceImpl serviceString relativeUrlString field) {
 		this. = service;
 		this. = relativeUrl;
 		this. = field;
 	}
 
 	public Iterator<T> iterator() {
 		return .iterator();
 	}
 
 	public PaginatedList<T> load() {
 		return loadFrom();
 	}
 
 	public PaginatedList<T> load(int sizethrows IllegalArgumentException {
 		return load(0, size);
 	}
 
 	public PaginatedList<T> load(int pageint sizethrows IllegalArgumentException {
 		// argument checking
 		if (page < 0) {
 			throw new IllegalArgumentException("Page must be >= 0, was " + page);
 		}
 		if (size <= 0) {
 			throw new IllegalArgumentException("Size must be > 0, was " + size);
 		}
 
 		// query parameterized URL
 		return loadFrom(buildUri(pagesize).toString());
 	}
 
 	private URI buildUri(int pageint size) {
 		try {
 			return new URIBuilder().addParameter("offset""" + page * size).addParameter("size""" + size).build();
 		} catch (URISyntaxException e) {
 			throw new InternalConfigurationException("Invalid URI"e);
 		}
 	}
 
 	private PaginatedList<T> loadFrom(String parameterizedUri) {
 		addFrom(parameterizedUri);
 		return this;
 	}
 
 	private PaginatedList<T> addFrom(String parameterizedUri) {
 		JsonNode json = .loadJson(parameterizedUri);
 
 		 = json.get("size").asInt();
 		 = json.get("offset").asInt() / ;
 
 		ArrayNode nodes = (ArrayNodejson.get();
 		for (JsonNode node : nodes) {
 		}
 		return this;
 	}
 
 	public PaginatedList<T> loadNext() {
 		if (!isLoaded()) {
 			// if we haven't loaded this list yet, load the first page
 			return load();
 		}
 		if (!hasNextPage()) {
			// there are no more pages to load
			return this;
		}
		return addFrom(buildUri( + 1, ).toString());
	}
	public boolean isLoaded() {
		return  > 0 &&  >= 0;
	}
	public boolean hasNextPage() {
		if (!isLoaded()) {
			return true;
		}
		// if all pages until now were full, we have more items
		return  * ( -  + 1) == .size();
	}
	public int getFirstLoadedPage() {
		if (!isLoaded()) {
			return -1;
		}
		return ;
	}
	public int getLastLoadedPage() {
		if (!isLoaded()) {
			return -1;
		}
		return ;
	}
	public int getFirstLoadedIndex() {
		if (!isLoaded() || .isEmpty()) {
			return -1;
		}
		return  * ;
	}
	public int getLastLoadedIndex() {
		if (!isLoaded() || .isEmpty()) {
			return -1;
		}
		return getFirstLoadedIndex() + .size() - 1;
	}
	public int getPageSize() {
		return ;
	}
	public boolean contains(T element) {
		return .contains(element);
	}
	public T get(int indexthrows IndexOutOfBoundsException {
		return .get(index - getFirstLoadedIndex());
	}
	public int indexOf(T element) {
		int dataIndex = .indexOf(element);
		if (dataIndex < 0) {
			return -1;
		}
		return getFirstLoadedIndex() + dataIndex;
	}
	public boolean isEmpty() {
	}
	public int size() {
		return .size();
	}
	public List<T> toList() {
		return Collections.unmodifiableList();
	}
	public String toString() {
	}
	protected abstract T parse(BellaDatiServiceImpl serviceJsonNode node);
New to GrepCode? Check out our FAQ X