org.eclipse.mylar.tasks.ui
Class TaskListManager

java.lang.Object
  extended by org.eclipse.mylar.tasks.ui.TaskListManager
All Implemented Interfaces:
java.util.EventListener, org.eclipse.jface.util.IPropertyChangeListener

public class TaskListManager
extends java.lang.Object
implements org.eclipse.jface.util.IPropertyChangeListener

TODO: clean-up

Author:
Mik Kersten, Rob Elves (task activity)

Nested Class Summary
private  class TaskListManager.RolloverCheck
           
 
Field Summary
private  DateRangeContainer activityFuture
           
private  java.util.List<ITaskActivityListener> activityListeners
           
private  DateRangeContainer activityNextWeek
           
private  DateRangeContainer activityPast
           
private  DateRangeContainer activityPreviousWeek
           
private  DateRangeContainer activityThisWeek
           
static java.lang.String ARCHIVE_CATEGORY_DESCRIPTION
           
private  org.eclipse.mylar.context.core.IMylarContextListener CONTEXT_LISTENER
           
private  java.lang.String currentHandle
           
private  ITask currentTask
           
private  java.util.Calendar currentTaskEnd
           
private  java.util.Calendar currentTaskStart
           
private  java.util.ArrayList<DateRangeContainer> dateRangeContainers
           
private static java.lang.String DESCRIPTION_FUTURE
           
private static java.lang.String DESCRIPTION_NEXT_WEEK
           
private static java.lang.String DESCRIPTION_PAST
           
private static java.lang.String DESCRIPTION_PREVIOUS_WEEK
           
private static java.lang.String DESCRIPTION_THIS_WEEK
           
private  int endDay
           
static java.lang.String[] ESTIMATE_TIMES
           
private  boolean isInactive
           
private static long MINUTE
           
private static int NUM_WEEKS_FUTURE_END
           
private static int NUM_WEEKS_FUTURE_START
           
private static int NUM_WEEKS_NEXT
           
private static int NUM_WEEKS_PAST_END
           
private static int NUM_WEEKS_PAST_START
           
private static int NUM_WEEKS_PREVIOUS
           
private static long ROLLOVER_DELAY
           
private  int scheduledEndHour
           
private static long SECOND
           
private  int startDay
           
private  long startInactive
           
 java.util.Date startTime
          public for testing
private  TaskActivationHistory taskActivityHistory
           
private  boolean taskActivityHistoryInitialized
           
private  java.util.Map<ITask,java.lang.Long> taskElapsedTimeMap
           
private  TaskList taskList
           
private  java.io.File taskListFile
           
private  boolean taskListInitialized
           
private  TaskListWriter taskListWriter
           
private  java.util.Set<ITask> tasksWithReminders
           
private  java.util.Timer timer
           
private  long totalInactive
           
 
Constructor Summary
TaskListManager(TaskListWriter taskListWriter, java.io.File file)
           
 
Method Summary
 void activateTask(ITask task)
           
 void addActivityListener(ITaskActivityListener listener)
           
 void deactivateAllTasks()
           
 void deactivateTask(ITask task)
           
 void dispose()
           
 java.lang.String genUniqueTaskHandle()
          Every call to this method generates a unique handle, subsequent calls will have incremented task numbers
 DateRangeContainer getActivityFuture()
          public for testing *
 DateRangeContainer getActivityNextWeek()
          public for testing *
 DateRangeContainer getActivityPast()
          public for testing *
 DateRangeContainer getActivityPrevious()
          public for testing *
 DateRangeContainer getActivityThisWeek()
          public for testing *
 java.lang.Object[] getDateRanges()
           
 long getElapsedTime(ITask task)
          total elapsed time based on activation history
 java.util.Set<ITask> getScheduledForThisWeek()
           
 TaskActivationHistory getTaskActivationHistory()
           
 ITask getTaskForElement(ITaskListElement element, boolean force)
           
 TaskList getTaskList()
           
 java.io.File getTaskListFile()
           
 TaskListWriter getTaskListWriter()
           
 void init()
           
 void initActivityHistory()
           
 boolean isActiveThisWeek(ITask task)
           
 boolean isCompletedToday(ITask task)
           
 boolean isScheduledAfterThisWeek(ITask task)
           
 boolean isScheduledForLater(ITask task)
           
 boolean isScheduledForThisWeek(ITask task)
           
 boolean isScheduledForToday(ITask task)
           
 boolean isTaskListInitialized()
           
