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, validateConstraintIdclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitjoin, join, join, join, join, join, join, penalize, penalizeBigDecimal, penalizeConfigurable, penalizeConfigurableBigDecimal, penalizeConfigurableLong, penalizeLong, reward, rewardBigDecimal, rewardConfigurable, rewardConfigurableBigDecimal, rewardConfigurableLong, rewardLonggetConstraintFactory, penalize, penalizeConfigurable, reward, rewardConfigurableprotected 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)
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, 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 <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)
ConstraintStreamConstraintStream.penalize(String, Score).penalize in interface ConstraintStreamconstraintPackage - never nullconstraintName - never nullconstraintWeight - never nullpublic Constraint penalize(String constraintPackage, String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher)
BiConstraintStreamBiConstraintStream.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)
BiConstraintStreampenalizeLong 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)
BiConstraintStreampenalizeBigDecimal in interface BiConstraintStream<A,B>constraintPackage - never nullconstraintName - never nullconstraintWeight - never nullmatchWeigher - never nullpublic Constraint penalizeConfigurable(String constraintPackage, String constraintName)
ConstraintStreamConstraintStream.penalizeConfigurable(String).penalizeConfigurable in interface ConstraintStreamconstraintPackage - never nullconstraintName - never nullpublic Constraint penalizeConfigurable(String constraintPackage, String constraintName, ToIntBiFunction<A,B> matchWeigher)
BiConstraintStreampenalizeConfigurable in interface BiConstraintStream<A,B>constraintPackage - never nullconstraintName - never nullmatchWeigher - never nullpublic Constraint penalizeConfigurableLong(String constraintPackage, String constraintName, ToLongBiFunction<A,B> matchWeigher)
BiConstraintStreampenalizeConfigurableLong in interface BiConstraintStream<A,B>constraintPackage - never nullconstraintName - never nullmatchWeigher - never nullpublic Constraint penalizeConfigurableBigDecimal(String constraintPackage, String constraintName, BiFunction<A,B,BigDecimal> matchWeigher)
BiConstraintStreampenalizeConfigurableBigDecimal in interface BiConstraintStream<A,B>constraintPackage - never nullconstraintName - never nullmatchWeigher - never nullpublic Constraint reward(String constraintPackage, String constraintName, Score<?> constraintWeight)
ConstraintStreamConstraintStream.reward(String, Score).reward in interface ConstraintStreamconstraintPackage - never nullconstraintName - never nullconstraintWeight - never nullpublic Constraint reward(String constraintPackage, String constraintName, Score<?> constraintWeight, ToIntBiFunction<A,B> matchWeigher)
BiConstraintStreamBiConstraintStream.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)
BiConstraintStreamrewardLong 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)
BiConstraintStreamrewardBigDecimal in interface BiConstraintStream<A,B>constraintPackage - never nullconstraintName - never nullmatchWeigher - never nullpublic Constraint rewardConfigurable(String constraintPackage, String constraintName)
ConstraintStreamConstraintStream.rewardConfigurable(String).rewardConfigurable in interface ConstraintStreamconstraintPackage - never nullconstraintName - never nullpublic Constraint rewardConfigurable(String constraintPackage, String constraintName, ToIntBiFunction<A,B> matchWeigher)
BiConstraintStreamrewardConfigurable in interface BiConstraintStream<A,B>constraintPackage - never nullconstraintName - never nullmatchWeigher - never nullpublic Constraint rewardConfigurableLong(String constraintPackage, String constraintName, ToLongBiFunction<A,B> matchWeigher)
BiConstraintStreamrewardConfigurableLong in interface BiConstraintStream<A,B>constraintPackage - never nullconstraintName - never nullmatchWeigher - never nullpublic Constraint rewardConfigurableBigDecimal(String constraintPackage, String constraintName, BiFunction<A,B,BigDecimal> matchWeigher)
BiConstraintStreamrewardConfigurableBigDecimal 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.