Package org.eclipse.viatra.query.runtime.rete.aggregation

## Class AbstractColumnAggregatorNode.AggregatorOuterIdentityIndexer

- java.lang.Object
- - org.eclipse.viatra.query.runtime.rete.network.BaseNode
  - - org.eclipse.viatra.query.runtime.rete.index.StandardIndexer
    - - org.eclipse.viatra.query.runtime.rete.aggregation.AbstractColumnAggregatorNode.AggregatorOuterIdentityIndexer

- All Implemented Interfaces:
    `Indexer`, `NetworkStructureChangeSensitiveNode`, `Node`
  Enclosing class:
    AbstractColumnAggregatorNode<Domain,​Accumulator,​AggregateResult>

      protected class AbstractColumnAggregatorNode.AggregatorOuterIdentityIndexer
      extends StandardIndexer

  A special non-iterable index that checks a suspected aggregate value for a given signature. The signature for this index is the original 'group by' masked tuple, with the suspected result inserted at position resultPositionInSignature.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected AbstractColumnAggregatorNode.NetworkStructureChangeSensitiveLogic` | `logic` |
    `protected TupleMask` | `pruneResult` |
    `protected TupleMask` | `reorderMask` |
    `protected int` | `resultPositionInSignature` |

    - ### Fields inherited from class org.eclipse.viatra.query.runtime.rete.index.StandardIndexer

      `mask, parent`

    - ### Fields inherited from class org.eclipse.viatra.query.runtime.rete.network.BaseNode

      `nodeId, reteContainer, tag, traceInfos`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AggregatorOuterIdentityIndexer​(int resultPositionInSignature)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected AbstractColumnAggregatorNode.NetworkStructureChangeSensitiveLogic` | `createLogic()` |
    `java.util.Collection<Tuple>` | `get​(Tuple signatureWithResult)` |
    `Node` | `getActiveNode()` | This indexer will be updated whenever a Rete update is sent to the active node (or an equivalent time slot allotted to it).
    `java.util.Map<Tuple,​Timeline<Timestamp>>` | `getTimeline​(Tuple signature)` |
    `void` | `networkStructureChanged()` | At the time of the invocation, the dependency graph has already been updated.
    `void` | `propagate​(Direction direction, Tuple tuple, Tuple group, Timestamp timestamp)` |

    - ### Methods inherited from class org.eclipse.viatra.query.runtime.rete.index.StandardIndexer

      `assignTraceInfo, attachListener, detachListener, getContainer, getListeners, getMask, getParent, propagate, toStringCore`

    - ### Methods inherited from class org.eclipse.viatra.query.runtime.rete.network.BaseNode

      `acceptPropagatedTraceInfo, getNodeId, getTag, getTraceInfoPatternsEnumerated, getTraceInfos, setTag, toString`

    - ### 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, getCommunicationTracker, getNodeId, getTag, getTraceInfos, setTag`

- - ### Field Detail

    - #### resultPositionInSignature

          protected final int resultPositionInSignature

    - #### pruneResult

          protected final TupleMask pruneResult

    - #### reorderMask

          protected final TupleMask reorderMask

    - #### logic

          protected AbstractColumnAggregatorNode.NetworkStructureChangeSensitiveLogic logic

      Since:
        2.4

  - ### Constructor Detail

    - #### AggregatorOuterIdentityIndexer

          public AggregatorOuterIdentityIndexer​(int resultPositionInSignature)

  - ### Method Detail

    - #### networkStructureChanged

          public void networkStructureChanged()

      Description copied from interface: `NetworkStructureChangeSensitiveNode`
      At the time of the invocation, the dependency graph has already been updated.
      Specified by:
        `networkStructureChanged` in interface `NetworkStructureChangeSensitiveNode`
      Overrides:
        `networkStructureChanged` in class `StandardIndexer`

    - #### get

          public java.util.Collection<Tuple> get​(Tuple signatureWithResult)

      Returns:
        all stored tuples that conform to the specified signature, null if there are none such. CONTRACT: do not modify!

    - #### getTimeline

          public java.util.Map<Tuple,​Timeline<Timestamp>> getTimeline​(Tuple signature)

      Since:
        2.4

    - #### propagate

          public void propagate​(Direction direction,
                                Tuple tuple,
                                Tuple group,
                                Timestamp timestamp)

      Since:
        2.4

    - #### getActiveNode

          public Node getActiveNode()

      Description copied from interface: `Indexer`
      This indexer will be updated whenever a Rete update is sent to the active node (or an equivalent time slot allotted to it). The active node is typically the indexer itself, but it can be a different node such as its parent.
      Returns:
        the active node that operates this indexer

    - #### createLogic

          protected AbstractColumnAggregatorNode.NetworkStructureChangeSensitiveLogic createLogic()

      Since:
        2.4