package caltool.model.schedule; import caltool.model.caldb.*; /**** * * Like an Appointment, a Task adds a number of components to a generic * ScheduledItem. A Task differs from an Appointment as follows: (1) * Appointments have Duration and Location, Tasks do not. (2) For * Appointments, the priority is either 'Must' or 'Optional'; for Tasks, * priority is a positive integer indicating the relative priority of a task * compared to other tasks. (3) Tasks have a CompletedFlag and CompletionDate * components; Appointments do not. * */ public class Task extends ScheduledItem { /** * Construct an empty task. */ public Task() { } /** * Construct a task with the given field values. Generate and store the * unique key for this task. */ public Task(String title, Date startOrDueDate, Date endDate, Category category, Time dueTime, RecurringInfo recurringInfo, Security security, int priority, RemindInfo remindInfo, String details, boolean completedFlag, Date completionDate) { this.title = title; this.startOrDueDate = startOrDueDate; this.endDate = endDate; this.category = category; this.dueTime = dueTime; this.recurringInfo = recurringInfo; this.security = security; this.priority = priority; this.remindInfo = remindInfo; this.details = details; this.completedFlag = completedFlag; this.completionDate = completionDate; itemKey = new ItemKey(startOrDueDate, dueTime, null, title, priority); } /*-* * Process methods */ /** * Return the unique key for this, consisting of date, time, title, and * priority. Duration is unsed. */ public ItemKey getKey() { return itemKey; } /*-* * Derived data fields */ /** Due time of the task */ protected Time dueTime; /** Defines if and how an task recurs */ protected RecurringInfo recurringInfo; /** Indicates who can see that the task is scheduled */ protected Security security; /** Defines the relative priority of this task compared to others */ protected int priority; /** Indicates if and how user is reminded */ protected RemindInfo remindInfo; /** Free-form text describing any specific appointment details */ protected String details; /** CompletedFlag is true if a Task has been completed, false if not. The system does not enforce any specific constraints on the setting of a task's CompletedFlag. That is, the user may set or clear it at will. Hence the meaning of the CompletedFlag is up to user interpretation, particularly for recurring tasks. */ protected boolean completedFlag; /** CompletionDate is date on which as task is completed. The system does not enforce any specific constraints on the setting of a task's CompletionDate (other than it being a legal Date value). The meaning of the CompletionDate value is up to user interpretation, particularly for recurring tasks. */ protected Date completionDate; /*-* * Process data field */ /** The uniqe key for storing this in the UserCalendar items list */ protected ItemKey itemKey; }