public abstract class DroolsAbstractBiConstraintStream<Solution_,A,B> extends DroolsAbstractConstraintStream<Solution_> implements InnerBiConstraintStream<A,B>
| Modifier and Type | Field and Description |
|---|---|
protected List<DroolsAbstractBiConstraintStream<Solution_,A,B>> |
childStreamList |
protected DroolsAbstractBiConstraintStream<Solution_,A,B> |
parent |
constraintFactory| Constructor and Description |
|---|
DroolsAbstractBiConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory,
DroolsAbstractBiConstraintStream<Solution_,A,B> parent) |
| Modifier and Type | Method and Description |
|---|---|
void |
createRuleItemBuilders(List<<any>> ruleItemBuilderList,
<any> scoreHolderGlobal) |
BiConstraintStream<A,B> |
filter(BiPredicate<A,B> predicate)
Exhaustively test each tuple of facts against the
BiPredicate
and match if BiPredicate.test(Object, Object) returns true. |
List<DroolsFromUniConstraintStream<Solution_,Object>> |
getFromStreamList() |
DroolsAbstractUniConstraintStream<Solution_,A> |
getLeftParentStream() |
abstract <any> |
getLeftPattern() |
abstract <any> |
getLeftVariableDeclaration() |
DroolsAbstractUniConstraintStream<Solution_,B> |
getRightParentStream() |
abstract <any> |
getRightPattern() |
abstract <any> |
getRightVariableDeclaration() |
<GroupKey_> |
groupBy(BiFunction<A,B,GroupKey_> groupKeyMapping) |
<GroupKey_,ResultContainer_,Result_> |
groupBy(BiFunction<A,B,GroupKey_> groupKeyMapping,
BiConstraintCollector<A,B,ResultContainer_,Result_> collector) |
<GroupKeyA_,GroupKeyB_> |
groupBy(BiFunction<A,B,GroupKeyA_> groupKeyAMapping,
BiFunction<A,B,GroupKeyB_> groupKeyBMapping) |
<GroupKeyA_,GroupKeyB_,ResultContainer_,Result_> |
groupBy(BiFunction<A,B,GroupKeyA_> groupKeyAMapping,
BiFunction<A,B,GroupKeyB_> groupKeyBMapping,
BiConstraintCollector<A,B,ResultContainer_,Result_> collector) |
Constraint |
impactScore(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
boolean positive) |
Constraint |
impactScore(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToIntBiFunction<A,B> matchWeigher,
boolean positive) |
Constraint |
impactScoreBigDecimal(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
BiFunction<A,B,BigDecimal> matchWeigher,
boolean positive) |
Constraint |
impactScoreConfigurable(String constraintPackage,
String constraintName,
boolean positive) |
Constraint |
impactScoreConfigurable(String constraintPackage,
String constraintName,
ToIntBiFunction<A,B> matchWeigher,
boolean positive) |
Constraint |
impactScoreConfigurableBigDecimal(String constraintPackage,
String constraintName,
BiFunction<A,B,BigDecimal> matchWeigher,
boolean positive) |
Constraint |
impactScoreConfigurableLong(String constraintPackage,
String constraintName,
ToLongBiFunction<A,B> matchWeigher,
boolean positive) |
Constraint |
impactScoreLong(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToLongBiFunction<A,B> matchWeigher,
boolean positive) |
<C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass)
Create a new
TriConstraintStream for every combination of [A, B] and C. |
<C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass,
TriJoiner<A,B,C>... joiners)
As defined by
BiConstraintStream.join(Class, TriJoiner). |
<C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass,
TriJoiner<A,B,C> joiner)
Create a new
TriConstraintStream for every combination of [A, B] and C for which the BiJoiner
is true (for the properties it extracts from both facts). |
<C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass,
TriJoiner<A,B,C> joiner1,
TriJoiner<A,B,C> joiner2)
As defined by
BiConstraintStream.join(Class, TriJoiner). |
<C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass,
TriJoiner<A,B,C> joiner1,
TriJoiner<A,B,C> joiner2,
TriJoiner<A,B,C> joiner3)
As defined by
BiConstraintStream.join(Class, TriJoiner). |
<C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass,
TriJoiner<A,B,C> joiner1,
TriJoiner<A,B,C> joiner2,
TriJoiner<A,B,C> joiner3,
TriJoiner<A,B,C> joiner4)
As defined by
BiConstraintStream.join(Class, TriJoiner). |
<C> TriConstraintStream<A,B,C> |
join(UniConstraintStream<C> otherStream)
Create a new
TriConstraintStream for every combination of [A, B] and C. |
<C> TriConstraintStream<A,B,C> |
join(UniConstraintStream<C> otherStream,
TriJoiner<A,B,C> joiner)
Create a new
TriConstraintStream for every combination of [A, B] and C for which the BiJoiner
is true (for the properties it extracts from both facts). |
buildConstraint, buildConstraintConfigurable, getConstraintFactorybuildConstraintWeightExtractor, buildConstraintWeightExtractor, penalize, penalizeConfigurable, reward, rewardConfigurable, validateConstraintIdclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitpenalize, penalizeBigDecimal, penalizeConfigurable, penalizeConfigurableBigDecimal, penalizeConfigurableLong, penalizeLong, reward, rewardBigDecimal, rewardConfigurable, rewardConfigurableBigDecimal, rewardConfigurableLong, rewardLongpenalize, penalizeBigDecimal, penalizeConfigurable, penalizeConfigurableBigDecimal, penalizeConfigurableLong, penalizeLong, reward, rewardBigDecimal, rewardConfigurable, rewardConfigurableBigDecimal, rewardConfigurableLong, rewardLonggetConstraintFactory, penalize, penalize, penalizeConfigurable, penalizeConfigurable, reward, reward, rewardConfigurable, rewardConfigurableprotected final DroolsAbstractBiConstraintStream<Solution_,A,B> parent
protected final List<DroolsAbstractBiConstraintStream<Solution_,A,B>> childStreamList
public DroolsAbstractBiConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractBiConstraintStream<Solution_,A,B> parent)
public DroolsAbstractUniConstraintStream<Solution_,A> getLeftParentStream()
public DroolsAbstractUniConstraintStream<Solution_,B> getRightParentStream()
public BiConstraintStream<A,B> filter(BiPredicate<A,B> predicate)
BiConstraintStreamBiPredicate
and match if BiPredicate.test(Object, Object) returns true.
Important: This is slower and less scalable than UniConstraintStream#join(UniConstraintStream, BiJoiner[])
with a proper BiJoiner predicate (such as Joiners.equal(Function, Function),
because the latter applies hashing and/or indexing, so it doesn't create every combination just to filter it out.
filter in interface BiConstraintStream<A,B>predicate - never nullpublic <C> TriConstraintStream<A,B,C> join(UniConstraintStream<C> otherStream)
BiConstraintStreamTriConstraintStream for every combination of [A, B] and C.
Important: TriConstraintStream.filter(TriPredicate) Filtering} this is slower and less scalable
than a BiConstraintStream.join(UniConstraintStream, TriJoiner),
because it doesn't apply hashing and/or indexing on the properties,
so it creates and checks every combination of [A, B] and C.
join in interface BiConstraintStream<A,B>C - the type of the third matched factotherStream - never nullpublic <C> TriConstraintStream<A,B,C> join(UniConstraintStream<C> otherStream, TriJoiner<A,B,C> joiner)
BiConstraintStreamTriConstraintStream for every combination of [A, B] and C for which the BiJoiner
is true (for the properties it extracts from both facts).
Important: This is faster and more scalable than a join
followed by a filter,
because it applies hashing and/or indexing on the properties,
so it doesn't create nor checks every combination of [A, B] and C.
join in interface BiConstraintStream<A,B>C - the type of the third matched factotherStream - never nulljoiner - never nullBiJoiner is truepublic <C> TriConstraintStream<A,B,C> join(Class<C> otherClass)
BiConstraintStreamTriConstraintStream for every combination of [A, B] and C.
Important: TriConstraintStream.filter(TriPredicate) Filtering} this is slower and less scalable
than a BiConstraintStream.join(Class, TriJoiner),
because it doesn't apply hashing and/or indexing on the properties,
so it creates and checks every combination of [A, B] and C.
This method is syntactic sugar for BiConstraintStream.join(UniConstraintStream).
join in interface BiConstraintStream<A,B>C - the type of the third matched factotherClass - never nullpublic <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C> joiner)
BiConstraintStreamTriConstraintStream for every combination of [A, B] and C for which the BiJoiner
is true (for the properties it extracts from both facts).
Important: This is faster and more scalable than a join
followed by a filter,
because it applies hashing and/or indexing on the properties,
so it doesn't create nor checks every combination of [A, B] and C.
This method is syntactic sugar for BiConstraintStream.join(UniConstraintStream, TriJoiner).
This method has overloaded methods with multiple TriJoiner parameters.
join in interface BiConstraintStream<A,B>C - the type of the third matched factotherClass - never nulljoiner - never nullBiJoiner is truepublic <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C> joiner1, TriJoiner<A,B,C> joiner2)
BiConstraintStreamBiConstraintStream.join(Class, TriJoiner).join in interface BiConstraintStream<A,B>C - the type of the third matched factotherClass - never nulljoiner1 - never nulljoiner2 - never nulljoiners are truepublic <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C> joiner1, TriJoiner<A,B,C> joiner2, TriJoiner<A,B,C> joiner3)
BiConstraintStreamBiConstraintStream.join(Class, TriJoiner).join in interface BiConstraintStream<A,B>C - the type of the third matched factotherClass - never nulljoiner1 - never nulljoiner2 - never nulljoiner3 - never nulljoiners are truepublic <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C> joiner1, TriJoiner<A,B,C> joiner2, TriJoiner<A,B,C> joiner3, TriJoiner<A,B,C> joiner4)
BiConstraintStreamBiConstraintStream.join(Class, TriJoiner).join in interface BiConstraintStream<A,B>C - the type of the third matched factotherClass - never nulljoiner1 - never nulljoiner2 - never nulljoiner3 - never nulljoiner4 - never nulljoiners are truepublic <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C>... joiners)
BiConstraintStreamBiConstraintStream.join(Class, TriJoiner).
This method causes Unchecked generics array creation for varargs parameter warnings,
but we can't fix it with a SafeVarargs annotation because it's an interface method.
Therefore, there are overloaded methods with up to 4 BiJoiner parameters.
join in interface BiConstraintStream<A,B>C - the type of the third matched factotherClass - never nulljoiners - never nulljoiners are truepublic <GroupKey_> UniConstraintStream<GroupKey_> groupBy(BiFunction<A,B,GroupKey_> groupKeyMapping)
groupBy in interface BiConstraintStream<A,B>public <GroupKey_,ResultContainer_,Result_> BiConstraintStream<GroupKey_,Result_> groupBy(BiFunction<A,B,GroupKey_> groupKeyMapping, BiConstraintCollector<A,B,ResultContainer_,Result_> collector)
groupBy in interface BiConstraintStream<A,B>public <GroupKeyA_,GroupKeyB_> BiConstraintStream<GroupKeyA_,GroupKeyB_> groupBy(BiFunction<A,B,GroupKeyA_> groupKeyAMapping, BiFunction<A,B,GroupKeyB_> groupKeyBMapping)
groupBy in interface BiConstraintStream<A,B>public <GroupKeyA_,GroupKeyB_,ResultContainer_,Result_> TriConstraintStream<GroupKeyA_,GroupKeyB_,Result_> groupBy(BiFunction<A,B,GroupKeyA_> groupKeyAMapping, BiFunction<A,B,GroupKeyB_> groupKeyBMapping, BiConstraintCollector<A,B,ResultContainer_,Result_> collector)
groupBy in interface BiConstraintStream<A,B>public final Constraint impactScore(String constraintPackage, String constraintName, Score<?> constraintWeight, boolean positive)
impactScore in class AbstractConstraintStream<Solution_>public final Constraint impactScore(String constraintPackage, String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher, boolean positive)
impactScore in interface InnerBiConstraintStream<A,B>public final Constraint impactScoreLong(String constraintPackage, String constraintName, Score<?> constraintWeight, ToLongBiFunction<A,B> matchWeigher, boolean positive)
impactScoreLong in interface InnerBiConstraintStream<A,B>public final Constraint impactScoreBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, BiFunction<A,B,BigDecimal> matchWeigher, boolean positive)
impactScoreBigDecimal in interface InnerBiConstraintStream<A,B>public final Constraint impactScoreConfigurable(String constraintPackage, String constraintName, boolean positive)
impactScoreConfigurable in class AbstractConstraintStream<Solution_>public final Constraint impactScoreConfigurable(String constraintPackage, String constraintName, ToIntBiFunction<A,B> matchWeigher, boolean positive)
impactScoreConfigurable in interface InnerBiConstraintStream<A,B>public final Constraint impactScoreConfigurableLong(String constraintPackage, String constraintName, ToLongBiFunction<A,B> matchWeigher, boolean positive)
impactScoreConfigurableLong in interface InnerBiConstraintStream<A,B>public final Constraint impactScoreConfigurableBigDecimal(String constraintPackage, String constraintName, BiFunction<A,B,BigDecimal> matchWeigher, boolean positive)
impactScoreConfigurableBigDecimal in interface InnerBiConstraintStream<A,B>public void createRuleItemBuilders(List<<any>> ruleItemBuilderList, <any> scoreHolderGlobal)
createRuleItemBuilders in class DroolsAbstractConstraintStream<Solution_>public List<DroolsFromUniConstraintStream<Solution_,Object>> getFromStreamList()
getFromStreamList in class DroolsAbstractConstraintStream<Solution_>public abstract <any> getLeftVariableDeclaration()
public abstract <any> getLeftPattern()
public abstract <any> getRightVariableDeclaration()
public abstract <any> getRightPattern()
Copyright © 2006–2019 JBoss by Red Hat. All rights reserved.