private  void parseFutureReminders()
           
 void parseInteractionEvent(org.eclipse.mylar.context.core.InteractionEvent event)
          public for testing *
 void parseTaskActivityInteractionHistory()
           
 void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event)
           
 boolean readExistingOrCreateNewList()
           
 void refactorRepositoryUrl(java.lang.String oldUrl, java.lang.String newUrl)
           
 void removeActivityListener(ITaskActivityListener listener)
           
private  void resetActivity()
           
 void resetAndRollOver()
          public for testing
 TaskList resetTaskList()
           
 void saveTaskList()
          Will not save an empty task list to avoid losing data on bad startup.
 void setScheduledFor(ITask task, java.util.Date reminderDate)
          TODO: Need to migrate to use of this method for setting of reminders
 java.util.Calendar setScheduledToday(java.util.Calendar calendar)
          Will schedule for today if past work-day's end.
 java.util.Calendar setSecheduledIn(java.util.Calendar calendar, int days)
           
 void setTaskListFile(java.io.File file)
           
private  void setupCalendarRanges()
           
private  void snapToEndOfWeek(java.util.Calendar cal)
           
 void snapToNextDay(java.util.Calendar cal)
           
private  void snapToStartOfWeek(java.util.Calendar cal)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SECOND

private static final long SECOND
See Also:
Constant Field Values

MINUTE

private static final long MINUTE
See Also:
Constant Field Values

ROLLOVER_DELAY

private static final long ROLLOVER_DELAY
See Also:
Constant Field Values

NUM_WEEKS_PREVIOUS

private static final int NUM_WEEKS_PREVIOUS
See Also:
Constant Field Values

NUM_WEEKS_NEXT

private static final int NUM_WEEKS_NEXT
See Also:
Constant Field Values

NUM_WEEKS_FUTURE_START

private static final int NUM_WEEKS_FUTURE_START
See Also:
Constant Field Values

NUM_WEEKS_FUTURE_END

private static final int NUM_WEEKS_FUTURE_END
See Also:
Constant Field Values

NUM_WEEKS_PAST_START

private static final int NUM_WEEKS_PAST_START
See Also:
Constant Field Values

NUM_WEEKS_PAST_END

private static final int NUM_WEEKS_PAST_END
See Also:
Constant Field Values

ARCHIVE_CATEGORY_DESCRIPTION

public static final java.lang.String ARCHIVE_CATEGORY_DESCRIPTION
See Also:
Constant Field Values

DESCRIPTION_THIS_WEEK

private static final java.lang.String DESCRIPTION_THIS_WEEK
See Also:
Constant Field Values

DESCRIPTION_PREVIOUS_WEEK

private static final java.lang.String DESCRIPTION_PREVIOUS_WEEK
See Also:
Constant Field Values

DESCRIPTION_NEXT_WEEK

private static final java.lang.String DESCRIPTION_NEXT_WEEK
See Also:
Constant Field Values

DESCRIPTION_FUTURE

private static final java.lang.String DESCRIPTION_FUTURE
See Also:
Constant Field Values

DESCRIPTION_PAST

private static final java.lang.String DESCRIPTION_PAST
See Also:
Constant Field Values

ESTIMATE_TIMES

public static final java.lang.String[] ESTIMATE_TIMES

activityThisWeek

private DateRangeContainer activityThisWeek

activityNextWeek

private DateRangeContainer activityNextWeek

activityPreviousWeek

private DateRangeContainer activityPreviousWeek

activityFuture

private DateRangeContainer activityFuture

activityPast

private DateRangeContainer activityPast

isInactive

private boolean isInactive

startInactive

private long startInactive

totalInactive

private long totalInactive

dateRangeContainers

private java.util.ArrayList<DateRangeContainer> dateRangeContainers

tasksWithReminders

private java.util.Set<ITask> tasksWithReminders

currentTask

private ITask currentTask

currentHandle

private java.lang.String currentHandle

currentTaskStart

private java.util.Calendar currentTaskStart

currentTaskEnd

private java.util.Calendar currentTaskEnd

taskElapsedTimeMap

private java.util.Map<ITask,java.lang.Long> taskElapsedTimeMap

activityListeners

private java.util.List<ITaskActivityListener> activityListeners

taskListWriter

private TaskListWriter taskListWriter

taskListFile

private java.io.File taskListFile

taskList

private TaskList taskList

taskActivityHistory

private TaskActivationHistory taskActivityHistory

taskListInitialized

private boolean taskListInitialized

taskActivityHistoryInitialized

