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_SET
private static java.util.function.Predicate<Value>
ALWAYS_TRUE_VALUE
private static java.util.function.Supplier<java.util.function.Predicate<Value>>
ALWAYS_TRUE_VALUE_SUPPLIER
private QueryEvaluationStep
arguments
private CollectionFactory
cf
private QueryEvaluationContext
context
private Group
group
private BindingSet
parentBindings
private EvaluationStrategy
strategy
private ValueFactory
vf
-
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)
void
handleClose()
Called byAbstractCloseableIteration.close()
when it is called for the first time.boolean
hasNext()
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.BindingSet
next()
Returns the next element in the iteration.private GroupIterator.QueryStepEvaluator
precompileArg(AggregateOperator operator)
private boolean
shouldValueComparisonBeStrict()
-
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 QueryEvaluationException
Description copied from class:AbstractCloseableIteration
Called 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:
handleClose
in classAbstractCloseableIteration<BindingSet,QueryEvaluationException>
- Throws:
QueryEvaluationException
-
hasNext
public boolean hasNext() throws QueryEvaluationException
Description copied from interface:Iteration
Returns 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:
hasNext
in interfaceIteration<BindingSet,QueryEvaluationException>
- Overrides:
hasNext
in classCloseableIteratorIteration<BindingSet,QueryEvaluationException>
- Returns:
- true if the iteration has more elements.
- Throws:
QueryEvaluationException
-
next
public BindingSet next() throws QueryEvaluationException
Description copied from interface:Iteration
Returns the next element in the iteration.- Specified by:
next
in interfaceIteration<BindingSet,QueryEvaluationException>
- Overrides:
next
in 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()
-
-