com.github.akurilov.commons.io.collection.CircularListInput Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-commons Show documentation
Show all versions of java-commons Show documentation
Common functionality Java library
package com.github.akurilov.commons.io.collection;
import java.io.EOFException;
import java.io.IOException;
import java.util.List;
/**
* An list which may use fixed count of the items for unlimited (circular) retrieving.
*/
public class CircularListInput
extends ListInput {
/**
@param dataItems the source items collection
*/
public CircularListInput(final List dataItems) {
super(dataItems);
}
/**
@return next item
*/
@Override
public T get()
throws IOException {
if(i >= size) {
reset();
}
return items.get(i ++);
}
/**
@param buffer buffer for the items
@param maxCount the count limit
@return the actual count of the items got in the buffer
@throws EOFException doesn't throw
*/
@Override
public int get(final List buffer, final int maxCount)
throws EOFException, IOException {
int n = 0;
while(n < maxCount) {
if(i >= size) {
reset();
}
n += super.get(buffer, Math.min(size - i, maxCount - n));
}
return n;
}
@Override
public String toString() {
return "circularListInput<" + items.hashCode() + ">";
}
}