Class IntervalBasedBacktrackableManager

  • All Implemented Interfaces:
    BacktrackableManager

    public class IntervalBasedBacktrackableManager
    extends SimpleBacktrackableManager
    Version:
    4.7

    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 Detail

      • intervalBasedTrail

        java.util.List<java.lang.Boolean> intervalBasedTrail
        It specifies a trail. A recorded changes which will be used upon backtracking to inform the objects about backtracking.
      • intervalCutOffValue

        int intervalCutOffValue
      • maxNoOfIntervals

        int maxNoOfIntervals
      • minHoleSize

        int minHoleSize
      • minHoleSizeAfterSplit

        int minHoleSizeAfterSplit
      • currentIntervals

        int[] currentIntervals
      • temporaryArray

        int[] temporaryArray
      • removeCount

        int removeCount
      • addingToIntervals

        boolean addingToIntervals
      • valueFalse

        java.lang.Boolean valueFalse
      • valueTrue

        java.lang.Boolean valueTrue
    • 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

      • computeIntervals

        private int[] computeIntervals()
      • 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.
      • addChangedToInterval

        private void addChangedToInterval​(int index)
      • 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.