package ch.x42.terye.iterator;
import java.util.Iterator;
import javax.jcr.RangeIterator;
public abstract class RangeIteratorImpl<T> implements RangeIterator {
protected final Iterator<T> iterator;
protected long position = 0L;
protected long size = -1L;
public RangeIteratorImpl(Iterable<T> iterable) {
this.iterator = iterable.iterator();
this.position = 0;
}
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Object next() {
position++;
return iterator.next();
}
@Override
public void remove() {
iterator.remove();
}
@Override
public void skip(long skipNum) {
if (skipNum < 0) {
throw new IllegalArgumentException("Parameter must be non-negative");
}
while (skipNum > 0 && iterator.hasNext()) {
iterator.next();
position++;
skipNum--;
}
}
@Override
public long getSize() {
return size;
}
@Override
public long getPosition() {
return position;
}
}