/*
 *
 * This file defines the major database objects of the calendar system.
 *
 * Note that this is work in progress.  Several objects are yet to be fully
 * defined.  Also, more complete object descriptions are needed.
 *
 */

import java.util.Collection;

/**
 * The full calendar DB is comprised of the users' calendars, the user
 * database, the group database, and the collection of options.  This
 * CalendarDB object can be thought of as a user workspace, comprised of the
 * objects that are available for the user to view and edit.  There is a <a
 * href="../images/uml.gif">draft UML diagram</a> of the Calendar Tool object
 * hierarchy, of which CalendarDB is the topmost object.
 */
abstract class CalendarDB {
    Collection<UserCalendar> calendars;
    UserDB udb;
    GroupDB gdb;
    GlobalOptions options;

    /**
     * Aux function used in scheduleEvent spec.
     */
    abstract UserCalendar getCurrentCalendar();
}

/**
 * A user calendar is named, with its own set of options.  It extends the
 * Calendar object, which contains the collection of scheduled items.
 */
abstract class UserCalendar extends Calendar {
    String userName;
    UserOptions options;
}