Class TriLeftHandSide<A,B,C>

java.lang.Object
org.optaplanner.constraint.streams.drools.common.TriLeftHandSide<A,B,C>
Type Parameters:
A - generic type of the first resulting variable
B - generic type of the second resulting variable
C - generic type of the third resulting variable

public final class TriLeftHandSide<A,B,C> extends Object
Represents the left hand side of a Drools rule, the result of which are three variables. For more, see UniLeftHandSide and BiLeftHandSide.
  • Field Details

  • Method Details

    • andFilter

      public TriLeftHandSide<A,B,C> andFilter(TriPredicate<A,B,C> predicate)
    • andExists

      public <D> TriLeftHandSide<A,B,C> andExists(Class<D> dClass, QuadJoiner<A,B,C,D>[] joiners, Predicate<D> nullityFilter)
    • andNotExists

      public <D> TriLeftHandSide<A,B,C> andNotExists(Class<D> dClass, QuadJoiner<A,B,C,D>[] joiners, Predicate<D> nullityFilter)
    • andJoin

      public <D> QuadLeftHandSide<A,B,C,D> andJoin(UniLeftHandSide<D> right, QuadJoiner<A,B,C,D> joiner)
    • andGroupBy

      public <NewA> UniLeftHandSide<NewA> andGroupBy(TriConstraintCollector<A,B,C,?,NewA> collector)
    • andGroupBy

      public <NewA, NewB> BiLeftHandSide<NewA,NewB> andGroupBy(TriConstraintCollector<A,B,C,?,NewA> collectorA, TriConstraintCollector<A,B,C,?,NewB> collectorB)
    • andGroupBy

      public <NewA, NewB, NewC> TriLeftHandSide<NewA,NewB,NewC> andGroupBy(TriConstraintCollector<A,B,C,?,NewA> collectorA, TriConstraintCollector<A,B,C,?,NewB> collectorB, TriConstraintCollector<A,B,C,?,NewC> collectorC)
    • andGroupBy

      public <NewA, NewB, NewC, NewD> QuadLeftHandSide<NewA,NewB,NewC,NewD> andGroupBy(TriConstraintCollector<A,B,C,?,NewA> collectorA, TriConstraintCollector<A,B,C,?,NewB> collectorB, TriConstraintCollector<A,B,C,?,NewC> collectorC, TriConstraintCollector<A,B,C,?,NewD> collectorD)
    • andGroupBy

      public <NewA> UniLeftHandSide<NewA> andGroupBy(TriFunction<A,B,C,NewA> keyMapping)
    • andGroupBy

      public <NewA, NewB> BiLeftHandSide<NewA,NewB> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriConstraintCollector<A,B,C,?,NewB> collectorB)
    • andGroupBy

      public <NewA, NewB, NewC> TriLeftHandSide<NewA,NewB,NewC> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriConstraintCollector<A,B,C,?,NewB> collectorB, TriConstraintCollector<A,B,C,?,NewC> collectorC)
    • andGroupBy

      public <NewA, NewB, NewC, NewD> QuadLeftHandSide<NewA,NewB,NewC,NewD> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriConstraintCollector<A,B,C,?,NewB> collectorB, TriConstraintCollector<A,B,C,?,NewC> collectorC, TriConstraintCollector<A,B,C,?,NewD> collectorD)
    • andGroupBy

      public <NewA, NewB> BiLeftHandSide<NewA,NewB> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriFunction<A,B,C,NewB> keyMappingB)
    • andGroupBy

      public <NewA, NewB, NewC> TriLeftHandSide<NewA,NewB,NewC> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriFunction<A,B,C,NewB> keyMappingB, TriConstraintCollector<A,B,C,?,NewC> collectorC)
    • andGroupBy

      public <NewA, NewB, NewC, NewD> QuadLeftHandSide<NewA,NewB,NewC,NewD> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriFunction<A,B,C,NewB> keyMappingB, TriConstraintCollector<A,B,C,?,NewC> collectorC, TriConstraintCollector<A,B,C,?,NewD> collectorD)
    • andGroupBy

      public <NewA, NewB, NewC> TriLeftHandSide<NewA,NewB,NewC> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriFunction<A,B,C,NewB> keyMappingB, TriFunction<A,B,C,NewC> keyMappingC)
    • andGroupBy

      public <NewA, NewB, NewC, NewD> QuadLeftHandSide<NewA,NewB,NewC,NewD> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriFunction<A,B,C,NewB> keyMappingB, TriFunction<A,B,C,NewC> keyMappingC, TriConstraintCollector<A,B,C,?,NewD> collectorD)
    • andGroupBy

      public <NewA, NewB, NewC, NewD> QuadLeftHandSide<NewA,NewB,NewC,NewD> andGroupBy(TriFunction<A,B,C,NewA> keyMappingA, TriFunction<A,B,C,NewB> keyMappingB, TriFunction<A,B,C,NewC> keyMappingC, TriFunction<A,B,C,NewD> keyMappingD)
    • andMap

      public <NewA> UniLeftHandSide<NewA> andMap(TriFunction<A,B,C,NewA> mapping)
    • andFlattenLast

      public <NewC> TriLeftHandSide<A,B,NewC> andFlattenLast(Function<C,Iterable<NewC>> mapping)
    • andTerminate

      public <Solution_> RuleBuilder<Solution_> andTerminate()
    • andTerminate

      public <Solution_> RuleBuilder<Solution_> andTerminate(ToIntTriFunction<A,B,C> matchWeigher)
    • andTerminate

      public <Solution_> RuleBuilder<Solution_> andTerminate(ToLongTriFunction<A,B,C> matchWeigher)
    • andTerminate

      public <Solution_> RuleBuilder<Solution_> andTerminate(TriFunction<A,B,C,BigDecimal> matchWeigher)
    • getConstraintType

      protected static org.drools.model.Index.ConstraintType getConstraintType(JoinerType type)
    • joinViewItemsWithLogicalAnd

      protected static org.drools.model.view.ViewItem<?> joinViewItemsWithLogicalAnd(PatternVariable<?,?,?>... patternVariables)
    • mergeViewItems

      protected static List<org.drools.model.view.ViewItem<?>> mergeViewItems(PatternVariable<?,?,?>... patternVariables)
    • decompose

      protected static <A, B> org.optaplanner.constraint.streams.drools.common.IndirectPatternVariable<B,org.optaplanner.constraint.streams.drools.common.BiTuple<A,B>> decompose(org.drools.model.Variable<org.optaplanner.constraint.streams.drools.common.BiTuple<A,B>> primaryVariable, org.drools.model.view.ViewItem<?> prerequisitePattern, org.drools.model.Variable<A> boundVarA, org.drools.model.Variable<B> boundVarB)
      Create an IndirectPatternVariable on BiTuple with pre-made bindings for its components variables.
      Type Parameters:
      A - generic type of the first bound variable
      B - generic type of the second bound variable
      Parameters:
      primaryVariable - never null
      prerequisitePattern - never null, pattern required to construct the variable
      boundVarA - never null, BiTuple.a
      boundVarB - never null, BiTuple.b
      Returns:
      never null
    • decomposeWithAccumulate

      protected static <A, B, C> org.optaplanner.constraint.streams.drools.common.DirectPatternVariable<C> decomposeWithAccumulate(org.drools.model.Variable<org.optaplanner.constraint.streams.drools.common.BiTuple<A,B>> primaryVariable, org.drools.model.view.ViewItem<?> prerequisitePattern, org.drools.model.Variable<A> boundVarA, org.drools.model.Variable<B> boundVarB, org.drools.model.Variable<C> accumulateOutput)
      Create a DirectPatternVariable on BiTuple with pre-made bindings for its components variables and one accumulate output variable.
      Type Parameters:
      A - generic type of the first bound variable
      B - generic type of the second bound variable
      C - generic type of the accumulate output variable
      Parameters:
      primaryVariable - never null
      prerequisitePattern - never null, pattern required to construct the variable
      boundVarA - never null, TriTuple.a
      boundVarB - never null, TriTuple.b
      accumulateOutput - never null, output of the accumulate function
      Returns:
      never null
    • decompose

      protected static <A, B, C> org.optaplanner.constraint.streams.drools.common.IndirectPatternVariable<C,org.optaplanner.constraint.streams.drools.common.TriTuple<A,B,C>> decompose(org.drools.model.Variable<org.optaplanner.constraint.streams.drools.common.TriTuple<A,B,C>> primaryVariable, org.drools.model.view.ViewItem<?> prerequisitePattern, org.drools.model.Variable<A> boundVarA, org.drools.model.Variable<B> boundVarB, org.drools.model.Variable<C> boundVarC)
      Create an IndirectPatternVariable on TriTuple with pre-made bindings for its components variables.
      Type Parameters:
      A - generic type of the first bound variable
      B - generic type of the second bound variable
      C - generic type of the third bound variable
      Parameters:
      primaryVariable - never null
      prerequisitePattern - never null, pattern required to construct the variable
      boundVarA - never null, TriTuple.a
      boundVarB - never null, TriTuple.b
      boundVarC - never null, TriTuple.c
      Returns:
      never null
    • decompose

      protected static <A, B, C, D> org.optaplanner.constraint.streams.drools.common.IndirectPatternVariable<D,org.optaplanner.constraint.streams.drools.common.QuadTuple<A,B,C,D>> decompose(org.drools.model.Variable<org.optaplanner.constraint.streams.drools.common.QuadTuple<A,B,C,D>> primaryVariable, org.drools.model.view.ViewItem<?> prerequisitePattern, org.drools.model.Variable<A> boundVarA, org.drools.model.Variable<B> boundVarB, org.drools.model.Variable<C> boundVarC, org.drools.model.Variable<D> boundVarD)
      Create an IndirectPatternVariable on QuadTuple with pre-made bindings for its components variables.
      Type Parameters:
      A - generic type of the first bound variable
      B - generic type of the second bound variable
      C - generic type of the third bound variable
      D - generic type of the fourth bound variable
      Parameters:
      primaryVariable - never null
      prerequisitePattern - never null, pattern required to construct the variable
      boundVarA - never null, QuadTuple.a
      boundVarB - never null, QuadTuple.b
      boundVarC - never null, QuadTuple.c
      boundVarD - never null, QuadTuple.d
      Returns:
      never null
    • decomposeWithAccumulate

      protected static <A, B, C, D> org.optaplanner.constraint.streams.drools.common.DirectPatternVariable<D> decomposeWithAccumulate(org.drools.model.Variable<org.optaplanner.constraint.streams.drools.common.TriTuple<A,B,C>> primaryVariable, org.drools.model.view.ViewItem<?> prerequisitePattern, org.drools.model.Variable<A> boundVarA, org.drools.model.Variable<B> boundVarB, org.drools.model.Variable<C> boundVarC, org.drools.model.Variable<D> accumulateOutput)
      Create a DirectPatternVariable on TriTuple with pre-made bindings for its components variables and one accumulate output variable.
      Type Parameters:
      A - generic type of the first bound variable
      B - generic type of the second bound variable
      C - generic type of the third bound variable
      D - generic type of the accumulate output variable
      Parameters:
      primaryVariable - never null
      prerequisitePattern - never null, pattern required to construct the variable
      boundVarA - never null, TriTuple.a
      boundVarB - never null, TriTuple.b
      boundVarC - never null, TriTuple.c
      accumulateOutput - never null, output of the accumulate function
      Returns:
      never null
    • buildAccumulate

      protected static org.drools.model.view.ViewItem<?> buildAccumulate(org.drools.model.view.ViewItem<?> innerAccumulatePattern, org.drools.model.functions.accumulate.AccumulateFunction... accFunctions)