A
- the type of the first matched fact (either a problem fact or a planning entity
)B
- the type of the second matched fact (either a problem fact or a planning entity
)public interface BiConstraintStream<A,B> extends ConstraintStream
ConstraintStream
that matches two facts.ConstraintStream
Modifier and Type | Method and Description |
---|---|
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. |
<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) |
default <C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass)
Create a new
TriConstraintStream for every combination of [A, B] and C. |
default <C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass,
TriJoiner<A,B,C>... joiners)
As defined by
join(Class, TriJoiner) . |
default <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). |
default <C> TriConstraintStream<A,B,C> |
join(Class<C> otherClass,
TriJoiner<A,B,C> joiner1,
TriJoiner<A,B,C> joiner2)
As defined by
join(Class, TriJoiner) . |
default <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
join(Class, TriJoiner) . |
default <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
join(Class, TriJoiner) . |
default <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). |
default Constraint |
penalize(String constraintName,
Score<?> constraintWeight,
ToIntBiFunction<A,B> matchWeigher)
Negatively impact the
Score : subtract the constraintWeight multiplied by the match weight. |
Constraint |
penalize(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToIntBiFunction<A,B> matchWeigher)
As defined by
penalize(String, Score, ToIntBiFunction) . |
default Constraint |
penalizeBigDecimal(String constraintName,
Score<?> constraintWeight,
BiFunction<A,B,BigDecimal> matchWeigher)
Negatively impact the
Score : subtract the constraintWeight multiplied by the match weight. |
Constraint |
penalizeBigDecimal(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
BiFunction<A,B,BigDecimal> matchWeigher)
As defined by
penalizeBigDecimal(String, Score, BiFunction) . |
Constraint |
penalizeConfigurable(String constraintPackage,
String constraintName,
ToIntBiFunction<A,B> matchWeigher)
As defined by
penalizeConfigurable(String, ToIntBiFunction) . |
default Constraint |
penalizeConfigurable(String constraintName,
ToIntBiFunction<A,B> matchWeigher)
Negatively impact the
Score : subtract the ConstraintWeight multiplied by the match weight. |
default Constraint |
penalizeConfigurableBigDecimal(String constraintName,
BiFunction<A,B,BigDecimal> matchWeigher)
Negatively impact the
Score : subtract the ConstraintWeight multiplied by the match weight. |
Constraint |
penalizeConfigurableBigDecimal(String constraintPackage,
String constraintName,
BiFunction<A,B,BigDecimal> matchWeigher)
As defined by
penalizeConfigurableBigDecimal(String, BiFunction) . |
Constraint |
penalizeConfigurableLong(String constraintPackage,
String constraintName,
ToLongBiFunction<A,B> matchWeigher)
As defined by
penalizeConfigurableLong(String, ToLongBiFunction) . |
default Constraint |
penalizeConfigurableLong(String constraintName,
ToLongBiFunction<A,B> matchWeigher)
Negatively impact the
Score : subtract the ConstraintWeight multiplied by the match weight. |
default Constraint |
penalizeLong(String constraintName,
Score<?> constraintWeight,
ToLongBiFunction<A,B> matchWeigher)
Negatively impact the
Score : subtract the constraintWeight multiplied by the match weight. |
Constraint |
penalizeLong(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToLongBiFunction<A,B> matchWeigher)
As defined by
penalizeLong(String, Score, ToLongBiFunction) . |
default Constraint |
reward(String constraintName,
Score<?> constraintWeight,
ToIntBiFunction<A,B> matchWeigher)
Positively impact the
Score : add the constraintWeight multiplied by the match weight. |
Constraint |
reward(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToIntBiFunction<A,B> matchWeigher)
As defined by
reward(String, Score, ToIntBiFunction) . |
default Constraint |
rewardBigDecimal(String constraintName,
Score<?> constraintWeight,
BiFunction<A,B,BigDecimal> matchWeigher)
Positively impact the
Score : add the constraintWeight multiplied by the match weight. |
Constraint |
rewardBigDecimal(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
BiFunction<A,B,BigDecimal> matchWeigher)
As defined by
rewardBigDecimal(String, Score, BiFunction) . |
Constraint |
rewardConfigurable(String constraintPackage,
String constraintName,
ToIntBiFunction<A,B> matchWeigher)
As defined by
rewardConfigurable(String, ToIntBiFunction) . |
default Constraint |
rewardConfigurable(String constraintName,
ToIntBiFunction<A,B> matchWeigher)
Positively impact the
Score : add the ConstraintWeight multiplied by the match weight. |
default Constraint |
rewardConfigurableBigDecimal(String constraintName,
BiFunction<A,B,BigDecimal> matchWeigher)
Positively impact the
Score : add the ConstraintWeight multiplied by the match weight. |
Constraint |
rewardConfigurableBigDecimal(String constraintPackage,
String constraintName,
BiFunction<A,B,BigDecimal> matchWeigher)
As defined by
rewardConfigurableBigDecimal(String, BiFunction) . |
Constraint |
rewardConfigurableLong(String constraintPackage,
String constraintName,
ToLongBiFunction<A,B> matchWeigher)
As defined by
rewardConfigurableLong(String, ToLongBiFunction) . |
default Constraint |
rewardConfigurableLong(String constraintName,
ToLongBiFunction<A,B> matchWeigher)
Positively impact the
Score : add the ConstraintWeight multiplied by the match weight. |
default Constraint |
rewardLong(String constraintName,
Score<?> constraintWeight,
ToLongBiFunction<A,B> matchWeigher)
Positively impact the
Score : add the constraintWeight multiplied by the match weight. |
Constraint |
rewardLong(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToLongBiFunction<A,B> matchWeigher)
As defined by
rewardLong(String, Score, ToLongBiFunction) . |
getConstraintFactory, penalize, penalize, penalizeConfigurable, penalizeConfigurable, reward, reward, rewardConfigurable, rewardConfigurable
BiConstraintStream<A,B> filter(BiPredicate<A,B> predicate)
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.
predicate
- never nulldefault <C> TriConstraintStream<A,B,C> join(UniConstraintStream<C> otherStream)
TriConstraintStream
for every combination of [A, B] and C.
Important: TriConstraintStream.filter(TriPredicate)
Filtering} this is slower and less scalable
than a 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.
C
- the type of the third matched factotherStream
- never null<C> TriConstraintStream<A,B,C> join(UniConstraintStream<C> otherStream, TriJoiner<A,B,C> joiner)
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.
C
- the type of the third matched factotherStream
- never nulljoiner
- never nullBiJoiner
is truedefault <C> TriConstraintStream<A,B,C> join(Class<C> otherClass)
TriConstraintStream
for every combination of [A, B] and C.
Important: TriConstraintStream.filter(TriPredicate)
Filtering} this is slower and less scalable
than a 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 join(UniConstraintStream)
.
C
- the type of the third matched factotherClass
- never nulldefault <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C> joiner)
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 join(UniConstraintStream, TriJoiner)
.
This method has overloaded methods with multiple TriJoiner
parameters.
C
- the type of the third matched factotherClass
- never nulljoiner
- never nullBiJoiner
is truedefault <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C> joiner1, TriJoiner<A,B,C> joiner2)
join(Class, TriJoiner)
.C
- the type of the third matched factotherClass
- never nulljoiner1
- never nulljoiner2
- never nulljoiners
are truedefault <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C> joiner1, TriJoiner<A,B,C> joiner2, TriJoiner<A,B,C> joiner3)
join(Class, TriJoiner)
.C
- the type of the third matched factotherClass
- never nulljoiner1
- never nulljoiner2
- never nulljoiner3
- never nulljoiners
are truedefault <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)
join(Class, TriJoiner)
.C
- the type of the third matched factotherClass
- never nulljoiner1
- never nulljoiner2
- never nulljoiner3
- never nulljoiner4
- never nulljoiners
are truedefault <C> TriConstraintStream<A,B,C> join(Class<C> otherClass, TriJoiner<A,B,C>... joiners)
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.
C
- the type of the third matched factotherClass
- never nulljoiners
- never nulljoiners
are true<GroupKey_> UniConstraintStream<GroupKey_> groupBy(BiFunction<A,B,GroupKey_> groupKeyMapping)
<GroupKey_,ResultContainer_,Result_> BiConstraintStream<GroupKey_,Result_> groupBy(BiFunction<A,B,GroupKey_> groupKeyMapping, BiConstraintCollector<A,B,ResultContainer_,Result_> collector)
<GroupKeyA_,GroupKeyB_> BiConstraintStream<GroupKeyA_,GroupKeyB_> groupBy(BiFunction<A,B,GroupKeyA_> groupKeyAMapping, BiFunction<A,B,GroupKeyB_> groupKeyBMapping)
<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)
default Constraint penalize(String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher)
Score
: subtract the constraintWeight multiplied by the match weight.
Otherwise as defined by ConstraintStream.penalize(String, Score)
.
For non-int Score
types use penalizeLong(String, Score, ToLongBiFunction)
or penalizeBigDecimal(String, Score, BiFunction)
instead.
constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationconstraintWeight
- never nullmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint penalize(String constraintPackage, String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher)
penalize(String, Score, ToIntBiFunction)
.constraintPackage
- never nullconstraintName
- never nullconstraintWeight
- never nullmatchWeigher
- never nulldefault Constraint penalizeLong(String constraintName, Score<?> constraintWeight, ToLongBiFunction<A,B> matchWeigher)
Score
: subtract the constraintWeight multiplied by the match weight.
Otherwise as defined by ConstraintStream.penalize(String, Score)
.constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationconstraintWeight
- never nullmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint penalizeLong(String constraintPackage, String constraintName, Score<?> constraintWeight, ToLongBiFunction<A,B> matchWeigher)
penalizeLong(String, Score, ToLongBiFunction)
.constraintPackage
- never nullconstraintName
- never nullconstraintWeight
- never nullmatchWeigher
- never nulldefault Constraint penalizeBigDecimal(String constraintName, Score<?> constraintWeight, BiFunction<A,B,BigDecimal> matchWeigher)
Score
: subtract the constraintWeight multiplied by the match weight.
Otherwise as defined by ConstraintStream.penalize(String, Score)
.constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationconstraintWeight
- never nullmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint penalizeBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, BiFunction<A,B,BigDecimal> matchWeigher)
penalizeBigDecimal(String, Score, BiFunction)
.constraintPackage
- never nullconstraintName
- never nullconstraintWeight
- never nullmatchWeigher
- never nulldefault Constraint penalizeConfigurable(String constraintName, ToIntBiFunction<A,B> matchWeigher)
Score
: subtract the ConstraintWeight
multiplied by the match weight.
Otherwise as defined by ConstraintStream.penalizeConfigurable(String)
.
For non-int Score
types use penalizeConfigurableLong(String, ToLongBiFunction)
or penalizeConfigurableBigDecimal(String, BiFunction)
instead.
constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint penalizeConfigurable(String constraintPackage, String constraintName, ToIntBiFunction<A,B> matchWeigher)
penalizeConfigurable(String, ToIntBiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nulldefault Constraint penalizeConfigurableLong(String constraintName, ToLongBiFunction<A,B> matchWeigher)
Score
: subtract the ConstraintWeight
multiplied by the match weight.
Otherwise as defined by ConstraintStream.penalizeConfigurable(String)
.constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint penalizeConfigurableLong(String constraintPackage, String constraintName, ToLongBiFunction<A,B> matchWeigher)
penalizeConfigurableLong(String, ToLongBiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nulldefault Constraint penalizeConfigurableBigDecimal(String constraintName, BiFunction<A,B,BigDecimal> matchWeigher)
Score
: subtract the ConstraintWeight
multiplied by the match weight.
Otherwise as defined by ConstraintStream.penalizeConfigurable(String)
.constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint penalizeConfigurableBigDecimal(String constraintPackage, String constraintName, BiFunction<A,B,BigDecimal> matchWeigher)
penalizeConfigurableBigDecimal(String, BiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nulldefault Constraint reward(String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher)
Score
: add the constraintWeight multiplied by the match weight.
Otherwise as defined by ConstraintStream.reward(String, Score)
.
For non-int Score
types use rewardLong(String, Score, ToLongBiFunction)
or rewardBigDecimal(String, Score, BiFunction)
instead.
constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationconstraintWeight
- never nullmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint reward(String constraintPackage, String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher)
reward(String, Score, ToIntBiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nulldefault Constraint rewardLong(String constraintName, Score<?> constraintWeight, ToLongBiFunction<A,B> matchWeigher)
Score
: add the constraintWeight multiplied by the match weight.
Otherwise as defined by ConstraintStream.reward(String, Score)
.constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationconstraintWeight
- never nullmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint rewardLong(String constraintPackage, String constraintName, Score<?> constraintWeight, ToLongBiFunction<A,B> matchWeigher)
rewardLong(String, Score, ToLongBiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nulldefault Constraint rewardBigDecimal(String constraintName, Score<?> constraintWeight, BiFunction<A,B,BigDecimal> matchWeigher)
Score
: add the constraintWeight multiplied by the match weight.
Otherwise as defined by ConstraintStream.reward(String, Score)
.constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationconstraintWeight
- never nullmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint rewardBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, BiFunction<A,B,BigDecimal> matchWeigher)
rewardBigDecimal(String, Score, BiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nulldefault Constraint rewardConfigurable(String constraintName, ToIntBiFunction<A,B> matchWeigher)
Score
: add the ConstraintWeight
multiplied by the match weight.
Otherwise as defined by ConstraintStream.rewardConfigurable(String)
.
For non-int Score
types use rewardConfigurableLong(String, ToLongBiFunction)
or rewardConfigurableBigDecimal(String, BiFunction)
instead.
constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint rewardConfigurable(String constraintPackage, String constraintName, ToIntBiFunction<A,B> matchWeigher)
rewardConfigurable(String, ToIntBiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nulldefault Constraint rewardConfigurableLong(String constraintName, ToLongBiFunction<A,B> matchWeigher)
Score
: add the ConstraintWeight
multiplied by the match weight.
Otherwise as defined by ConstraintStream.rewardConfigurable(String)
.constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint rewardConfigurableLong(String constraintPackage, String constraintName, ToLongBiFunction<A,B> matchWeigher)
rewardConfigurableLong(String, ToLongBiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nulldefault Constraint rewardConfigurableBigDecimal(String constraintName, BiFunction<A,B,BigDecimal> matchWeigher)
Score
: add the ConstraintWeight
multiplied by the match weight.
Otherwise as defined by ConstraintStream.rewardConfigurable(String)
.constraintName
- never null, shows up in ConstraintMatchTotal
during score justificationmatchWeigher
- never null, the result of this function (matchWeight) is multiplied by the constraintWeightConstraint rewardConfigurableBigDecimal(String constraintPackage, String constraintName, BiFunction<A,B,BigDecimal> matchWeigher)
rewardConfigurableBigDecimal(String, BiFunction)
.constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullCopyright © 2006–2019 JBoss by Red Hat. All rights reserved.