Class PagingIterator
- All Implemented Interfaces:
Iterator<ElementBase>
PagingIterator supports an iterator over a list of objects that extend ElementBase. Callers can use it to step through the list just once. If they want to parse the list again, they could use the copy/clone constructor to create a new iterator.
PagingIterator provides paging support to enable the list in the iterator to be much bigger than can be stored in memory. It maintains pointers for the full list, and a potentially smaller cached list that is used to batch up elements being retrieved from the property (metadata) server.
Thus is combines the ability to process very large lists whilst minimising the chatter with the property server. The class uses a number of pointers and counts. Imagine a list of 4000 columns in a table. We can not retrieve all 4000 columns on one call. So we retrieve subsets over a number of REST calls as the caller walks through the full list.
- maxCacheSize is the maximum elements we can retrieve in one call
- cachedElementList.size() is how many elements we have in memory at this time.
-
Field Summary
Modifier and TypeFieldDescriptionprotected List<ElementBase>
Elements retrieved from the repositoryprotected int
Pointer in the cached list to the next item to return.protected int
StartFrom used on calls to the repositoryprotected PropertyIteratorBase
Implementation that retrieves values from the repository.protected static final org.slf4j.Logger
Logging destination.protected int
Maximum that can be returned on each retrieveFields inherited from class org.odpi.openmetadata.frameworks.connectors.properties.beans.PropertyBase
CURRENT_AUDIT_HEADER_VERSION
-
Constructor Summary
ConstructorDescriptionPagingIterator
(PropertyIteratorBase iterator, int maxCacheSize) Typical Constructor creates an iterator with the supplied list of comments.PagingIterator
(PropertyIteratorBase iterator, PagingIterator templateIterator) Copy/clone constructor. -
Method Summary
Methods inherited from class org.odpi.openmetadata.frameworks.connectors.properties.beans.PropertyBase
equals, getHeaderVersion, hashCode, setHeaderVersion
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Iterator
forEachRemaining
-
Field Details
-
maxCacheSize
protected int maxCacheSizeMaximum that can be returned on each retrieve -
cachedElementStart
protected int cachedElementStartStartFrom used on calls to the repository -
cachedElementList
Elements retrieved from the repository -
cachedElementPointer
protected int cachedElementPointerPointer in the cached list to the next item to return. -
iterator
Implementation that retrieves values from the repository. -
log
protected static final org.slf4j.Logger logLogging destination.
-
-
Constructor Details
-
PagingIterator
Typical Constructor creates an iterator with the supplied list of comments.- Parameters:
iterator
- type-specific iterator that wraps this paging iterator.maxCacheSize
- maximum number of elements that should be retrieved from the property server and cached in the element list at any one time. If a number less than one is supplied, 1 is used.
-
PagingIterator
Copy/clone constructor. Used to reset iterator element pointer to 0;- Parameters:
iterator
- type-specific iterator that wraps this paging iterator.templateIterator
- template to copy; null to create an empty iterator
-
-
Method Details
-
hasNext
public boolean hasNext()The iterator can only be used once to step through the elements. This method returns a boolean to indicate if it has got to the end of the list yet.- Specified by:
hasNext
in interfaceIterator<ElementBase>
- Returns:
- boolean indicating whether there are more elements.
-
next
Return the next element in the list- Specified by:
next
in interfaceIterator<ElementBase>
- Returns:
- ElementBase next element.
- Throws:
OCFRuntimeException
- if there are no more elements in the list or there are problems retrieving elements from the property (metadata) server.
-
remove
public void remove()Remove the current element in the iterator. This call is not supported and results in an exception- Specified by:
remove
in interfaceIterator<ElementBase>
-
toString
Standard toString method.
-