Class GroupIterator
- java.lang.Object
-
- org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<E,X>
-
- org.eclipse.rdf4j.common.iteration.CloseableIteratorIteration<BindingSet,QueryEvaluationException>
-
- org.eclipse.rdf4j.query.algebra.evaluation.iterator.GroupIterator
-
- All Implemented Interfaces:
java.lang.AutoCloseable,CloseableIteration<BindingSet,QueryEvaluationException>,Iteration<BindingSet,QueryEvaluationException>
public class GroupIterator extends CloseableIteratorIteration<BindingSet,QueryEvaluationException>
-
-
Nested Class Summary
-
Field Summary
Fields Modifier and Type Field Description private static java.util.function.Predicate<BindingSet>ALWAYS_TRUE_BINDING_SETprivate static java.util.function.Predicate<Value>ALWAYS_TRUE_VALUEprivate static java.util.function.Supplier<java.util.function.Predicate<Value>>ALWAYS_TRUE_VALUE_SUPPLIERprivate QueryEvaluationStepargumentsprivate CollectionFactorycfprivate QueryEvaluationContextcontextprivate Groupgroupprivate BindingSetparentBindingsprivate EvaluationStrategystrategyprivate ValueFactoryvf
-
Constructor Summary
Constructors Constructor Description GroupIterator(EvaluationStrategy strategy, Group group, BindingSet parentBindings, long iterationCacheSyncThreshold, QueryEvaluationContext context)Deprecated.GroupIterator(EvaluationStrategy strategy, Group group, BindingSet parentBindings, long iterationCacheSyncThreshold, QueryEvaluationContext context, ValueFactory vf, CollectionFactory cf)GroupIterator(EvaluationStrategy strategy, Group group, BindingSet parentBindings, QueryEvaluationContext context)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.util.Collection<GroupIterator.Entry>buildEntries(java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> aggregates)private GroupIterator.AggregatePredicateCollectorSupplier<?,?>create(GroupElem ge, ValueFactory vf)private java.util.Iterator<BindingSet>createIterator()private java.util.List<GroupIterator.Entry>emptySolutionSpecialCase(java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> aggregates)voidhandleClose()Called byAbstractCloseableIteration.close()when it is called for the first time.booleanhasNext()Returns true if the iteration has more elements.private java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>>makeAggregates()private java.util.function.BiConsumer<GroupIterator.Entry,MutableBindingSet>makeBindSolution(java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> aggregates)private java.util.List<AggregateCollector>makeCollectors(java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> aggregates)private java.util.function.BiConsumer<BindingSet,MutableBindingSet>makeSetAValue(java.util.List<java.util.function.Function<BindingSet,Value>> getValues, java.util.List<java.util.function.BiConsumer<Value,MutableBindingSet>> setBindings, int i)private java.util.function.BiConsumer<BindingSet,MutableBindingSet>makeSetValues(java.util.List<java.util.function.Function<BindingSet,Value>> getValues, java.util.List<java.util.function.BiConsumer<Value,MutableBindingSet>> setBindings)Build a single method that sets all values without a loop or lookups during evaluation.BindingSetnext()Returns the next element in the iteration.private GroupIterator.QueryStepEvaluatorprecompileArg(AggregateOperator operator)private booleanshouldValueComparisonBeStrict()-
Methods inherited from class org.eclipse.rdf4j.common.iteration.CloseableIteratorIteration
hasIterator, remove, setIterator
-
Methods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration
close, isClosed
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.rdf4j.common.iteration.CloseableIteration
stream
-
-
-
-
Field Detail
-
strategy
private final EvaluationStrategy strategy
-
parentBindings
private final BindingSet parentBindings
-
group
private final Group group
-
context
private final QueryEvaluationContext context
-
arguments
private final QueryEvaluationStep arguments
-
vf
private final ValueFactory vf
-
cf
private final CollectionFactory cf
-
ALWAYS_TRUE_BINDING_SET
private static final java.util.function.Predicate<BindingSet> ALWAYS_TRUE_BINDING_SET
-
ALWAYS_TRUE_VALUE
private static final java.util.function.Predicate<Value> ALWAYS_TRUE_VALUE
-
ALWAYS_TRUE_VALUE_SUPPLIER
private static final java.util.function.Supplier<java.util.function.Predicate<Value>> ALWAYS_TRUE_VALUE_SUPPLIER
-
-
Constructor Detail
-
GroupIterator
public GroupIterator(EvaluationStrategy strategy, Group group, BindingSet parentBindings, QueryEvaluationContext context) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
GroupIterator
@Deprecated public GroupIterator(EvaluationStrategy strategy, Group group, BindingSet parentBindings, long iterationCacheSyncThreshold, QueryEvaluationContext context) throws QueryEvaluationException
Deprecated.- Throws:
QueryEvaluationException
-
GroupIterator
public GroupIterator(EvaluationStrategy strategy, Group group, BindingSet parentBindings, long iterationCacheSyncThreshold, QueryEvaluationContext context, ValueFactory vf, CollectionFactory cf) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
-
Method Detail
-
handleClose
public void handleClose() throws QueryEvaluationExceptionDescription copied from class:AbstractCloseableIterationCalled byAbstractCloseableIteration.close()when it is called for the first time. This method is only called once on each iteration. By default, this method does nothing.- Overrides:
handleClosein classAbstractCloseableIteration<BindingSet,QueryEvaluationException>- Throws:
QueryEvaluationException
-
hasNext
public boolean hasNext() throws QueryEvaluationExceptionDescription 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<BindingSet,QueryEvaluationException>- Overrides:
hasNextin classCloseableIteratorIteration<BindingSet,QueryEvaluationException>- Returns:
- true if the iteration has more elements.
- Throws:
QueryEvaluationException
-
next
public BindingSet next() throws QueryEvaluationException
Description copied from interface:IterationReturns the next element in the iteration.- Specified by:
nextin interfaceIteration<BindingSet,QueryEvaluationException>- Overrides:
nextin classCloseableIteratorIteration<BindingSet,QueryEvaluationException>- Returns:
- the next element in the iteration.
- Throws:
QueryEvaluationException
-
createIterator
private java.util.Iterator<BindingSet> createIterator() throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
makeSetValues
private java.util.function.BiConsumer<BindingSet,MutableBindingSet> makeSetValues(java.util.List<java.util.function.Function<BindingSet,Value>> getValues, java.util.List<java.util.function.BiConsumer<Value,MutableBindingSet>> setBindings)
Build a single method that sets all values without a loop or lookups during evaluation.- Parameters:
getValues- the methods to access values in a bindingsetsetBindings- the methods to set values in a bindingset- Returns:
- a BiConsumer that takes the prototype and sets parts into solution as required
-
makeSetAValue
private java.util.function.BiConsumer<BindingSet,MutableBindingSet> makeSetAValue(java.util.List<java.util.function.Function<BindingSet,Value>> getValues, java.util.List<java.util.function.BiConsumer<Value,MutableBindingSet>> setBindings, int i)
-
makeBindSolution
private java.util.function.BiConsumer<GroupIterator.Entry,MutableBindingSet> makeBindSolution(java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> aggregates)
-
makeAggregates
private java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> makeAggregates()
-
buildEntries
private java.util.Collection<GroupIterator.Entry> buildEntries(java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> aggregates) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
emptySolutionSpecialCase
private java.util.List<GroupIterator.Entry> emptySolutionSpecialCase(java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> aggregates)
-
makeCollectors
private java.util.List<AggregateCollector> makeCollectors(java.util.List<GroupIterator.AggregatePredicateCollectorSupplier<?,?>> aggregates)
-
create
private GroupIterator.AggregatePredicateCollectorSupplier<?,?> create(GroupElem ge, ValueFactory vf) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
precompileArg
private GroupIterator.QueryStepEvaluator precompileArg(AggregateOperator operator)
-
shouldValueComparisonBeStrict
private boolean shouldValueComparisonBeStrict()
-
-