Class SingletonListInverseVariableListener<Solution_>
java.lang.Object
org.optaplanner.core.impl.domain.variable.inverserelation.SingletonListInverseVariableListener<Solution_>
- All Implemented Interfaces:
Closeable,AutoCloseable,AbstractVariableListener<Solution_,,Object> ListVariableListener<Solution_,,Object, Object> SingletonInverseVariableSupply,Supply
public class SingletonListInverseVariableListener<Solution_>
extends Object
implements ListVariableListener<Solution_,Object,Object>, SingletonInverseVariableSupply
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final InverseRelationShadowVariableDescriptor<Solution_>protected final ListVariableDescriptor<Solution_> -
Constructor Summary
ConstructorsConstructorDescriptionSingletonListInverseVariableListener(InverseRelationShadowVariableDescriptor<Solution_> shadowVariableDescriptor, ListVariableDescriptor<Solution_> sourceVariableDescriptor) -
Method Summary
Modifier and TypeMethodDescriptionvoidafterEntityAdded(ScoreDirector<Solution_> scoreDirector, Object entity) voidafterEntityRemoved(ScoreDirector<Solution_> scoreDirector, Object entity) voidafterListVariableChanged(ScoreDirector<Solution_> scoreDirector, Object entity, int fromIndex, int toIndex) Tells the listener that some elements within the range starting atfromIndex(inclusive) and ending attoIndex(exclusive) changed.voidafterListVariableElementUnassigned(ScoreDirector<Solution_> scoreDirector, Object element) The listener must unset all shadow variables it is responsible for when an element is unassigned from the source list variable.voidbeforeEntityAdded(ScoreDirector<Solution_> scoreDirector, Object entity) voidbeforeEntityRemoved(ScoreDirector<Solution_> scoreDirector, Object entity) voidbeforeListVariableChanged(ScoreDirector<Solution_> scoreDirector, Object entity, int fromIndex, int toIndex) Tells the listener that some elements within the range starting atfromIndex(inclusive) and ending attoIndex(exclusive) will change.getInverseSingleton(Object planningValue) If entity1.varA = x then the inverse of x is entity1.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.optaplanner.core.api.domain.variable.AbstractVariableListener
close, resetWorkingSolution
-
Field Details
-
shadowVariableDescriptor
-
sourceVariableDescriptor
-
-
Constructor Details
-
SingletonListInverseVariableListener
public SingletonListInverseVariableListener(InverseRelationShadowVariableDescriptor<Solution_> shadowVariableDescriptor, ListVariableDescriptor<Solution_> sourceVariableDescriptor)
-
-
Method Details
-
beforeEntityAdded
- Specified by:
beforeEntityAddedin interfaceAbstractVariableListener<Solution_,Object> - Parameters:
scoreDirector- never nullentity- never null
-
afterEntityAdded
- Specified by:
afterEntityAddedin interfaceAbstractVariableListener<Solution_,Object> - Parameters:
scoreDirector- never nullentity- never null
-
beforeEntityRemoved
- Specified by:
beforeEntityRemovedin interfaceAbstractVariableListener<Solution_,Object> - Parameters:
scoreDirector- never nullentity- never null
-
afterEntityRemoved
- Specified by:
afterEntityRemovedin interfaceAbstractVariableListener<Solution_,Object> - Parameters:
scoreDirector- never nullentity- never null
-
afterListVariableElementUnassigned
public void afterListVariableElementUnassigned(ScoreDirector<Solution_> scoreDirector, Object element) Description copied from interface:ListVariableListenerThe listener must unset all shadow variables it is responsible for when an element is unassigned from the source list variable. For example, aTask'sstartTimeshadow variable must be reset tonullafter a task is unassigned fromEmployee.taskswhen the move that assigned it there is undone during Construction Heuristic phase.- Specified by:
afterListVariableElementUnassignedin interfaceListVariableListener<Solution_,Object, Object> - Parameters:
scoreDirector- score directorelement- the unassigned element
-
beforeListVariableChanged
public void beforeListVariableChanged(ScoreDirector<Solution_> scoreDirector, Object entity, int fromIndex, int toIndex) Description copied from interface:ListVariableListenerTells the listener that some elements within the range starting atfromIndex(inclusive) and ending attoIndex(exclusive) will change. Be aware that theListVariableListener.afterListVariableChanged(org.optaplanner.core.api.score.director.ScoreDirector<Solution_>, Entity_, int, int)call after the change is done often has a differentfromIndexandtoIndexbecause the number of elements in the list variable can change.The list variable change includes:
- Changing position (index) of one or more elements.
- Removing one or more elements from the list variable.
- Adding one or more elements to the list variable.
- Any mix of the above. The range has the following properties:
fromIndexis greater than or equal to 0;toIndexis less than or equal to the list variable size.toIndexis greater than or equal tofromIndex.- The range contains all elements that are going to be changed.
- The range may contain elements that are not going to be changed.
- The range may be empty (
fromIndexequalstoIndex) if none of the existing list variable elements are going to be changed.- Specified by:
beforeListVariableChangedin interfaceListVariableListener<Solution_,Object, Object> - Parameters:
scoreDirector- score directorentity- entity with the changed list variablefromIndex- low endpoint (inclusive) of the changed rangetoIndex- high endpoint (exclusive) of the changed range
-
afterListVariableChanged
public void afterListVariableChanged(ScoreDirector<Solution_> scoreDirector, Object entity, int fromIndex, int toIndex) Description copied from interface:ListVariableListenerTells the listener that some elements within the range starting atfromIndex(inclusive) and ending attoIndex(exclusive) changed.The list variable change includes:
- Changing position (index) of one or more elements.
- Removing one or more elements from the list variable.
- Adding one or more elements to the list variable.
- Any mix of the above. The range has the following properties:
fromIndexis greater than or equal to 0;toIndexis less than or equal to the list variable size.toIndexis greater than or equal tofromIndex.- The range contains all elements that have changed.
- The range may contain elements that have not changed.
- The range may be empty (
fromIndexequalstoIndex) if none of the existing list variable elements have changed.- Specified by:
afterListVariableChangedin interfaceListVariableListener<Solution_,Object, Object> - Parameters:
scoreDirector- score directorentity- entity with the changed list variablefromIndex- low endpoint (inclusive) of the changed rangetoIndex- high endpoint (exclusive) of the changed range
-
getInverseSingleton
Description copied from interface:SingletonInverseVariableSupplyIf entity1.varA = x then the inverse of x is entity1.- Specified by:
getInverseSingletonin interfaceSingletonInverseVariableSupply- Parameters:
planningValue- never null- Returns:
- sometimes null, an entity for which the planning variable is the planningValue.
-