package schedule;

import java.util.Map;
import database.Course;
import schedule.DayPattern;

/**
 * An InstructorPreference holds all information regarding what classes
 * this instructor wants to or is qualified to teach, and at what times
 * the teaches prefer to teach.
 */
abstract class InstructorPreference {
  /** 
   * The days of the week this teacher wants to teach on 
   */
  Map<DayPattern, Integer> dayPatterns;
  
  /**  
   * The courses that this teacher wants to teach. 
   */
  Map<Course, Integer> courses;

  /**
   * Sets the rating for a course.
   * @param course The course.
   * @param rating The rating for this course.
   */
  /*@ 
    requires
      course != null;
    ensures
      courses.get(course) == rating;
  @*/
  abstract void setRatingForCourse(Course course, int rating);

  /**
   * Sets the rating for a day and time.
   * @param dayPattern The day pattern.
   * @param rating The rating.
   */ 
  /*@ 
    requires
      dayPattern != null;
    ensures
      dayPatterns.get(dayPattern) == rating;
  @*/
  abstract void setRatingForDayAndTime(DayPattern dayPattern, int rating);
}