Class MemStatementIterator
java.lang.Object
org.eclipse.rdf4j.sail.memory.model.MemStatementIterator
- All Implemented Interfaces:
AutoCloseable, CloseableIteration<MemStatement, SailException>, Iteration<MemStatement, SailException>
public class MemStatementIterator
extends Object
implements CloseableIteration<MemStatement, SailException>
A StatementIterator that can iterate over a list of Statement objects. This iterator compares Resource and Literal
objects using the '==' operator, which is possible thanks to the extensive sharing of these objects in the
MemoryStore.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate booleanFlag indicating whether this iteration has been closed.private final MemResource[]The context of statements to return, or null if any context is OK.private final booleanFlag indicating whether this iterator should only return explicitly added statements or only return inferred statements.private final booleanprivate final MemStatementIteratorCacheprivate intThe number of returned statementsstatic final intprivate MemStatementprivate final booleanprivate final MemValueThe object of statements to return, or null if any object is OK.private final MemIRIThe predicate of statements to return, or null if any predicate is OK.private final intIndicates which snapshot should be iterated over.private intThe index of the last statement that has been returned.private MemStatement[]private final intThe lists of statements over which to iterate, and its size (different from length).private final MemResourceThe subject of statements to return, or null if any subject is OK. -
Constructor Summary
ConstructorsConstructorDescriptionMemStatementIterator(MemStatementList statementList, MemResource subject, MemIRI predicate, MemValue object, Boolean explicit, int snapshot, MemStatementIteratorCache iteratorCache, MemResource... contexts) Creates a new MemStatementIterator that will iterate over the statements contained in the supplied MemStatementList searching for statements that match the specified pattern of subject, predicate, object and context(s). -
Method Summary
Modifier and TypeMethodDescriptionstatic CloseableIteration<MemStatement, SailException> cacheAwareInstance(MemStatementList smallestList, MemResource subj, MemIRI pred, MemValue obj, Boolean explicit, int snapshot, MemResource[] memContexts, MemStatementIteratorCache iteratorCache) final voidclose()Closes this iteration, freeing any resources that it is holding.booleanprivate MemStatementSearches through statementList, starting from index _nextStatementIdx + 1, for statements that match the constraints that have been set for this iterator.getStats()inthashCode()final booleanhasNext()Returns true if the iteration has more elements.private booleanReturns true if this iterator was particularly costly and should be considered for cachingprivate MemStatementFetches the next element if it hasn't been fetched yet and stores it innextElement.(package private) booleanfinal MemStatementnext()Returns the next element in the iteration.voidremove()Throws anUnsupportedOperationException.toString()Methods inherited from interface CloseableIteration
stream
-
Field Details
-
MIN_SIZE_TO_CONSIDER_FOR_CACHE
public static final int MIN_SIZE_TO_CONSIDER_FOR_CACHE- See Also:
-
statementListSize
private final int statementListSizeThe lists of statements over which to iterate, and its size (different from length). Always set the size before the array. If we get the array first and the size after, then the MemStatementList object could have resized the array in between so that the size > length. -
statementList
-
subject
The subject of statements to return, or null if any subject is OK. -
predicate
The predicate of statements to return, or null if any predicate is OK. -
object
The object of statements to return, or null if any object is OK. -
contexts
The context of statements to return, or null if any context is OK. -
explicit
private final boolean explicitFlag indicating whether this iterator should only return explicitly added statements or only return inferred statements.If this has not been specified (null) and we should return both explicit and inferred statements, then the flag below will be set to true.
-
explicitNotSpecified
private final boolean explicitNotSpecified -
snapshot
private final int snapshotIndicates which snapshot should be iterated over. -
noIsolation
private final boolean noIsolation -
statementIndex
private int statementIndexThe index of the last statement that has been returned. -
matchingStatements
private int matchingStatementsThe number of returned statements -
nextElement
-
closed
private boolean closedFlag indicating whether this iteration has been closed. -
iteratorCache
-
cachedHashCode
private int cachedHashCode
-
-
Constructor Details
-
MemStatementIterator
public MemStatementIterator(MemStatementList statementList, MemResource subject, MemIRI predicate, MemValue object, Boolean explicit, int snapshot, MemStatementIteratorCache iteratorCache, MemResource... contexts) throws InterruptedException Creates a new MemStatementIterator that will iterate over the statements contained in the supplied MemStatementList searching for statements that match the specified pattern of subject, predicate, object and context(s).- Parameters:
statementList- the statements over which to iterate.subject- subject of pattern.predicate- predicate of pattern.object- object of pattern.contexts- context(s) of pattern.- Throws:
InterruptedException
-
-
Method Details
-
cacheAwareInstance
public static CloseableIteration<MemStatement, SailException> cacheAwareInstance(MemStatementList smallestList, MemResource subj, MemIRI pred, MemValue obj, Boolean explicit, int snapshot, MemResource[] memContexts, MemStatementIteratorCache iteratorCache) throws InterruptedException - Throws:
InterruptedException
-
getNextElement
Searches through statementList, starting from index _nextStatementIdx + 1, for statements that match the constraints that have been set for this iterator. If a matching statement has been found it will be stored in _nextStatement and _nextStatementIdx points to the index of this statement in _statementList. Otherwise, _nextStatement will set to null. -
matchesExplicitAndSnapshot
-
isCandidateForCache
private boolean isCandidateForCache()Returns true if this iterator was particularly costly and should be considered for caching- Returns:
- true if it should be cached
-
equals
-
hashCode
-
toString
-
getStats
-
hasNext
public final boolean hasNext()Description copied from interface:IterationReturns true if the iteration has more elements. (In other words, returns true ifIteration.next()would return an element rather than throwing a NoSuchElementException.)- Specified by:
hasNextin interfaceIteration<MemStatement, SailException>- Returns:
- true if the iteration has more elements.
-
next
Description copied from interface:IterationReturns the next element in the iteration.- Specified by:
nextin interfaceIteration<MemStatement, SailException>- Returns:
- the next element in the iteration.
-
lookAhead
Fetches the next element if it hasn't been fetched yet and stores it innextElement.- Returns:
- The next element, or null if there are no more results. @ If there is an issue getting the next element or closing the iteration.
-
remove
public void remove()Throws anUnsupportedOperationException.- Specified by:
removein interfaceIteration<MemStatement, SailException>
-
close
public final void close()Description copied from interface:CloseableIterationCloses this iteration, freeing any resources that it is holding. If the iteration has already been closed then invoking this method has no effect.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseableIteration<MemStatement, SailException>
-