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, getConstraintFactory
buildConstraintWeightExtractor, buildConstraintWeightExtractor, penalize, penalizeConfigurable, reward, rewardConfigurable, validateConstraintId
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
penalize, penalizeBigDecimal, penalizeConfigurable, penalizeConfigurableBigDecimal, penalizeConfigurableLong, penalizeLong, reward, rewardBigDecimal, rewardConfigurable, rewardConfigurableBigDecimal, rewardConfigurableLong, rewardLong
penalize, penalizeBigDecimal, penalizeConfigurable, penalizeConfigurableBigDecimal, penalizeConfigurableLong, penalizeLong, reward, rewardBigDecimal, rewardConfigurable, rewardConfigurableBigDecimal, rewardConfigurableLong, rewardLong
getConstraintFactory, penalize, penalize, penalizeConfigurable, penalizeConfigurable, reward, reward, rewardConfigurable, rewardConfigurable
protected 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)
BiConstraintStream
BiPredicate
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)
BiConstraintStream
TriConstraintStream
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)
BiConstraintStream
TriConstraintStream
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)
BiConstraintStream
TriConstraintStream
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)
BiConstraintStream
TriConstraintStream
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)
BiConstraintStream
BiConstraintStream.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)
BiConstraintStream
BiConstraintStream.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)
BiConstraintStream
BiConstraintStream.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)
BiConstraintStream
BiConstraintStream.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.