package org.aksw.jena_sparql_api.util.collection; import java.util.List; import java.util.stream.Stream; import com.google.common.collect.DiscreteDomain; import com.google.common.collect.Range; public class RangedSupplierList<T> implements RangedSupplier<Long, T>//Function<Range<Long>, ClosableIterator<T>> { protected List<T> items; public RangedSupplierList(List<T> items) { super(); this.items = items; } @Override public Stream<T> apply(Range<Long> range) { Range<Long> validRange = Range.closedOpen(0l, (long)items.size()); Range<Long> effectiveRange = range.intersection(validRange).canonical(DiscreteDomain.longs()); List<T> subList = items.subList(effectiveRange.lowerEndpoint().intValue(), effectiveRange.upperEndpoint().intValue()); return subList.stream(); } @Override public String toString() { return "StaticListItemSupplier [items=" + items + "]"; } // public <X> X unwrap(Class<X> clazz, boolean reflexive) { // X result = reflexive && this.getClass().isAssignableFrom(clazz) // ? (X)this // : null; // // return result; // } }