org.eclipse.mylar.tasks.ui
Class RepositorySynchronizationManager

java.lang.Object
  extended by org.eclipse.mylar.tasks.ui.RepositorySynchronizationManager

public class RepositorySynchronizationManager
extends java.lang.Object

Encapsulates synchronization policy TODO: move into core?

Author:
Mik Kersten, Rob Elves

Nested Class Summary
private  class RepositorySynchronizationManager.GetChangedTasksJob
           
private static class RepositorySynchronizationManager.MutexRule
           
private static class RepositorySynchronizationManager.RepositoryMutexRule
           
 
Field Summary
protected  boolean forceSyncExecForTesting
           
private  RepositorySynchronizationManager.MutexRule queryRule
           
private  RepositorySynchronizationManager.MutexRule taskRule
           
private  boolean updateLocalCopy
           
 
Constructor Summary
RepositorySynchronizationManager()
           
 
Method Summary
 boolean checkHasIncoming(AbstractRepositoryTask repositoryTask, RepositoryTaskData newData)
          public for testing purposes
protected  void removeOfflineTaskData(RepositoryTaskData bug)
          non-final for testing purposes
 void setForceSyncExec(boolean forceSyncExec)
          For testing
 void setTaskRead(AbstractRepositoryTask repositoryTask, boolean read)
           
 org.eclipse.core.runtime.jobs.Job synchronize(AbstractRepositoryConnector connector, AbstractRepositoryQuery repositoryQuery, org.eclipse.core.runtime.jobs.IJobChangeListener listener)
          For synchronizing a single query.
 org.eclipse.core.runtime.jobs.Job synchronize(AbstractRepositoryConnector connector, AbstractRepositoryTask repositoryTask, boolean forceSynch, org.eclipse.core.runtime.jobs.IJobChangeListener listener)
          Synchronize a single task.
 org.eclipse.core.runtime.jobs.Job synchronize(AbstractRepositoryConnector connector, java.util.Set<AbstractRepositoryQuery> repositoryQueries, org.eclipse.core.runtime.jobs.IJobChangeListener listener, int priority, long delay, boolean syncTasks)
           
 org.eclipse.core.runtime.jobs.Job synchronize(AbstractRepositoryConnector connector, java.util.Set<AbstractRepositoryTask> repositoryTasks, boolean forceSynch, org.eclipse.core.runtime.jobs.IJobChangeListener listener)
           
 void synchronizeChanged(AbstractRepositoryConnector connector, TaskRepository repository)
          Synchronizes only those tasks that have changed since the last time the given repository was synchronized.
 boolean updateOfflineState(AbstractRepositoryTask repositoryTask, RepositoryTaskData newTaskData, boolean forceSync)
          Precondition: offline file is removed upon submit to repository resulting in a synchronized state
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

updateLocalCopy

private boolean updateLocalCopy

taskRule

private final RepositorySynchronizationManager.MutexRule taskRule

queryRule

private final RepositorySynchronizationManager.MutexRule queryRule

forceSyncExecForTesting

protected boolean forceSyncExecForTesting
Constructor Detail

RepositorySynchronizationManager

public RepositorySynchronizationManager()
Method Detail

synchronize

public final org.eclipse.core.runtime.jobs.Job synchronize(AbstractRepositoryConnector connector,
                                                           AbstractRepositoryTask repositoryTask,
                                                           boolean forceSynch,
                                                           org.eclipse.core.runtime.jobs.IJobChangeListener listener)
Synchronize a single task. Note that if you have a collection of tasks to synchronize with this connector then you should call synchronize(Set repositoryTasks, ...)

Parameters:
listener - can be null

synchronize

public final org.eclipse.core.runtime.jobs.Job synchronize(AbstractRepositoryConnector connector,
                                                           java.util.Set<AbstractRepositoryTask> repositoryTasks,
                                                           boolean forceSynch,
                                                           org.eclipse.core.runtime.jobs.IJobChangeListener listener)
Parameters:
listener - can be null

synchronize

public final org.eclipse.core.runtime.jobs.Job synchronize(AbstractRepositoryConnector connector,
                                                           AbstractRepositoryQuery repositoryQuery,
                                                           org.eclipse.core.runtime.jobs.IJobChangeListener listener)
For synchronizing a single query. Use synchronize(Set, IJobChangeListener) if synchronizing multiple queries at a time.


synchronize

public final org.eclipse.core.runtime.jobs.Job synchronize(AbstractRepositoryConnector connector,
                                                           java.util.Set<AbstractRepositoryQuery> repositoryQueries,
                                                           org.eclipse.core.runtime.jobs.IJobChangeListener listener,
                                                           int priority,
                                                           long delay,
                                                           boolean syncTasks)

synchronizeChanged

public final void synchronizeChanged(AbstractRepositoryConnector connector,
                                     TaskRepository repository)
Synchronizes only those tasks that have changed since the last time the given repository was synchronized. Calls to this method update TaskRepository.syncTime.


updateOfflineState

public boolean updateOfflineState(AbstractRepositoryTask repositoryTask,
                                  RepositoryTaskData newTaskData,
                                  boolean forceSync)
Precondition: offline file is removed upon submit to repository resulting in a synchronized state

Returns:
true if call results in change of syc state

checkHasIncoming

public boolean checkHasIncoming(AbstractRepositoryTask repositoryTask,
                                RepositoryTaskData newData)
public for testing purposes


removeOfflineTaskData

protected void removeOfflineTaskData(RepositoryTaskData bug)
non-final for testing purposes


setTaskRead

public void setTaskRead(AbstractRepositoryTask repositoryTask,
                        boolean read)
Parameters:
repositoryTask - - repository task to mark as read or unread
read - - true to mark as read, false to mark as unread

setForceSyncExec

public final void setForceSyncExec(boolean forceSyncExec)
For testing