public abstract class PagedDatabaseIterable<E,K> extends Object implements EnclosedIterable<E>
EnclosedIterable
that takes a list of ids and
then pages them by opening an OfBizListIterator
for each page.
This implementation supports preserving the order of the elements in the returned list but will load all the elements into memory in order to do so.
This implementation uses the DatabaseIterator
but implements paging and sorting on top of it.
EnclosedIterable.Functions, EnclosedIterable.ListResolver<T>
Constructor and Description |
---|
PagedDatabaseIterable(List<K> ids)
Use where the order of the result is not important.
|
PagedDatabaseIterable(List<K> ids,
Resolver<E,K> keyResolver)
Use where the order of the result is important.
|
PagedDatabaseIterable(List<K> ids,
Resolver<E,K> keyResolver,
int pageSize)
Use where the order of the result is important.
|
Modifier and Type | Method and Description |
---|---|
protected abstract OfBizListIterator |
createListIterator(List<K> ids)
Create a new iterator from the subset of ids.
|
void |
foreach(Consumer<E> consumer)
Apply the sink to all elements in the Collection.
|
protected abstract Resolver<org.ofbiz.core.entity.GenericValue,E> |
getResolver()
Used to turn generic values into Domain objects
|
boolean |
isEmpty() |
int |
size() |
public PagedDatabaseIterable(List<K> ids)
ids
- a Listpublic PagedDatabaseIterable(List<K> ids, Resolver<E,K> keyResolver)
ids
- a ListkeyResolver
- to get a domain object's key (ie. the element in the ids list). Null if sort order is
unimportantpublic PagedDatabaseIterable(List<K> ids, Resolver<E,K> keyResolver, int pageSize)
ids
- a ListkeyResolver
- to get a domain object's key (ie. the element in the ids list). Null if sort order is
unimportantpageSize
- the size of the pages to usepublic final void foreach(Consumer<E> consumer)
EnclosedIterable
foreach
in interface EnclosedIterable<E>
protected abstract OfBizListIterator createListIterator(List<K> ids)
ids
- list of idsprotected abstract Resolver<org.ofbiz.core.entity.GenericValue,E> getResolver()
public final int size()
size
in interface EnclosedIterable<E>
size
in interface Sized
EnclosedIterable.foreach(Consumer)
. Be careful depending on this size
being exact, as in many cases its best efforts value or may be unstable due to concurrent changes.public boolean isEmpty()
isEmpty
in interface EnclosedIterable<E>
isEmpty
in interface Sized
Copyright © 2002-2017 Atlassian. All Rights Reserved.