org.eclipse.viatra.query.runtime.rete.traceability

## Class PlanningTrace

- java.lang.Object
- - org.eclipse.viatra.query.runtime.rete.traceability.RecipeTraceInfo
  - - org.eclipse.viatra.query.runtime.rete.traceability.PlanningTrace

- All Implemented Interfaces:
    PatternTraceInfo, TraceInfo
  Direct Known Subclasses:
    CompiledSubPlan

      public class PlanningTrace
      extends RecipeTraceInfo
      implements PatternTraceInfo

  A trace marker associating a Rete recipe with a query SubPlan.

  The recipe may be an auxiliary node; see `CompiledSubPlan` if it represents the entire SubPlan instead.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.Map<PVariable,java.lang.Integer>` | `posMapping`
    `protected SubPlan` | `subPlan`
    `protected java.util.List<PVariable>` | `variablesTuple`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PlanningTrace(SubPlan subPlan, java.util.List<PVariable> variablesTuple, ReteNodeRecipe recipe, java.util.Collection<? extends RecipeTraceInfo> parentRecipeTraces)`
    `PlanningTrace(SubPlan subPlan, java.util.List<PVariable> variablesTuple, ReteNodeRecipe recipe, RecipeTraceInfo... parentRecipeTraces)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `CompiledSubPlan` | `cloneFor(SubPlan newSubPlan)` Returns a new clone that reinterprets the same compiled form as the compiled form of a (potentially different) subPlan.
    `java.lang.String` | `getPatternName()`
    `java.util.Map<PVariable,java.lang.Integer>` | `getPosMapping()`
    `SubPlan` | `getSubPlan()`
    `java.util.List<PVariable>` | `getVariablesTuple()`

    - ### Methods inherited from class org.eclipse.viatra.query.runtime.rete.traceability.RecipeTraceInfo

      `assignNode, getNode, getParentRecipeTraces, getParentRecipeTracesForCloning, getRecipe, getShadowedRecipe, propagateFromIndexerToSupplierParent, propagateFromStandardNodeToSupplierParent, propagateToIndexerParent, propagateToProductionNodeParentAlso, shadowWithEquivalentRecipe`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.eclipse.viatra.query.runtime.rete.traceability.TraceInfo

      `assignNode, getNode, propagateFromIndexerToSupplierParent, propagateFromStandardNodeToSupplierParent, propagateToIndexerParent, propagateToProductionNodeParentAlso`

- - ### Field Detail

    - #### subPlan

          protected SubPlan subPlan

    - #### variablesTuple

          protected java.util.List<PVariable> variablesTuple

    - #### posMapping

          protected java.util.Map<PVariable,java.lang.Integer> posMapping

  - ### Constructor Detail

    - #### PlanningTrace

          public PlanningTrace(SubPlan subPlan,
                               java.util.List<PVariable> variablesTuple,
                               ReteNodeRecipe recipe,
                               java.util.Collection<? extends RecipeTraceInfo> parentRecipeTraces)

    - #### PlanningTrace

          public PlanningTrace(SubPlan subPlan,
                               java.util.List<PVariable> variablesTuple,
                               ReteNodeRecipe recipe,
                               RecipeTraceInfo... parentRecipeTraces)

  - ### Method Detail

    - #### getSubPlan

          public SubPlan getSubPlan()

    - #### getPatternName

          public java.lang.String getPatternName()

      Specified by:
        `getPatternName` in interface `PatternTraceInfo`

    - #### getVariablesTuple

          public java.util.List<PVariable> getVariablesTuple()

    - #### getPosMapping

          public java.util.Map<PVariable,java.lang.Integer> getPosMapping()

    - #### cloneFor

          public CompiledSubPlan cloneFor(SubPlan newSubPlan)

      Returns a new clone that reinterprets the same compiled form as the compiled form of a (potentially different) subPlan. Useful e.g. if child plan turns out to be a no-op, or when promoting a `PlanningTrace` to `CompiledSubPlan`.