(*
 * Module containing the components of the Scheduler Tool's Database
 *
 * Programmed by: Eric Liebowitz
 *)

module Database;

   object Database
      components: InstructorDB, CourseDB;
      description:
      (*
         TODO
      *);
   end;

   object InstructorDB = Instructor*;
      object Instructor = firstName and lastName and id and wtu
         and Office and CoursePreference* and TimePreference*
      description:
      (*
         TODO
      *);
      end Instructor;
         (***Atomic***)
            object firstName = string;
            object lastName = string;
            object id = string;
            object wtu = number;
   
         (***Objects***)
            object Office = buildingNumber and roomNumber
            description:
            (*
               TODO
            *);
            end Office;
               (***Atomic***)
               object buildingNumber = number;
               object roomNumber = number;
         
            object CoursePreference = course and preference
            description:
            (*
               TODO
            *);
            end CoursePreference;
               (***Atomic***)
                  object course = string;
                  object preference = number;
      
            object TimePreference = day and preference
            description:
            (*
               TODO
            *);
            end TimePreference;
               (***Atomic***)
                  object day = string;
                  (*NOTE: "preference" defined above*)

   object CourseDB = Course*;
      object Course = name and courseNumber and wtu and classType and maxEnrollment
         and sectionNumber and LabPairing and RequiredEquipment
      description:
      (*
         TODO
      *);
      end Course;
         (***Atomic***)
            object name = string;
            object courseNumber = string;
            (*NOTE: wtu has already been defined above*)
            object classType = string;
            object maxEnrollment = number;
            object sectionNumber = number;

         (***Objects***)
            object LabPairing = courseNumber and name
            description:
            (*
               TODO
            *);
            end LabPairing;
            (*NOTE: This object's atomic variables are defined above*)

            object RequiredEquipment = smartRoom and overhead and laptopConnectivity
            description:
            (*
               TODO
            *);
            end RequiredEquipment;
               (***Atomic***)
                  object smartRoom = boolean;
                  object overhead = boolean;
                  object laptopConnectivity = boolean;
end Database;