5.2. Calendar Database (caldb.rsl)

(****
 *
 * Module CalendarDB defines the major database objects of the calendar system.
 *
 * NOTE: this is work in progress.  Several objects are yet to be defined, most
 * notably Option.  Also, more complete object descriptions are needed.
 *
 *)

module CalendarDB;

  from Schedule import ScheduledItem;
  export CalendarDB;

  object CalendarDB is
    components: UserCalendars and UserDB and GroupDB and GlobalOptions;
    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 is UserCalendar*;
  object UserCalendar is UserName and UserOptions and ScheduledItem*
    description: (*
        A use calendar is named with its own set of options and a list of
        events for the user.
    *);
  end UserCalendar;

  object UserName is string;
  object UserOptions is Option*;
  object Option is ...;

  object UserDB is UserRecord*
    components: ;
    description: (*
        The UserDB is the repository of registered user information, consisting
        of a collection of UserRecords.
    *);
  end ;

  object UserRecord is
    components: UserName and UserId and EmailAddress and OtherInfo;
    description: (*
        A UserRecord contains the basic information for a registered user of
        the calendar system: UserName, unique UserId, EmailAddress, and general
        OtherInfo component for information such as home mailing address.
    *);
  end UserRecord;

  object UserId is string;
  object EmailAddress is string;
  object OtherInfo is string;

  object GroupDB is GroupRecord*
    components: ;
    description: (*
        The GroupDB is the repository of user group information, consisting of
        a collection of UserRecords.  The primary purpose of groups is for
        meeting scheduling.  Secondarily, groups can be viewed by users for
        general information purposes, i.e., what users belong to what
        organizational groups.
    *);
  end GroupRecord;

  object GroupRecord is
    components: GroupName and GroupLeader and Members;
    description: (*
        A Group consists of its GroupName, the name of its GroupLeader, and a
        list of its user Members.
    *);
  end GroupRecord;

  object GroupName is string;
  object GroupLeader is UserName;
  object Members is UserName*;

  object GlobalOptions is Option*;

end CalendarDB;





Prev: schedule.rsl | Next: view.rsl | Up: spec | Top: index