Interface ConstraintFactory
-
- All Known Implementing Classes:
BavetConstraintFactory,DroolsConstraintFactory,InnerConstraintFactory
public interface ConstraintFactoryThe factory to create everyConstraintStream(for example withfrom(Class)) which ends in aConstraintreturned byConstraintProvider.defineConstraints(ConstraintFactory).
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description <A> UniConstraintStream<A>from(Class<A> fromClass)Start aConstraintStreamof all instances of the fromClass that are known asproblem factsorplanning entities.<A> UniConstraintStream<A>fromUnfiltered(Class<A> fromClass)Likefrom(Class), but without any filtering of uninitializedplanning entities.default <A> BiConstraintStream<A,A>fromUniquePair(Class<A> fromClass)Create a newBiConstraintStreamfor every unique combination of A and another A with a higherPlanningId.<A> BiConstraintStream<A,A>fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner)Create a newBiConstraintStreamfor every unique combination of A and another A with a higherPlanningIdfor which theBiJoineris true (for the properties it extracts from both facts).default <A> BiConstraintStream<A,A>fromUniquePair(Class<A> fromClass, BiJoiner<A,A>... joiners)As defined byfromUniquePair(Class, BiJoiner).default <A> BiConstraintStream<A,A>fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner1, BiJoiner<A,A> joiner2)As defined byfromUniquePair(Class, BiJoiner).default <A> BiConstraintStream<A,A>fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner1, BiJoiner<A,A> joiner2, BiJoiner<A,A> joiner3)As defined byfromUniquePair(Class, BiJoiner).default <A> BiConstraintStream<A,A>fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner1, BiJoiner<A,A> joiner2, BiJoiner<A,A> joiner3, BiJoiner<A,A> joiner4)As defined byfromUniquePair(Class, BiJoiner).StringgetDefaultConstraintPackage()This isConstraintConfiguration.constraintPackage()if available, otherwise the package of thePlanningSolutionclass.
-
-
-
Method Detail
-
getDefaultConstraintPackage
String getDefaultConstraintPackage()
This isConstraintConfiguration.constraintPackage()if available, otherwise the package of thePlanningSolutionclass.- Returns:
- never null
-
from
<A> UniConstraintStream<A> from(Class<A> fromClass)
Start aConstraintStreamof all instances of the fromClass that are known asproblem factsorplanning entities.If the fromClass is a
PlanningEntity, then it will be automaticallyfilteredto only contain fully initialized entities, for which each genuinePlanningVariable(of the fromClass or a superclass thereof) is initialized (so when the value is not null - unlessPlanningVariable.nullable()is modified). This filtering will NOT automatically apply to genuine planning variables of subclass planning entities of the fromClass.- Type Parameters:
A- the type of the matched problem fact orplanning entity- Parameters:
fromClass- never null- Returns:
- never null
-
fromUnfiltered
<A> UniConstraintStream<A> fromUnfiltered(Class<A> fromClass)
Likefrom(Class), but without any filtering of uninitializedplanning entities.- Type Parameters:
A- the type of the matched problem fact orplanning entity- Parameters:
fromClass- never null- Returns:
- never null
-
fromUniquePair
default <A> BiConstraintStream<A,A> fromUniquePair(Class<A> fromClass)
Create a newBiConstraintStreamfor every unique combination of A and another A with a higherPlanningId.Important:
Filteringthis is slower and less scalable than using ajoiner, because it does barely applies hashing and/or indexing on the properties, so it creates and checks almost every combination of A and A.This method is syntactic sugar for
UniConstraintStream.join(Class). It automatically adds alessThanjoiner on thePlanningIdof A.- Type Parameters:
A- the type of the matched problem fact orplanning entity- Parameters:
fromClass- never null- Returns:
- a stream that matches every unique combination of A and another A
-
fromUniquePair
<A> BiConstraintStream<A,A> fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner)
Create a newBiConstraintStreamfor every unique combination of A and another A with a higherPlanningIdfor which theBiJoineris true (for the properties it extracts from both facts).Important: This is faster and more scalable than not using a
fromUniquePair(Class)joiner} followed by afilter, because it applies hashing and/or indexing on the properties, so it doesn't create nor checks almost every combination of A and A.This method is syntactic sugar for
UniConstraintStream.join(Class, BiJoiner). It automatically adds alessThanjoiner on thePlanningIdof A.This method has overloaded methods with multiple
BiJoinerparameters.- Type Parameters:
A- the type of the matched problem fact orplanning entity- Parameters:
fromClass- never nulljoiner- never null- Returns:
- a stream that matches every unique combination of A and another A for which the
BiJoineris true
-
fromUniquePair
default <A> BiConstraintStream<A,A> fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner1, BiJoiner<A,A> joiner2)
As defined byfromUniquePair(Class, BiJoiner).- Type Parameters:
A- the type of the matched problem fact orplanning entity- Parameters:
fromClass- never nulljoiner1- never nulljoiner2- never null- Returns:
- a stream that matches every unique combination of A and another A for which all the
joinersare true
-
fromUniquePair
default <A> BiConstraintStream<A,A> fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner1, BiJoiner<A,A> joiner2, BiJoiner<A,A> joiner3)
As defined byfromUniquePair(Class, BiJoiner).- Type Parameters:
A- the type of the matched problem fact orplanning entity- Parameters:
fromClass- never nulljoiner1- never nulljoiner2- never nulljoiner3- never null- Returns:
- a stream that matches every unique combination of A and another A for which all the
joinersare true
-
fromUniquePair
default <A> BiConstraintStream<A,A> fromUniquePair(Class<A> fromClass, BiJoiner<A,A> joiner1, BiJoiner<A,A> joiner2, BiJoiner<A,A> joiner3, BiJoiner<A,A> joiner4)
As defined byfromUniquePair(Class, BiJoiner).- Type Parameters:
A- the type of the matched problem fact orplanning entity- Parameters:
fromClass- never nulljoiner1- never nulljoiner2- never nulljoiner3- never nulljoiner4- never null- Returns:
- a stream that matches every unique combination of A and another A for which all the
joinersare true
-
fromUniquePair
default <A> BiConstraintStream<A,A> fromUniquePair(Class<A> fromClass, BiJoiner<A,A>... joiners)
As defined byfromUniquePair(Class, BiJoiner).This method causes Unchecked generics array creation for varargs parameter warnings, but we can't fix it with a
SafeVarargsannotation because it's an interface method. Therefore, there are overloaded methods with up to 4BiJoinerparameters.- Type Parameters:
A- the type of the matched problem fact orplanning entity- Parameters:
fromClass- never nulljoiners- never null- Returns:
- a stream that matches every unique combination of A and another A for which all the
joinersare true
-
-