Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskList.java')
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskList.java49
1 files changed, 49 insertions, 0 deletions
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 28ba83a1a..72190ee2e 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
@@ -568,6 +568,55 @@ public class TaskList implements ITaskList, ITransferList {
}
}
+ public AbstractTask refactorTaskId(ITask oldTask, String newTaskId) {
+ TaskTask newTask = new TaskTask(oldTask.getConnectorKind(), oldTask.getRepositoryUrl(), newTaskId);
+
+ newTask.setSummary(oldTask.getSummary());
+ newTask.setPriority(oldTask.getPriority());
+ newTask.setSynchronizationState(oldTask.getSynchronizationState());
+ newTask.setCompletionDate(oldTask.getCompletionDate());
+ newTask.setCreationDate(oldTask.getCreationDate());
+ newTask.setModificationDate(oldTask.getModificationDate());
+ newTask.setTaskKind(oldTask.getTaskKind());
+ newTask.setOwnerId(oldTask.getOwnerId());
+ newTask.setOwner(oldTask.getOwner());
+ newTask.setTaskKey(oldTask.getTaskKey());
+ if (oldTask instanceof AbstractTask) {
+ AbstractTask task = (AbstractTask) oldTask;
+ newTask.setSynchronizing(task.isSynchronizing());
+ newTask.setMarkReadPending(task.isMarkReadPending());
+ newTask.setNotified(task.isNotified());
+ newTask.setChanged(task.isChanged());
+ newTask.setReminded(task.isReminded());
+ newTask.setStatus(task.getStatus());
+ newTask.setNotes(task.getNotes());
+ newTask.setEstimatedTimeHours(task.getEstimatedTimeHours());
+ addTaskContainers(task, newTask);
+ }
+ Map<String, String> attributeMap = oldTask.getAttributes();
+ for (String key : attributeMap.keySet()) {
+ newTask.setAttribute(key, attributeMap.get(key));
+ }
+
+ deleteTask(oldTask);
+ return newTask;
+ }
+
+ private void addTaskContainers(AbstractTask oldTask, AbstractTask newTask) {
+ Set<AbstractTaskContainer> containers = oldTask.getParentContainers();
+ if (containers.isEmpty()
+ || (containers.size() == 1 && containers.iterator().next() instanceof UnmatchedTaskContainer)) {
+ addTask(newTask);
+ } else {
+ for (AbstractTaskContainer container : containers) {
+ addTask(newTask, container);
+ }
+ }
+ for (ITask subtask : oldTask.getChildren()) {
+ addTask(subtask, newTask);
+ }
+ }
+
public void removeChangeListener(ITaskListChangeListener listener) {
changeListeners.remove(listener);
}

Back to the top