public abstract class BavetAbstractBiConstraintStream<Solution_,A,B> extends BavetAbstractConstraintStream<Solution_> implements BiConstraintStream<A,B>
Modifier and Type | Field and Description |
---|---|
protected List<BavetAbstractBiConstraintStream<Solution_,A,B>> |
childStreamList |
constraintFactory
Constructor and Description |
---|
BavetAbstractBiConstraintStream(BavetConstraintFactory<Solution_> constraintFactory) |
Modifier and Type | Method and Description |
---|---|
protected void |
addChildStream(BavetAbstractBiConstraintStream<Solution_,A,B> childStream) |
protected void |
createChildNodeChains(BavetNodeBuildPolicy<Solution_> buildPolicy,
Score<?> constraintWeight,
int nodeOrder,
BavetAbstractBiNode<A,B> node) |
protected abstract BavetAbstractBiNode<A,B> |
createNode(BavetNodeBuildPolicy<Solution_> buildPolicy,
Score<?> constraintWeight,
int nodeOrder,
BavetAbstractBiNode<A,B> parentNode) |
BavetAbstractBiNode<A,B> |
createNodeChain(BavetNodeBuildPolicy<Solution_> buildPolicy,
Score<?> constraintWeight,
int nodeOrder,
BavetAbstractBiNode<A,B> parentNode) |
BavetAbstractBiConstraintStream<Solution_,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) |
<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). |
Constraint |
penalize(String constraintPackage,
String constraintName,
Score<?> constraintWeight)
As defined by
ConstraintStream.penalize(String, Score) . |
Constraint |
penalize(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToIntBiFunction<A,B> matchWeigher)
As defined by
BiConstraintStream.penalize(String, Score, ToIntBiFunction) . |
Constraint |
penalizeBigDecimal(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
BiFunction<A,B,BigDecimal> matchWeigher)
|
Constraint |
penalizeConfigurable(String constraintPackage,
String constraintName)
As defined by
ConstraintStream.penalizeConfigurable(String) . |
Constraint |
penalizeConfigurable(String constraintPackage,
String constraintName,
ToIntBiFunction<A,B> matchWeigher)
|
Constraint |
penalizeConfigurableBigDecimal(String constraintPackage,
String constraintName,
BiFunction<A,B,BigDecimal> matchWeigher)
|
Constraint |
penalizeConfigurableLong(String constraintPackage,
String constraintName,
ToLongBiFunction<A,B> matchWeigher)
|
Constraint |
penalizeLong(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToLongBiFunction<A,B> matchWeigher)
|
protected BavetAbstractBiNode<A,B> |
processNode(BavetNodeBuildPolicy<Solution_> buildPolicy,
int nodeOrder,
BavetAbstractBiNode<A,B> parentNode,
BavetAbstractBiNode<A,B> node) |
Constraint |
reward(String constraintPackage,
String constraintName,
Score<?> constraintWeight)
As defined by
ConstraintStream.reward(String, Score) . |
Constraint |
reward(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToIntBiFunction<A,B> matchWeigher)
As defined by
BiConstraintStream.reward(String, Score, ToIntBiFunction) . |
Constraint |
rewardBigDecimal(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
BiFunction<A,B,BigDecimal> matchWeigher)
|
Constraint |
rewardConfigurable(String constraintPackage,
String constraintName)
As defined by
ConstraintStream.rewardConfigurable(String) . |
Constraint |
rewardConfigurable(String constraintPackage,
String constraintName,
ToIntBiFunction<A,B> matchWeigher)
|
Constraint |
rewardConfigurableBigDecimal(String constraintPackage,
String constraintName,
BiFunction<A,B,BigDecimal> matchWeigher)
|
Constraint |
rewardConfigurableLong(String constraintPackage,
String constraintName,
ToLongBiFunction<A,B> matchWeigher)
|
Constraint |
rewardLong(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToLongBiFunction<A,B> matchWeigher)
|
buildConstraint, buildConstraintConfigurable, buildConstraintWeightExtractor, buildConstraintWeightExtractor, getConstraintFactory, getFromStreamList, validateConstraintId
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
join, join, join, join, join, join, join, penalize, penalizeBigDecimal, penalizeConfigurable, penalizeConfigurableBigDecimal, penalizeConfigurableLong, penalizeLong, reward, rewardBigDecimal, rewardConfigurable, rewardConfigurableBigDecimal, rewardConfigurableLong, rewardLong
getConstraintFactory, penalize, penalizeConfigurable, reward, rewardConfigurable
protected final List<BavetAbstractBiConstraintStream<Solution_,A,B>> childStreamList
public BavetAbstractBiConstraintStream(BavetConstraintFactory<Solution_> constraintFactory)
protected void addChildStream(BavetAbstractBiConstraintStream<Solution_,A,B> childStream)
public BavetAbstractBiConstraintStream<Solution_,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, 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 <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 Constraint penalize(String constraintPackage, String constraintName, Score<?> constraintWeight)
ConstraintStream
ConstraintStream.penalize(String, Score)
.penalize
in interface ConstraintStream
constraintPackage
- never nullconstraintName
- never nullconstraintWeight
- never nullpublic Constraint penalize(String constraintPackage, String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher)
BiConstraintStream
BiConstraintStream.penalize(String, Score, ToIntBiFunction)
.penalize
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullconstraintWeight
- never nullmatchWeigher
- never nullpublic Constraint penalizeLong(String constraintPackage, String constraintName, Score<?> constraintWeight, ToLongBiFunction<A,B> matchWeigher)
BiConstraintStream
penalizeLong
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullconstraintWeight
- never nullmatchWeigher
- never nullpublic Constraint penalizeBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, BiFunction<A,B,BigDecimal> matchWeigher)
BiConstraintStream
penalizeBigDecimal
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullconstraintWeight
- never nullmatchWeigher
- never nullpublic Constraint penalizeConfigurable(String constraintPackage, String constraintName)
ConstraintStream
ConstraintStream.penalizeConfigurable(String)
.penalizeConfigurable
in interface ConstraintStream
constraintPackage
- never nullconstraintName
- never nullpublic Constraint penalizeConfigurable(String constraintPackage, String constraintName, ToIntBiFunction<A,B> matchWeigher)
BiConstraintStream
penalizeConfigurable
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic Constraint penalizeConfigurableLong(String constraintPackage, String constraintName, ToLongBiFunction<A,B> matchWeigher)
BiConstraintStream
penalizeConfigurableLong
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic Constraint penalizeConfigurableBigDecimal(String constraintPackage, String constraintName, BiFunction<A,B,BigDecimal> matchWeigher)
BiConstraintStream
penalizeConfigurableBigDecimal
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic Constraint reward(String constraintPackage, String constraintName, Score<?> constraintWeight)
ConstraintStream
ConstraintStream.reward(String, Score)
.reward
in interface ConstraintStream
constraintPackage
- never nullconstraintName
- never nullconstraintWeight
- never nullpublic Constraint reward(String constraintPackage, String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher)
BiConstraintStream
BiConstraintStream.reward(String, Score, ToIntBiFunction)
.reward
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic Constraint rewardLong(String constraintPackage, String constraintName, Score<?> constraintWeight, ToLongBiFunction<A,B> matchWeigher)
BiConstraintStream
rewardLong
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic Constraint rewardBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, BiFunction<A,B,BigDecimal> matchWeigher)
BiConstraintStream
rewardBigDecimal
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic Constraint rewardConfigurable(String constraintPackage, String constraintName)
ConstraintStream
ConstraintStream.rewardConfigurable(String)
.rewardConfigurable
in interface ConstraintStream
constraintPackage
- never nullconstraintName
- never nullpublic Constraint rewardConfigurable(String constraintPackage, String constraintName, ToIntBiFunction<A,B> matchWeigher)
BiConstraintStream
rewardConfigurable
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic Constraint rewardConfigurableLong(String constraintPackage, String constraintName, ToLongBiFunction<A,B> matchWeigher)
BiConstraintStream
rewardConfigurableLong
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic Constraint rewardConfigurableBigDecimal(String constraintPackage, String constraintName, BiFunction<A,B,BigDecimal> matchWeigher)
BiConstraintStream
rewardConfigurableBigDecimal
in interface BiConstraintStream<A,B>
constraintPackage
- never nullconstraintName
- never nullmatchWeigher
- never nullpublic BavetAbstractBiNode<A,B> createNodeChain(BavetNodeBuildPolicy<Solution_> buildPolicy, Score<?> constraintWeight, int nodeOrder, BavetAbstractBiNode<A,B> parentNode)
protected BavetAbstractBiNode<A,B> processNode(BavetNodeBuildPolicy<Solution_> buildPolicy, int nodeOrder, BavetAbstractBiNode<A,B> parentNode, BavetAbstractBiNode<A,B> node)
protected void createChildNodeChains(BavetNodeBuildPolicy<Solution_> buildPolicy, Score<?> constraintWeight, int nodeOrder, BavetAbstractBiNode<A,B> node)
protected abstract BavetAbstractBiNode<A,B> createNode(BavetNodeBuildPolicy<Solution_> buildPolicy, Score<?> constraintWeight, int nodeOrder, BavetAbstractBiNode<A,B> parentNode)
Copyright © 2006–2019 JBoss by Red Hat. All rights reserved.