Class AbstractColumnAggregatorNode<Domain,Accumulator,AggregateResult>
- java.lang.Object
-
- org.eclipse.viatra.query.runtime.rete.network.BaseNode
-
- org.eclipse.viatra.query.runtime.rete.network.StandardNode
-
- org.eclipse.viatra.query.runtime.rete.single.SingleInputNode
-
- org.eclipse.viatra.query.runtime.rete.aggregation.AbstractColumnAggregatorNode<Domain,Accumulator,AggregateResult>
-
- All Implemented Interfaces:
Clearable,IAggregatorNode,NetworkStructureChangeSensitiveNode,Node,Receiver,Supplier,Tunnel
- Direct Known Subclasses:
ColumnAggregatorNode
public abstract class AbstractColumnAggregatorNode<Domain,Accumulator,AggregateResult> extends SingleInputNode implements Clearable, IAggregatorNode
Groups incoming tuples by the given mask, and aggregates values at a specific index in each group.Direct children are not supported, use via outer join indexers instead.
There are both timeless and timely implementations.
- Since:
- 2.2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classAbstractColumnAggregatorNode.AggregatorOuterIdentityIndexerA special non-iterable index that checks a suspected aggregate value for a given signature.protected classAbstractColumnAggregatorNode.AggregatorOuterIndexerA special non-iterable index that retrieves the aggregated, packed result (signature+aggregate) for the original signature.protected static classAbstractColumnAggregatorNode.NetworkStructureChangeSensitiveLogic
-
Field Summary
Fields Modifier and Type Field Description protected AbstractColumnAggregatorNode.AggregatorOuterIdentityIndexer[]aggregatorOuterIdentityIndexersprotected AbstractColumnAggregatorNode.AggregatorOuterIndexeraggregatorOuterIndexerprotected TupleMaskcolumnMaskprotected TupleMaskgroupMaskprotected AggregateResultNEUTRALprotected IMultisetAggregationOperator<Domain,Accumulator,AggregateResult>operatorprotected IQueryRuntimeContextruntimeContextprotected intsourceWidth-
Fields inherited from class org.eclipse.viatra.query.runtime.rete.single.SingleInputNode
mailbox, parent
-
Fields inherited from class org.eclipse.viatra.query.runtime.rete.network.StandardNode
childMailboxes, children
-
Fields inherited from class org.eclipse.viatra.query.runtime.rete.network.BaseNode
nodeId, reteContainer, tag, traceInfos
-
-
Constructor Summary
Constructors Constructor Description AbstractColumnAggregatorNode(ReteContainer reteContainer, IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator, TupleMask groupMask, int aggregatedColumn)Creates a new column aggregator node.AbstractColumnAggregatorNode(ReteContainer reteContainer, IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator, TupleMask groupMask, TupleMask columnMask)Creates a new column aggregator node.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidappendChild(Receiver receiver)appends a receiver that will continously receive insert and revoke updates from this supplierabstract AggregateResultgetAggregateResult(Tuple key)abstract java.util.Map<AggregateResult,Timeline<Timestamp>>getAggregateResultTimeline(Tuple key)abstract TuplegetAggregateTuple(Tuple key)abstract java.util.Map<Tuple,Timeline<Timestamp>>getAggregateTupleTimeline(Tuple key)IndexergetAggregatorOuterIdentityIndexer(int resultPositionInSignature)IndexergetAggregatorOuterIndexer()CommunicationTrackergetCommunicationTracker()voidpropagate(Direction direction, Tuple group, AggregateResult value, Timestamp timestamp)voidpropagateAggregateResultUpdate(Tuple group, AggregateResult oldValue, AggregateResult newValue, Timestamp timestamp)voidpullInto(java.util.Collection<Tuple> collector, boolean flush)Pulls the contents of this object in this particular moment into a target collection.voidpullIntoWithTimeline(java.util.Map<Tuple,Timeline<Timestamp>> collector, boolean flush)protected TupletupleFromAggregateResult(Tuple groupTuple, AggregateResult aggregateResult)-
Methods inherited from class org.eclipse.viatra.query.runtime.rete.single.SingleInputNode
appendParent, assignTraceInfo, getMailbox, getParents, instantiateMailbox, propagatePullInto, propagatePullIntoWithTimestamp, removeParent
-
Methods inherited from class org.eclipse.viatra.query.runtime.rete.network.StandardNode
constructIndex, getChildMailboxes, getPulledContents, getReceivers, issueError, networkStructureChanged, propagateUpdate, removeChild
-
Methods inherited from class org.eclipse.viatra.query.runtime.rete.network.BaseNode
acceptPropagatedTraceInfo, getContainer, getNodeId, getTag, getTraceInfoPatternsEnumerated, getTraceInfos, setTag, toString, toStringCore
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.viatra.query.runtime.rete.network.Node
acceptPropagatedTraceInfo, getContainer, getNodeId, getTag, getTraceInfos, setTag
-
Methods inherited from interface org.eclipse.viatra.query.runtime.rete.network.Receiver
batchUpdate, update
-
Methods inherited from interface org.eclipse.viatra.query.runtime.rete.network.Supplier
constructIndex, getPulledContents, getPulledContents, getReceivers, removeChild
-
-
-
-
Field Detail
-
operator
protected final IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator
- Since:
- 1.6
-
groupMask
protected final TupleMask groupMask
- Since:
- 1.6
-
columnMask
protected final TupleMask columnMask
- Since:
- 1.6
-
sourceWidth
protected final int sourceWidth
- Since:
- 1.6
-
runtimeContext
protected final IQueryRuntimeContext runtimeContext
- Since:
- 1.6
-
NEUTRAL
protected final AggregateResult NEUTRAL
-
aggregatorOuterIndexer
protected AbstractColumnAggregatorNode.AggregatorOuterIndexer aggregatorOuterIndexer
-
aggregatorOuterIdentityIndexers
protected AbstractColumnAggregatorNode.AggregatorOuterIdentityIndexer[] aggregatorOuterIdentityIndexers
-
-
Constructor Detail
-
AbstractColumnAggregatorNode
public AbstractColumnAggregatorNode(ReteContainer reteContainer, IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator, TupleMask groupMask, TupleMask columnMask)
Creates a new column aggregator node.- Parameters:
reteContainer- the RETE container of the nodeoperator- the aggregation operatordeleteRederiveEvaluation- true if the node should run in DRED mode, false otherwisegroupMask- the mask that masks a tuple to obtain the key that we are grouping-bycolumnMask- the mask that masks a tuple to obtain the tuple element(s) that we are aggregating overposetComparator- the poset comparator for the column, if known, otherwise it can be null- Since:
- 1.6
-
AbstractColumnAggregatorNode
public AbstractColumnAggregatorNode(ReteContainer reteContainer, IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator, TupleMask groupMask, int aggregatedColumn)
Creates a new column aggregator node.- Parameters:
reteContainer- the RETE container of the nodeoperator- the aggregation operatorgroupMask- the mask that masks a tuple to obtain the key that we are grouping-byaggregatedColumn- the index of the column that the aggregator node is aggregating over
-
-
Method Detail
-
getCommunicationTracker
public CommunicationTracker getCommunicationTracker()
- Specified by:
getCommunicationTrackerin interfaceNode- Overrides:
getCommunicationTrackerin classSingleInputNode
-
pullInto
public void pullInto(java.util.Collection<Tuple> collector, boolean flush)
Description copied from interface:SupplierPulls the contents of this object in this particular moment into a target collection.
-
pullIntoWithTimeline
public void pullIntoWithTimeline(java.util.Map<Tuple,Timeline<Timestamp>> collector, boolean flush)
- Specified by:
pullIntoWithTimelinein interfaceSupplier
-
appendChild
public void appendChild(Receiver receiver)
Description copied from interface:Supplierappends a receiver that will continously receive insert and revoke updates from this supplier- Specified by:
appendChildin interfaceSupplier- Overrides:
appendChildin classStandardNode
-
getAggregatorOuterIndexer
public Indexer getAggregatorOuterIndexer()
- Specified by:
getAggregatorOuterIndexerin interfaceIAggregatorNode
-
getAggregatorOuterIdentityIndexer
public Indexer getAggregatorOuterIdentityIndexer(int resultPositionInSignature)
- Specified by:
getAggregatorOuterIdentityIndexerin interfaceIAggregatorNode
-
propagateAggregateResultUpdate
public void propagateAggregateResultUpdate(Tuple group, AggregateResult oldValue, AggregateResult newValue, Timestamp timestamp)
- Since:
- 2.4
-
propagate
public void propagate(Direction direction, Tuple group, AggregateResult value, Timestamp timestamp)
- Since:
- 2.4
-
getAggregateTupleTimeline
public abstract java.util.Map<Tuple,Timeline<Timestamp>> getAggregateTupleTimeline(Tuple key)
- Since:
- 2.4
-
getAggregateResult
public abstract AggregateResult getAggregateResult(Tuple key)
-
getAggregateResultTimeline
public abstract java.util.Map<AggregateResult,Timeline<Timestamp>> getAggregateResultTimeline(Tuple key)
- Since:
- 2.4
-
tupleFromAggregateResult
protected Tuple tupleFromAggregateResult(Tuple groupTuple, AggregateResult aggregateResult)
-
-