private boolean taskActivityHistoryInitialized

startDay

private int startDay

endDay

private int endDay

scheduledEndHour

private int scheduledEndHour

timer

private java.util.Timer timer

startTime

public java.util.Date startTime
public for testing


CONTEXT_LISTENER

private final org.eclipse.mylar.context.core.IMylarContextListener CONTEXT_LISTENER
Constructor Detail

TaskListManager

public TaskListManager(TaskListWriter taskListWriter,
                       java.io.File file)
Method Detail

init

public void init()

dispose

public void dispose()

resetTaskList

public TaskList resetTaskList()

resetActivity

private void resetActivity()

parseTaskActivityInteractionHistory

public void parseTaskActivityInteractionHistory()

parseFutureReminders

private void parseFutureReminders()

parseInteractionEvent

public void parseInteractionEvent(org.eclipse.mylar.context.core.InteractionEvent event)
public for testing *


getActivityThisWeek

public DateRangeContainer getActivityThisWeek()
public for testing *


getActivityPast

public DateRangeContainer getActivityPast()
public for testing *


getActivityFuture

public DateRangeContainer getActivityFuture()
public for testing *


getActivityNextWeek

public DateRangeContainer getActivityNextWeek()
public for testing *


getActivityPrevious

public DateRangeContainer getActivityPrevious()
public for testing *


getElapsedTime

public long getElapsedTime(ITask task)
total elapsed time based on activation history


setupCalendarRanges

private void setupCalendarRanges()

snapToNextDay

public void snapToNextDay(java.util.Calendar cal)

snapToStartOfWeek

private void snapToStartOfWeek(java.util.Calendar cal)

snapToEndOfWeek

private void snapToEndOfWeek(java.util.Calendar cal)

setSecheduledIn

public java.util.Calendar setSecheduledIn(java.util.Calendar calendar,
                                          int days)

setScheduledToday

public java.util.Calendar setScheduledToday(java.util.Calendar calendar)
Will schedule for today if past work-day's end.


getDateRanges

public java.lang.Object[] getDateRanges()

genUniqueTaskHandle

public java.lang.String genUniqueTaskHandle()
Every call to this method generates a unique handle, subsequent calls will have incremented task numbers


refactorRepositoryUrl

public void refactorRepositoryUrl(java.lang.String oldUrl,
                                  java.lang.String newUrl)

readExistingOrCreateNewList

public boolean readExistingOrCreateNewList()

initActivityHistory

public void initActivityHistory()

saveTaskList

public void saveTaskList()
Will not save an empty task list to avoid losing data on bad startup.


getTaskList

public TaskList getTaskList()

addActivityListener

public void addActivityListener(ITaskActivityListener listener)

removeActivityListener

public void removeActivityListener(ITaskActivityListener listener)

activateTask

public void activateTask(ITask task)

deactivateAllTasks

public void deactivateAllTasks()

deactivateTask

public void deactivateTask(ITask task)

setTaskListFile

public void setTaskListFile(java.io.File file)

isTaskListInitialized

public boolean isTaskListInitialized()

getTaskListWriter

public TaskListWriter getTaskListWriter()

getTaskListFile

public java.io.File getTaskListFile()

isActiveThisWeek

public boolean isActiveThisWeek(ITask task)

isCompletedToday

public boolean isCompletedToday(ITask task)

isScheduledAfterThisWeek

public boolean isScheduledAfterThisWeek(ITask task)

isScheduledForLater

public boolean isScheduledForLater(ITask task)

isScheduledForThisWeek

public boolean isScheduledForThisWeek(ITask task)

isScheduledForToday

public boolean isScheduledForToday(ITask task)

setScheduledFor

public void setScheduledFor(ITask task,
                            java.util.Date reminderDate)
TODO: Need to migrate to use of this method for setting of reminders


propertyChange

public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event)
Specified by:
propertyChange in interface org.eclipse.jface.util.IPropertyChangeListener

resetAndRollOver

public void resetAndRollOver()
public for testing


getTaskActivationHistory

public TaskActivationHistory getTaskActivationHistory()

getScheduledForThisWeek

public java.util.Set<ITask> getScheduledForThisWeek()

getTaskForElement

public ITask getTaskForElement(ITaskListElement element,
                               boolean force)
Parameters:
element - tasklist element to retrieve a task for currently will work for (ITask, AbstractQueryHit)
force - - if a query hit is passed you can either force construction of the task or not (if not and no task, null is returned) TODO: Move into TaskList?