(****** ****** OBJECTS ******) object CalDB components: UserCal*; operations: MaintainDB; description: (* The CalendarDB is the repository for all of the calendars in the Calendar system. Every user, from a normal user up to the superuser has an individual calendar. *); end CalDB; object UserCal components: Year*; operations: ; description: (* A calendar for a user can be broken down into a list of years. *); end UserCal; object Year components: Month*; operations: ; description: (* As with any calendar, a Year can be broken into twelve months. *); end Year; object Month components: Week*; operations: ; description: (* Months are broken down into days. *); end Month; object Week components: Day*; operations: ; description: (* Weeks are made up of seven days. *); end Week; object Day components: ScheduledItem*; operations: ; description: (* The individually scheduled events are stored at the Day level. A Day contains a list of all of the ScheduledItems planned for the day. *); end Day; object ScheduledItem components: StartTime, EndTime, Summary, Descrip, AlarmInfo, SchedDetails; operations: ; description: (* A ScheduledItem contains all of the information pertaining to an individual appointment scheduled in a user's calendar. The Summary is a brief title description of the ScheduledItem, and the Descrip is a much longer and more detailed decription of what is planned. By letting ScheduledItem contain AlarmInfo and SchedDetails, it is possible to adjust and customize the behavior of each event. *); end ScheduledItem; object SchedDetails components: RepeatInfo, Privacy; operations: ; description: (* SchedDetails contains other miscellaneous ScheduledItem details. RepeatInfo helps ease scheduling by allowing the user to schedule personal events daily, weekly, monthly, or yearly. Privacy is an enumerated type which shows whether the scheduled item is public, unavailable, or private. *); end SchedDetails; object RepeatInfo components: TimeValue, TimeUnit; operations: ; description: (* RepeatInfo provides a convenient way for the user to scedule personal appointments repeatedly. The TimeUnit is an enumerated type showing if the ScheduledItem is repeated daily, weekly, monthly or yearly, and the TimeValue represents how many times the user would like it repeated. *); end RepeatInfo; object Privacy description: (* Privacy is an enumerated type which determines whether the scheduled appointment is public, unavailable, or private *); end Privacy; object StartTime components: Time; operations: ; description: (* StartTime tells when the ScheduledItem or meeting begins. *); end StartTime; object EndTime components: Time; operations: ; description: (* EndTime tells when the ScheduledItem or meeting ends. *); end EndTime; object Time components: Hour, Minutes; operations: ; description: (* Time is made up of an Hour and Minutes. *); end Time; object Hour = number; object Minutes = number; object Summary = string; object Descrip = string; object TimeValue = number; object Active = boolean; object TimeUnit description: (* TimeUnit is an enumerated type which determines whether the TimeValue is in minutes, hours, or days. *); end TimeUnit; object AlarmType components: TimeValue, TimeUnit, Active; operations: ; description: (* AlarmType contains a time value which is a number representing how many time units before an alarm occurs, where a time unit is an enumerated type representing minutes, hours, days, etc. *); end AlarmType; object AlarmInfo components: BeepAlarm:AlarmType, FlashAlarm:AlarmType, PopupAlarm:AlarmType, MailAlarm:AlarmType ; operations: ; description: (* AlarmInfo contains the various alarms which can be set for each scheduled event in a user calendar. *); end AlarmInfo; object UserSettings components: AlarmInfo, Privacy, OpeningView:TimeUnit, DayRange; operations: ; description: (* UserSettings contains all of the preferences for the user's personal calendar *); end UserSettings; object DayRange components: StartTime, EndTime; operations: ; description: (* DayRange determines what range of hours appear by default when the user = in the day view of his/her calendar. *); end DayRange; (* **** User and UserDB do not have their components defined yet **** *) object User components: Name, UserSettings, Id, GroupList, Mailbox, UserCal, Privileges; operations: ; description: (**); end User; object UserDB components: User*; operations: ; description: (**); end UserDB; object Options components: DayBoundaries, HourDisplay, DefaultView, DefCal (*...*) ; operations: ; description: (**); end Options;