package schedule;
import java.util.Collection;

/**
   * This object saves the maximum distance between two adjacent courses.
   * The admin has privileges to set this constraint.
   * The score integer is used to figure out success metrics of the generated schedule.
   * It tells how "well" this constraint was met.
   *     <p>
   * This object is derived from Section 2.4.1.3 of the Functional Requirements.
   */
abstract class AdminAdjCourseDistConstraint {
   
   public int maxDistance;
   public Collection<Integer> fixedDistances;
   public int adjCourseScore;

   /**
     * This method is called once the admin saves the maximum distance between adjacent
     * course.
     */
       /*@
      requires
      	// 
      	// The input distance is not null
      	//
      	(dist != 0);
      
      ensures
      	// 
      	// A valid distance between adjacent courses is saved
      	//
        (maxDistance == dist);
     @*/
   public abstract void saveDistance(int dist);
}