Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrelves2008-05-15 00:40:46 +0000
committerrelves2008-05-15 00:40:46 +0000
commit155aaf4e1d2c0b17d4a57c2dd049a5db976a90bc (patch)
tree58f409328e7cae897943ea0edcbf4ed1d94f5eda /org.eclipse.mylyn.tasks.core/src/org/eclipse
parent3c026835f94a048877ab4d79704498db32271cff (diff)
downloadorg.eclipse.mylyn.tasks-155aaf4e1d2c0b17d4a57c2dd049a5db976a90bc.tar.gz
org.eclipse.mylyn.tasks-155aaf4e1d2c0b17d4a57c2dd049a5db976a90bc.tar.xz
org.eclipse.mylyn.tasks-155aaf4e1d2c0b17d4a57c2dd049a5db976a90bc.zip
NEW - bug 232180: stop unnecessary saves of task list and related information upon startup
https://bugs.eclipse.org/bugs/show_bug.cgi?id=232180
Diffstat (limited to 'org.eclipse.mylyn.tasks.core/src/org/eclipse')
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ITaskList.java6
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryExternalizationParticipant.java1
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java4
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskList.java70
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java22
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/TaskListExternalizationParticipant.java11
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java56
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java17
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryQuery.java1
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskContainerDelta.java60
10 files changed, 135 insertions, 113 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ITaskList.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ITaskList.java
index 37e528116..e51216104 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ITaskList.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/ITaskList.java
@@ -11,6 +11,7 @@ package org.eclipse.mylyn.internal.tasks.core;
import java.util.Set;
import org.eclipse.mylyn.tasks.core.ITask;
+import org.eclipse.mylyn.tasks.core.ITaskElement;
import org.eclipse.mylyn.tasks.core.ITaskListChangeListener;
/**
@@ -66,10 +67,9 @@ public interface ITaskList {
/**
* @param task
- * @param content
- * true if the content for the task (e.g. repository task data) has changed
+ * list element
*/
- public abstract void notifyTaskChanged(ITask task, boolean content);
+ public abstract void notifyElementChanged(ITaskElement element);
public abstract void removeChangeListener(ITaskListChangeListener listener);
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryExternalizationParticipant.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryExternalizationParticipant.java
index ef1bf9b15..5d9a3519a 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryExternalizationParticipant.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryExternalizationParticipant.java
@@ -61,6 +61,7 @@ public class RepositoryExternalizationParticipant extends AbstractExternalizatio
switch (context.getKind()) {
case SAVE:
+ System.err.println(">>> save repositories");
if (!takeSnapshot(repositoriesFile)) {
StatusHandler.fail(new Status(IStatus.WARNING, ITasksCoreConstants.ID_PLUGIN,
"Task List snapshot failed"));
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java
index b82264a47..42296f5ec 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivityManager.java
@@ -518,7 +518,7 @@ public class TaskActivityManager implements ITaskActivityManager {
removeScheduledTask(task);
addScheduledTask(task);
}
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
}
public void setDueDate(ITask task, Date dueDate) {
@@ -529,7 +529,7 @@ public class TaskActivityManager implements ITaskActivityManager {
removeDueTask(task);
addDueTask(task);
}
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
}
/**
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskList.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskList.java
index 5b40afe2b..0188c42da 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskList.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskList.java
@@ -94,7 +94,7 @@ public class TaskList implements ISchedulingRule, ITaskList {
if (orphans != null) {
task.addParentContainer(orphans);
orphans.internalAddChild(task);
- delta.add(new TaskContainerDelta(orphans, TaskContainerDelta.Kind.CHANGED));
+ delta.add(new TaskContainerDelta(task, orphans, TaskContainerDelta.Kind.ADDED));
}
}
@@ -158,8 +158,7 @@ public class TaskList implements ISchedulingRule, ITaskList {
(task).addParentContainer(container);
container.internalAddChild(task);
- delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.CHANGED));
- delta.add(new TaskContainerDelta(container, TaskContainerDelta.Kind.CHANGED));
+ delta.add(new TaskContainerDelta(task, container, TaskContainerDelta.Kind.ADDED));
} finally {
unlock();
}
@@ -231,10 +230,15 @@ public class TaskList implements ISchedulingRule, ITaskList {
}
}
- private void fireDelta(HashSet<TaskContainerDelta> deltaToFire) {
+ private void fireDelta(HashSet<TaskContainerDelta> deltasToFire) {
if (readComplete) {
for (ITaskListChangeListener listener : changeListeners) {
- listener.containersChanged(deltaToFire);
+ try {
+ listener.containersChanged(Collections.unmodifiableSet(deltasToFire));
+ } catch (Throwable t) {
+ StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN,
+ "Notification failed for: " + listener, t));
+ }
}
}
}
@@ -443,45 +447,32 @@ public class TaskList implements ISchedulingRule, ITaskList {
return rule instanceof TaskList || rule instanceof ITaskElement;
}
- public void notifyContainersUpdated(Set<? extends AbstractTaskContainer> containers) {
- HashSet<TaskContainerDelta> containersUpdatedDelta = new HashSet<TaskContainerDelta>();
- if (containers == null) {
- containersUpdatedDelta.add(new TaskContainerDelta(null, TaskContainerDelta.Kind.ROOT));
+ public void notifyElementsChanged(Set<? extends ITaskElement> elements) {
+ HashSet<TaskContainerDelta> deltas = new HashSet<TaskContainerDelta>();
+ if (elements == null) {
+ deltas.add(new TaskContainerDelta(null, TaskContainerDelta.Kind.ROOT));
} else {
- for (AbstractTaskContainer abstractTaskContainer : containers) {
- containersUpdatedDelta.add(new TaskContainerDelta(abstractTaskContainer,
- TaskContainerDelta.Kind.CHANGED));
+ for (ITaskElement element : elements) {
+ deltas.add(new TaskContainerDelta(element, TaskContainerDelta.Kind.CONTENT));
}
}
- for (ITaskListChangeListener listener : changeListeners) {
- try {
- listener.containersChanged(Collections.unmodifiableSet(containersUpdatedDelta));
- } catch (Throwable t) {
- StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, "Notification failed for: "
- + listener, t));
- }
- }
+ fireDelta(deltas);
}
- public void notifyTaskChanged(ITask task, boolean content) {
+ public void notifySyncStateChanged(Set<? extends AbstractTaskContainer> containers) {
HashSet<TaskContainerDelta> taskChangeDeltas = new HashSet<TaskContainerDelta>();
- TaskContainerDelta.Kind kind;
- if (content) {
- kind = TaskContainerDelta.Kind.CONTENT;
- } else {
- kind = TaskContainerDelta.Kind.CHANGED;
+ for (AbstractTaskContainer abstractTaskContainer : containers) {
+ TaskContainerDelta delta = new TaskContainerDelta(abstractTaskContainer, TaskContainerDelta.Kind.CONTENT);
+ delta.setTransient(true);
+ taskChangeDeltas.add(delta);
}
- taskChangeDeltas.add(new TaskContainerDelta(task, kind));
- for (ITaskListChangeListener listener : changeListeners) {
- try {
- listener.containersChanged(Collections.unmodifiableSet(taskChangeDeltas));
- } catch (Throwable t) {
- StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, "Notification failed for: "
- + listener, t));
- }
- }
+ fireDelta(taskChangeDeltas);
+ }
+
+ public void notifyElementChanged(ITaskElement element) {
+ notifyElementsChanged(Collections.singleton(element));
}
public void refactorRepositoryUrl(String oldRepositoryUrl, String newRepositoryUrl) {
@@ -505,7 +496,7 @@ public class TaskList implements ISchedulingRule, ITaskList {
for (RepositoryQuery query : queries.values()) {
if (query.getRepositoryUrl().equals(oldRepositoryUrl)) {
query.setRepositoryUrl(newRepositoryUrl);
- delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.CHANGED));
+ delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.CONTENT));
}
}
@@ -516,7 +507,7 @@ public class TaskList implements ISchedulingRule, ITaskList {
orphans.setRepositoryUrl(newRepositoryUrl);
repositoryOrphansMap.put(newRepositoryUrl, orphans);
//categories.put(orphans.getHandleIdentifier(), orphans);
- delta.add(new TaskContainerDelta(orphans, TaskContainerDelta.Kind.CHANGED));
+ delta.add(new TaskContainerDelta(orphans, TaskContainerDelta.Kind.CONTENT));
}
}
} finally {
@@ -558,15 +549,14 @@ public class TaskList implements ISchedulingRule, ITaskList {
container.internalRemoveChild(task);
((AbstractTask) task).removeParentContainer(container);
- delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.CHANGED));
- delta.add(new TaskContainerDelta(container, TaskContainerDelta.Kind.CHANGED));
+ delta.add(new TaskContainerDelta(task, container, TaskContainerDelta.Kind.REMOVED));
}
private void removeOrphan(AbstractTask task, Set<TaskContainerDelta> delta) {
AbstractTaskContainer orphans = getUnmatchedContainer(task.getRepositoryUrl());
if (orphans != null) {
if (orphans.internalRemoveChild(task)) {
- delta.add(new TaskContainerDelta(orphans, TaskContainerDelta.Kind.CHANGED));
+ delta.add(new TaskContainerDelta(task, orphans, TaskContainerDelta.Kind.REMOVED));
task.removeParentContainer(orphans);
}
}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java
index 433105a59..0e76840d5 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java
@@ -147,7 +147,7 @@ public class TaskDataManager implements ITaskDataManager {
result[0] = state;
}
});
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
return result[0];
}
@@ -163,7 +163,7 @@ public class TaskDataManager implements ITaskDataManager {
taskList.addTask(task);
}
});
- taskList.notifyTaskChanged(task, true);
+ taskList.notifyElementChanged(task);
}
public void putUpdatedTaskData(final ITask itask, final TaskData taskData, boolean user) throws CoreException {
@@ -206,7 +206,7 @@ public class TaskDataManager implements ITaskDataManager {
task.setSynchronizing(false);
}
});
- taskList.notifyTaskChanged(task, true);
+ taskList.notifyElementChanged(task);
}
}
@@ -249,14 +249,14 @@ public class TaskDataManager implements ITaskDataManager {
}
}
});
- taskList.notifyTaskChanged(task, true);
+ taskList.notifyElementChanged(task);
}
@Deprecated
public void discardOutgoing(AbstractTask repositoryTask) {
taskDataStorageManager.discardEdits(repositoryTask.getRepositoryUrl(), repositoryTask.getTaskId());
repositoryTask.setSynchronizationState(SynchronizationState.SYNCHRONIZED);
- taskList.notifyTaskChanged(repositoryTask, true);
+ taskList.notifyElementChanged(repositoryTask);
}
private File findFile(ITask task, String kind) {
@@ -362,7 +362,7 @@ public class TaskDataManager implements ITaskDataManager {
task.setSubmitting(false);
}
});
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
}
/**
@@ -444,7 +444,7 @@ public class TaskDataManager implements ITaskDataManager {
repositoryTask.setSynchronizationState(SynchronizationState.OUTGOING);
taskDataStorageManager.saveEdits(repositoryTask.getRepositoryUrl(), repositoryTask.getTaskId(),
Collections.unmodifiableSet(modifiedAttributes));
- taskList.notifyTaskChanged(repositoryTask, false);
+ taskList.notifyElementChanged(repositoryTask);
}
public void setDataPath(String dataPath) {
@@ -495,7 +495,7 @@ public class TaskDataManager implements ITaskDataManager {
StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN,
"Unexpected error while marking task read", e));
}
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
}
@Deprecated
@@ -508,13 +508,13 @@ public class TaskDataManager implements ITaskDataManager {
taskDataStorageManager.setOldTaskData(taskData);
}
task.setSynchronizationState(SynchronizationState.SYNCHRONIZED);
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
} else if (read && task.getSynchronizationState().equals(SynchronizationState.CONFLICT)) {
if (taskData != null && taskData.getLastModified() != null) {
task.setLastReadTimeStamp(taskData.getLastModified());
}
task.setSynchronizationState(SynchronizationState.OUTGOING);
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
} else if (read && task.getSynchronizationState().equals(SynchronizationState.SYNCHRONIZED)) {
if (taskData != null && taskData.getLastModified() != null) {
task.setLastReadTimeStamp(taskData.getLastModified());
@@ -536,7 +536,7 @@ public class TaskDataManager implements ITaskDataManager {
} else if (!read && task.getSynchronizationState().equals(SynchronizationState.SYNCHRONIZED)) {
task.setSynchronizationState(SynchronizationState.INCOMING);
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
}
// for connectors that don't support task data set read date to now (bug#204741)
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/TaskListExternalizationParticipant.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/TaskListExternalizationParticipant.java
index 6ac133e71..fbe3349c0 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/TaskListExternalizationParticipant.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/TaskListExternalizationParticipant.java
@@ -140,10 +140,15 @@ public class TaskListExternalizationParticipant extends AbstractExternalizationP
}
public void containersChanged(Set<TaskContainerDelta> containers) {
- synchronized (TaskListExternalizationParticipant.this) {
- dirty = true;
+ for (TaskContainerDelta taskContainerDelta : containers) {
+ if (!taskContainerDelta.isTransient()) {
+ synchronized (TaskListExternalizationParticipant.this) {
+ dirty = true;
+ }
+ manager.requestSave();
+ return;
+ }
}
- manager.requestSave();
}
public void taskListRead() {
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java
index 97094b370..76fa41dbc 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java
@@ -196,37 +196,37 @@ public class SynchronizeQueriesJob extends SynchronizationJob {
event.setTasks(allTasks);
event.setNeedsPerformQueries(true);
- try {
- // hook into the connector for checking for changed tasks and have the connector mark tasks that need synchronization
- if (firePreSynchronization(event, new SubProgressMonitor(monitor, 20))) {
- // synchronize queries, tasks changed within query are added to set of tasks to be synchronized
- synchronizeQueries(monitor, event);
-
- // for background synchronizations all changed tasks are synchronized including the ones that are not part of a query
- if (!isUser()) {
- for (ITask task : allTasks) {
- if (task.isStale()) {
- tasksToBeSynchronized.add(task);
- ((AbstractTask) task).setSynchronizing(true);
- }
+// try {
+ // hook into the connector for checking for changed tasks and have the connector mark tasks that need synchronization
+ if (firePreSynchronization(event, new SubProgressMonitor(monitor, 20))) {
+ // synchronize queries, tasks changed within query are added to set of tasks to be synchronized
+ synchronizeQueries(monitor, event);
+
+ // for background synchronizations all changed tasks are synchronized including the ones that are not part of a query
+ if (!isUser()) {
+ for (ITask task : allTasks) {
+ if (task.isStale()) {
+ tasksToBeSynchronized.add(task);
+ ((AbstractTask) task).setSynchronizing(true);
}
}
+ }
- // synchronize tasks that were marked by the connector
- if (!tasksToBeSynchronized.isEmpty()) {
- Policy.checkCanceled(monitor);
- monitor.subTask("Synchronizing " + tasksToBeSynchronized.size() + " changed tasks");
- synchronizeTasks(new SubProgressMonitor(monitor, 40));
- } else {
- monitor.worked(40);
- }
-
- // hook into the connector for synchronization time stamp management
- firePostSynchronization(event, new SubProgressMonitor(monitor, 10));
+ // synchronize tasks that were marked by the connector
+ if (!tasksToBeSynchronized.isEmpty()) {
+ Policy.checkCanceled(monitor);
+ monitor.subTask("Synchronizing " + tasksToBeSynchronized.size() + " changed tasks");
+ synchronizeTasks(new SubProgressMonitor(monitor, 40));
+ } else {
+ monitor.worked(40);
}
- } finally {
- taskList.notifyContainersUpdated(null);
+
+ // hook into the connector for synchronization time stamp management
+ firePostSynchronization(event, new SubProgressMonitor(monitor, 10));
}
+// } finally {
+// taskList.notifyElementsChanged(null);
+// }
} finally {
Job.getJobManager().endRule(rule);
}
@@ -247,7 +247,7 @@ public class SynchronizeQueriesJob extends SynchronizationJob {
synchronizeQuery(repositoryQuery, event, new SubProgressMonitor(monitor, 20));
repositoryQuery.setSynchronizing(false);
- taskList.notifyContainersUpdated(Collections.singleton(repositoryQuery));
+ taskList.notifySyncStateChanged(Collections.singleton(repositoryQuery));
}
}
@@ -325,8 +325,8 @@ public class SynchronizeQueriesJob extends SynchronizationJob {
for (RepositoryQuery repositoryQuery : queries) {
repositoryQuery.setSynchronizationStatus(status);
repositoryQuery.setSynchronizing(false);
+ taskList.notifyElementChanged(repositoryQuery);
}
- taskList.notifyContainersUpdated(queries);
}
}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java
index 0770d04fe..680152b40 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java
@@ -86,7 +86,7 @@ public class SynchronizeTasksJob extends SynchronizationJob {
} catch (OperationCanceledException e) {
for (ITask task : tasks) {
((AbstractTask) task).setSynchronizing(false);
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
}
return Status.CANCEL_STATUS;
} catch (Exception e) {
@@ -113,7 +113,7 @@ public class SynchronizeTasksJob extends SynchronizationJob {
private void synchronizeTask(IProgressMonitor monitor, ITask task) {
monitor.subTask("Receiving task " + task.getSummary());
((AbstractTask) task).setErrorStatus(null);
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
try {
String taskId = task.getTaskId();
if (!isUser()) {
@@ -174,8 +174,8 @@ public class SynchronizeTasksJob extends SynchronizationJob {
((AbstractLegacyRepositoryConnector) connector).getLegacyTaskDataHandler().getMultiTaskData(repository,
Collections.unmodifiableSet(idToTask.keySet()), collector, monitor);
} else {
- connector.getTaskDataHandler().getMultiTaskData(repository,
- Collections.unmodifiableSet(idToTask.keySet()), collector, monitor);
+ connector.getTaskDataHandler().getMultiTaskData(repository, Collections.unmodifiableSet(idToTask.keySet()),
+ collector, monitor);
}
}
@@ -207,12 +207,7 @@ public class SynchronizeTasksJob extends SynchronizationJob {
task.setStale(false);
((AbstractTask) task).setSynchronizing(false);
- if (task.getSynchronizationState() == SynchronizationState.INCOMING
- || task.getSynchronizationState() == SynchronizationState.CONFLICT) {
- taskList.notifyTaskChanged(task, true);
- } else {
- taskList.notifyTaskChanged(task, false);
- }
+ taskList.notifyElementChanged(task);
}
private void updateFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData) {
@@ -228,7 +223,7 @@ public class SynchronizeTasksJob extends SynchronizationJob {
if (!isUser()) {
((AbstractTask) task).setSynchronizing(false);
}
- taskList.notifyTaskChanged(task, false);
+ taskList.notifyElementChanged(task);
}
}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryQuery.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryQuery.java
index 022fbf7d9..e3bb5b66a 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryQuery.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryQuery.java
@@ -8,7 +8,6 @@
package org.eclipse.mylyn.tasks.core;
-
/**
* @since 3.0
*/
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskContainerDelta.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskContainerDelta.java
index 835e7fef5..e301094ab 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskContainerDelta.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskContainerDelta.java
@@ -18,24 +18,17 @@ public final class TaskContainerDelta {
public enum Kind {
/**
- * One container added to another or to the root.
+ * One container (source) added to another (target)
*/
ADDED,
/**
- * One container removed from another or from the root.
+ * One container (source) removed from another (target)
*/
REMOVED,
/**
- * Container has changed, e.g. has new children, a task's priority or planning info. For tasks changed state
- * tends to be show in a view.
- */
- CHANGED,
-
- /**
- * The content of the container has changed, e.g. new data has been downloaded for a task from the repository.
- * For tasks content tends to be show in an editor.
+ * The internal state of the container (target) has changed, e.g. attributes, summary, priority, etc
*/
CONTENT,
@@ -45,27 +38,66 @@ public final class TaskContainerDelta {
ROOT
}
- private final ITaskElement container;
+ private final ITaskElement target;
+
+ private final ITaskElement source;
private final Kind kind;
+ private boolean isTransient;
+
/**
* @since 3.0
*/
public TaskContainerDelta(ITaskElement container, Kind kind) {
- this.container = container;
+ this.source = container;
+ this.target = null;
this.kind = kind;
}
/**
* @since 3.0
*/
- public ITaskElement getContainer() {
- return container;
+ public TaskContainerDelta(ITaskElement source, ITaskElement target, Kind kind) {
+ this.source = source;
+ this.target = target;
+ this.kind = kind;
+ }
+
+ /**
+ * The target is the container modified or the target destination for the <code>source</code> element
+ *
+ * @since 3.0
+ */
+ public ITaskElement getTarget() {
+ return target;
+ }
+
+ /**
+ * The element being acted upon in relation to the <code>target</code>
+ *
+ * @since 3.0
+ */
+ public ITaskElement getSource() {
+ return source;
}
public Kind getKind() {
return kind;
}
+ /**
+ * @since 3.0
+ */
+ public void setTransient(boolean isTransient) {
+ this.isTransient = isTransient;
+ }
+
+ /**
+ * @since 3.0
+ */
+ public boolean isTransient() {
+ return isTransient;
+ }
+
}

Back to the top