JaCoP.core
Class IntervalBasedBacktrackableManager

java.lang.Object
  extended by JaCoP.core.SimpleBacktrackableManager
      extended by JaCoP.core.IntervalBasedBacktrackableManager
All Implemented Interfaces:
BacktrackableManager

public class IntervalBasedBacktrackableManager
extends SimpleBacktrackableManager

Author:
Radoslaw Szymanek and Krzysztof Kuchcinski This manager works as simple manager to the point when cutoff value for a list is reached. The objects indexes are continously stored in a list, but they are stored in the trail only as a list of holes. There is a possibility to express the maximum number of holes being registered as well as minimum size requirement for hole.

Field Summary
 
Fields inherited from class JaCoP.core.SimpleBacktrackableManager
currentLevel, currentLevelMax, objects, trailContainsAllChanges
 
Constructor Summary
IntervalBasedBacktrackableManager(Backtrackable[] vars, int noOfObjects, int minHoleSize, int maxNoOfIntervals)
          It creates a interval based backtrackable manager.
 
Method Summary
 void addChanged(int index)
          It allows to inform the manager that a given item with id (index) has changed at given level.
 java.lang.String checkRemoveInvariant(int removedLevel)
          It checks all backtrackable objects that they have not retained any level equal or above removedLevel.
 boolean isRecognizedAsChanged(int index)
          It allows for easy testing if a given object is considered by the manager as the object which has changed and needs being informed about backtracking.
 void removeLevel(int removedLevel)
          It allows to inform all objects which have changed at removedLevel that the backtracking from that level has occurred.
 void setLevel(int level)
          It specifies the level which should become the active one in the manager.
 void setSize(int size)
          It specifies how many objects within objects array are being actually managed.
 
Methods inherited from class JaCoP.core.SimpleBacktrackableManager
getLevel, toString, update
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

IntervalBasedBacktrackableManager

public IntervalBasedBacktrackableManager(Backtrackable[] vars,
                                         int noOfObjects,
                                         int minHoleSize,
                                         int maxNoOfIntervals)
It creates a interval based backtrackable manager. At some point, instead of storing a list of changed indexes the manager stores a fixed number of intervals representing objects which have not changed.

Parameters:
vars - the number of objects.
noOfObjects - the number of objects being handled.
minHoleSize - the minimum size of the hole to be registered.
maxNoOfIntervals - maximum number of holes (intervals) being registered.
Method Detail

addChanged

public void addChanged(int index)
Description copied from class: SimpleBacktrackableManager
It allows to inform the manager that a given item with id (index) has changed at given level.

Specified by:
addChanged in interface BacktrackableManager
Overrides:
addChanged in class SimpleBacktrackableManager
Parameters:
index - it specifies the index of the object which has changed.

setLevel

public void setLevel(int level)
Description copied from class: SimpleBacktrackableManager
It specifies the level which should become the active one in the manager.

Specified by:
setLevel in interface BacktrackableManager
Overrides:
setLevel in class SimpleBacktrackableManager
Parameters:
level - the active level at which the changes will be recorded.

removeLevel

public void removeLevel(int removedLevel)
It allows to inform all objects which have changed at removedLevel that the backtracking from that level has occurred.

Specified by:
removeLevel in interface BacktrackableManager
Overrides:
removeLevel in class SimpleBacktrackableManager
Parameters:
removedLevel - it specifies the level which is being removed.

checkRemoveInvariant

public java.lang.String checkRemoveInvariant(int removedLevel)
It checks all backtrackable objects that they have not retained any level equal or above removedLevel.

Parameters:
removedLevel - the level which has been removed and should not exist in any object.
Returns:
the description of the inconsistency, not maintained invariant.

setSize

public void setSize(int size)
It specifies how many objects within objects array are being actually managed. It allows to specify partially empty array.

Specified by:
setSize in interface BacktrackableManager
Overrides:
setSize in class SimpleBacktrackableManager
Parameters:
size - the number of objects in the array.

isRecognizedAsChanged

public boolean isRecognizedAsChanged(int index)
It allows for easy testing if a given object is considered by the manager as the object which has changed and needs being informed about backtracking.

Specified by:
isRecognizedAsChanged in interface BacktrackableManager
Overrides:
isRecognizedAsChanged in class SimpleBacktrackableManager
Parameters:
index - the position of the object which status is in question.
Returns:
it returns true if the manager recognizes object at position index as changed one.