Class GroupSideEffectStep<S,K,V>

All Implemented Interfaces:
Serializable, AutoCloseable, Cloneable, Iterator<Traverser.Admin<S>>, Step<S,S>, Barrier<TraverserSet<S>>, ByModulating, Generating<Map<K,?>,Map<K,V>>, Grouping<S,K,V>, LocalBarrier<S>, MemoryComputing<TraverserSet<S>>, PopContaining, SideEffectCapable<Map<K,?>,Map<K,V>>, TraversalParent

public final class GroupSideEffectStep<S,K,V> extends SideEffectBarrierStep<S> implements SideEffectCapable<Map<K,?>,Map<K,V>>, TraversalParent, ByModulating, Grouping<S,K,V>
Author:
Marko A. Rodriguez (http://markorodriguez.com)
See Also:
  • Constructor Details

  • Method Details

    • getKeyTraversal

      public Traversal.Admin<S,K> getKeyTraversal()
      Description copied from interface: Grouping
      Determines if the provided traversal is equal to the key traversal that the Grouping has.
      Specified by:
      getKeyTraversal in interface Grouping<S,K,V>
    • getValueTraversal

      public Traversal.Admin<S,V> getValueTraversal()
      Description copied from interface: Grouping
      Determines if the provided traversal is equal to the value traversal that the Grouping has.
      Specified by:
      getValueTraversal in interface Grouping<S,K,V>
    • resetBarrierFromValueTraversal

      public void resetBarrierFromValueTraversal()
      Description copied from interface: Grouping
      The first non-local Barrier step ascertained by calls to Grouping.determineBarrierStep(Traversal.Admin) is cached for a Grouping. After strategy application it is important that the cache be reset to ensure that any modifications to the child traversal are accounted for.
      Specified by:
      resetBarrierFromValueTraversal in interface Grouping<S,K,V>
    • modulateBy

      public void modulateBy(Traversal.Admin<?,?> kvTraversal)
      Specified by:
      modulateBy in interface ByModulating
    • replaceLocalChild

      public void replaceLocalChild(Traversal.Admin<?,?> oldTraversal, Traversal.Admin<?,?> newTraversal)
      Specified by:
      replaceLocalChild in interface TraversalParent
    • sideEffect

      protected void sideEffect(Traverser.Admin<S> traverser)
      Specified by:
      sideEffect in class SideEffectBarrierStep<S>
    • getSideEffectKey

      public String getSideEffectKey()
      Description copied from interface: SideEffectCapable
      The side-effect key of the step.
      Specified by:
      getSideEffectKey in interface SideEffectCapable<S,K>
      Returns:
      the side-effect key
    • toString

      public String toString()
      Overrides:
      toString in class AbstractStep<S,S>
    • getLocalChildren

      public List<Traversal.Admin<?,?>> getLocalChildren()
      Description copied from interface: TraversalParent
      Gets a list of all "local" child traversals for this step. A "local" traversal is one which is evaluated independently for each incoming traverser to the parent step. This is typically used in cases where the child is used to process or augment each traverser individually. See LocalStep or ByModulating as examples.
      Specified by:
      getLocalChildren in interface TraversalParent
    • getRequirements

      public Set<TraverserRequirement> getRequirements()
      Description copied from interface: Step
      Provide the necessary TraverserRequirement that must be met by the traverser in order for the step to function properly. The provided default implements returns an empty set.
      Specified by:
      getRequirements in interface Step<S,K>
      Returns:
      the set of requirements
    • clone

      public GroupSideEffectStep<S,K,V> clone()
      Description copied from interface: Step
      Cloning is used to duplicate steps for the purpose of traversal optimization and OLTP replication. When cloning a step, it is important that the steps, the cloned step is equivalent to the state of the step when Step.reset() is called. Moreover, the previous and next steps should be set to EmptyStep.
      Specified by:
      clone in interface Step<S,K>
      Overrides:
      clone in class SideEffectBarrierStep<S>
      Returns:
      The cloned step
    • setTraversal

      public void setTraversal(Traversal.Admin<?,?> parentTraversal)
      Description copied from interface: Step
      Set the Traversal that this step is contained within.
      Specified by:
      setTraversal in interface Step<S,K>
      Overrides:
      setTraversal in class AbstractStep<S,S>
      Parameters:
      parentTraversal - the new traversal for this step
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class AbstractStep<S,S>
    • reset

      public void reset()
      Description copied from interface: Step
      Reset the state of the step such that it has no incoming starts. Internal states are to be reset, but any sideEffect data structures are not to be recreated.
      Specified by:
      reset in interface Step<S,K>
      Overrides:
      reset in class SideEffectBarrierStep<S>
    • generateFinalResult

      public Map<K,V> generateFinalResult(Map<K,?> object)
      Description copied from interface: Generating
      Post-process the side-effect and return the post-processed side-effect. The default implementation is simply the identity function and returns the argument.
      Specified by:
      generateFinalResult in interface Generating<S,K>
      Parameters:
      object - the pre-processed side-effect.
      Returns:
      the post-processed side-effect.