(**** * * Module CalendarDB defines the major database objects of the calendar system. * *) module CalendarDB; from Schedule import Event; export CalendarDB; object CalendarDB components: UserCalendars and UserDB and GroupDB and AdminOptions; description: (* The full calendar DB is comprised of the users' calendars, the user rolodex database, the group database, and the collection of administrative options. *); end; object UserCalendars = UserCalendar*; object UserCalendar = UserName and UserOptions and BasicCalendar; object BasicCalendar components: YearCalendar*; description: (* A basic calendar is comprised of zero or more year calendars *); end BasicCalendar; object YearCalendar components: YearDate and JanCalendar and FebCalendar and MarCalendar and AprCalendar and MayCalendar and JunCalendar and JulCalendar and AugCalendar and SepCalendar and OctCalendar and NovCalendar and DecCalendar; description: (* A year calendar is comprised of a year date (four digits, please!) and each of the standard twelve month calendars. *); end YearCalendar; object JanCalendar = DayCalendar; object FebCalendar = DayCalendar; object MarCalendar = DayCalendar; object AprCalendar = DayCalendar; object MayCalendar = DayCalendar; object JunCalendar = DayCalendar; object JulCalendar = DayCalendar; object AugCalendar = DayCalendar; object SepCalendar = DayCalendar; object OctCalendar = DayCalendar; object NovCalendar = DayCalendar; object DecCalendar = DayCalendar; object DayCalendar = StartDay and DailySchedule; object DailySchedule components: Event*; description: (* A daily scheuld is a collection of events. *); end DailySchedule; object UserDB = UserRecord*; object UserRecord components: n:Name and id:Id and age:Age and s:Sex and addr:Address; description: (* A UserRecord contains the basic information for a registered user of the calendar system: name, unique id, age, user category (student, faculty, staff, other), electronic mail address, and optional home address. *); end UserRecord; object GroupDB = GroupRecord*; object AdminOptions = AdminOption*; object AdminOption = ... ; end CalendarDB;