I need to develop a task scheduler.
The fundamental idea is that there are high, low an medium-priority tasks. Every day there will be an allocation of a given number of high, medium and low tasks.
Key things are:
1) User may not do a task on a specific day. There must be a mechanism to signal to the scheduler that a task has been done, so that it can be rescheduled for the next available time slot.
2) The 'plan' must be persistent, so that one can close the program, open it 4 days later and the planner will rebuild the plan to match what has / hasn't taken place.
So the class should be Serializable, occupy as little space as possible when serialized, and implement at a minimum a Set<Task> getTasksForDay(Date day) method. The Task class should be considered completely opaque.
In order to get priorities for tasks and the task list, a TaskPrioritizer class will be provided by me, which provides a SortedSet<Task> getTaskList(Priority) where Priority can be [login to view URL], .MEDIUM or .LOW. The lists of tasks can be assumed to stay the same across sessions.