diff options
Diffstat (limited to 'org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core')
15 files changed, 153 insertions, 432 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractQueryHit.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractQueryHit.java deleted file mode 100644 index 74940e0a4..000000000 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractQueryHit.java +++ /dev/null @@ -1,193 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ -package org.eclipse.mylar.tasks.core; - -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.mylar.internal.tasks.core.RepositoryTaskHandleUtil; -import org.eclipse.mylar.tasks.core.Task.PriorityLevel; - -/** - * @author Mik Kersten - */ -/*public*/ abstract class AbstractQueryHit extends PlatformObject implements ITaskListElement { - - protected TaskList taskList; - - protected AbstractRepositoryTask task; - - protected String repositoryUrl; - - protected String summary; - - protected String priority = PriorityLevel.getDefault().toString(); - - protected String taskId; - - private boolean completed = false; - - private boolean isNotified = false; - - private AbstractRepositoryQuery parent; - - protected AbstractQueryHit(TaskList taskList, String repositoryUrl, String description, String taskId) { - this.taskList = taskList; - this.repositoryUrl = repositoryUrl; - this.summary = description; - this.taskId = taskId; - } - - public AbstractRepositoryQuery getParent() { - return parent; - } - - public void setParent(AbstractRepositoryQuery parent) { - this.parent = parent; - } - - public String getRepositoryUrl() { - return repositoryUrl; - } - - public void setRepositoryUrl(String repositoryUrl) { - this.repositoryUrl = repositoryUrl; - } - - public String getSummary() { - if (task != null) { - return task.getSummary(); - } else { - return summary; - } - } - - public AbstractRepositoryTask getOrCreateCorrespondingTask() { - if (taskList == null) { - return null; - } - - ITask existingTask = taskList.getTask(getHandleIdentifier()); - if (existingTask instanceof AbstractRepositoryTask) { - this.task = (AbstractRepositoryTask) existingTask; - } else { - task = createTask(); - task.setCompleted(completed); - taskList.addTask(task); - } - return task; - } - - //@Deprecated - protected abstract AbstractRepositoryTask createTask(); - - /** - * @return null if there is no corresponding task - */ - public AbstractRepositoryTask getCorrespondingTask() { - return task; - } - - public void setCorrespondingTask(AbstractRepositoryTask task) { - this.task = task; - } - - public boolean isCompleted() { - if (task != null) { - return task.isCompleted(); - } else { - return completed; - } - } - - public void setCompleted(boolean completed) { - this.completed = completed; - } - - public final String getHandleIdentifier() { - if (task != null) { - return task.getHandleIdentifier(); - } - return RepositoryTaskHandleUtil.getHandle(repositoryUrl, taskId); - } - - /** - * @return Unique identifier for this task on the corresponding server, must - * be robust to changing attributes on the task. - */ - public String getTaskId() { - return taskId; - } - - /** - * @return An ID that can be presented to the user for identifying the task, - * override to return null if no such ID exists. - */ - public String getIdentifyingLabel() { - return getTaskId(); - } - - public boolean isNotified() { - return isNotified; - } - - public void setNotified(boolean notified) { - isNotified = notified; - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof AbstractQueryHit)) { - return false; - } - AbstractQueryHit hit = (AbstractQueryHit) obj; - return hit.getHandleIdentifier().equals(this.getHandleIdentifier()); - } - - @Override - public int hashCode() { - return this.getHandleIdentifier().hashCode(); - } - - /** - * @return the url of the hit without any additional login information etc. - */ - public String getUrl() { - return ""; - } - - public String getPriority() { - if (task != null) { - return task.getPriority(); - } else { - return priority; - } - } - - public void setPriority(String priority) { - this.priority = priority; - } - - public void setSummary(String description) { - this.summary = description; - } - - public void setHandleIdentifier(String id) { - // ignore - } - - public int compareTo(ITaskListElement taskListElement) { - return this.taskId.compareTo(((AbstractQueryHit) taskListElement).taskId); - } - - @Deprecated - public void setTaskId(String taskId) { - this.taskId = taskId; - } -} diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java index 7b129b019..214c8d548 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java @@ -141,7 +141,7 @@ public abstract class AbstractRepositoryConnector { AbstractRepositoryTask subTask = createTaskFromExistingId(repository, subId, false, new SubProgressMonitor(monitor, 1)); if (subTask != null) { - repositoryTask.addSubTask(subTask); + taskList.addTask(subTask, repositoryTask); } } } @@ -431,4 +431,5 @@ public abstract class AbstractRepositoryConnector { public void setTaskDataManager(TaskDataManager taskDataManager) { this.taskDataManager = taskDataManager; } + } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java index 427f2e2d1..dc459ab77 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java @@ -10,7 +10,6 @@ *******************************************************************************/ package org.eclipse.mylar.tasks.core; -import java.util.Collection; import java.util.HashSet; import java.util.Set; @@ -33,21 +32,8 @@ public abstract class AbstractRepositoryQuery extends AbstractTaskContainer { public abstract String getRepositoryKind(); - /** - * Query must be added to tasklist or synchronization will result in empty - * result set due to removeOrphanedHits(). All hits that don't have a query - * in the tasklist are removed. - */ - public AbstractRepositoryQuery(String description, TaskList taskList) { - super(description, taskList); - } - - public boolean isArchive() { - return false; - } - - public void setIsArchive(boolean isArchive) { - // ignore + public AbstractRepositoryQuery(String description) { + super(description); } public synchronized Set<AbstractRepositoryTask> getHits() { @@ -60,24 +46,20 @@ public abstract class AbstractRepositoryQuery extends AbstractTaskContainer { return repositoryTasks; } - public synchronized void updateHits(Collection<AbstractRepositoryTask> newHits) { - clear(); - for (AbstractRepositoryTask abstractRepositoryTask : newHits) { - addHit(abstractRepositoryTask); - } - } - - public synchronized void addHit(AbstractRepositoryTask hit) { - // TODO: Move up? - if(!taskList.getAllTasks().contains(hit)) { - taskList.addTask(hit); - } - super.add(hit); - } +// public synchronized void updateHits(Collection<AbstractRepositoryTask> newHits) { +// clear(); +// for (AbstractRepositoryTask abstractRepositoryTask : newHits) { +// addHit(abstractRepositoryTask); +// } +// } - public synchronized void removeHit(AbstractRepositoryTask hit) { - super.remove(hit); - } +// public synchronized void addHit(AbstractRepositoryTask hit) { +// super.add(hit); +// } +// +// public synchronized void removeHit(AbstractRepositoryTask hit) { +// super.remove(hit); +// } public synchronized String getPriority() { if (super.isEmpty()) { @@ -97,11 +79,6 @@ public abstract class AbstractRepositoryQuery extends AbstractTaskContainer { return false; } - @Override - public boolean isCompleted() { - return false; - } - public String getRepositoryUrl() { return repositoryUrl; } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java index f2fdd7796..e5556975b 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.mylar.tasks.core; -import java.util.HashSet; +import java.util.Collections; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; @@ -25,9 +25,7 @@ public abstract class AbstractTaskContainer extends PlatformObject implements IT private String handle = ""; - private Set<String> childHandles = new CopyOnWriteArraySet<String>(); - - protected TaskList taskList; + private Set<ITask> children = new CopyOnWriteArraySet<ITask>(); /** * Optional URL corresponding to the web resource associated with this @@ -35,39 +33,36 @@ public abstract class AbstractTaskContainer extends PlatformObject implements IT */ protected String url = null; - public AbstractTaskContainer(String handleAndDescription, TaskList taskList) { + public AbstractTaskContainer(String handleAndDescription) { assert handle != null; this.handle = handleAndDescription; - this.taskList = taskList; } + // XXX: Get rid of this public abstract boolean isLocal(); public Set<ITask> getChildren() { - Set<ITask> children = new HashSet<ITask>(); - for (String childHandle : childHandles) { - ITask task = taskList.getTask(childHandle); - if (task != null) { - children.add(task); - } - } - return children; + return Collections.unmodifiableSet(children); } - + public boolean contains(String handle) { - return childHandles.contains(handle); + for (ITask child : children) { + if (handle.equals(child.getHandleIdentifier())) { + return true; + } + } + return false; } public String getSummary() { return handle; } - /** * @since 2.0 */ public boolean isEmpty() { - return childHandles.isEmpty(); + return children.isEmpty(); } public String getHandleIdentifier() { @@ -82,20 +77,25 @@ public abstract class AbstractTaskContainer extends PlatformObject implements IT this.handle = handle; } + /** + * Use {@link TaskList} methods instead. + */ void add(ITask task) { - childHandles.add(task.getHandleIdentifier()); + children.add(task); } + /** + * Does not delete task from TaskList + */ void remove(ITask task) { - childHandles.remove(task.getHandleIdentifier()); - } - - void clear() { - childHandles.clear(); + children.remove(task); } - public boolean isCompleted() { - return false; + /** + * Does not delete tasks from TaskList + */ + public void clear() { + children.clear(); } @Override diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java index 42158e053..feb971c23 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java @@ -15,13 +15,11 @@ import java.util.Calendar; import java.util.Date; import java.util.Set; -import org.eclipse.core.runtime.PlatformObject; - /** * @author Rob Elves * @author Mik Kersten */ -public class DateRangeActivityDelegate extends PlatformObject implements ITask { +public class DateRangeActivityDelegate extends AbstractTaskContainer implements ITask { private ITask task = null; @@ -38,6 +36,7 @@ public class DateRangeActivityDelegate extends PlatformObject implements ITask { } public DateRangeActivityDelegate(DateRangeContainer parent, ITask task, Calendar start, Calendar end, long activity) { + super(task.getHandleIdentifier()); if (task == null) { throw new RuntimeException("attempted to instantiated with null task: " + parent); } @@ -103,9 +102,9 @@ public class DateRangeActivityDelegate extends PlatformObject implements ITask { return parent; } - public void addSubTask(ITask task) { - task.addSubTask(task); - } +// public void addSubTask(ITask task) { +// task.addSubTask(task); +// } public AbstractTaskContainer getContainer() { return task.getContainer(); @@ -143,10 +142,6 @@ public class DateRangeActivityDelegate extends PlatformObject implements ITask { return task.getNotes(); } - public ITask getParent() { - return task.getParent(); - } - public String getPriority() { return task.getPriority(); } @@ -179,9 +174,9 @@ public class DateRangeActivityDelegate extends PlatformObject implements ITask { return task.isPastReminder(); } - public void removeSubTask(ITask task) { - task.removeSubTask(task); - } +// public void removeSubTask(ITask task) { +// task.removeSubTask(task); +// } public void setActive(boolean active) { task.setActive(active); @@ -219,10 +214,6 @@ public class DateRangeActivityDelegate extends PlatformObject implements ITask { task.setNotes(notes); } - public void setParent(ITask parent) { - task.setParent(parent); - } - public void setPriority(String priority) { task.setPriority(priority); } @@ -254,4 +245,9 @@ public class DateRangeActivityDelegate extends PlatformObject implements ITask { public void setDueDate(Date date) { task.setDueDate(date); } + + @Override + public boolean isLocal() { + return ((Task)task).isLocal(); + } } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java index 540f674eb..4aabb01fb 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java @@ -38,22 +38,21 @@ public class DateRangeContainer extends AbstractTaskContainer { private long totalEstimated = 0; - public DateRangeContainer(GregorianCalendar startDate, GregorianCalendar endDate, String description, - TaskList taskList) { - super(description, taskList); + public DateRangeContainer(GregorianCalendar startDate, GregorianCalendar endDate, String description) { + super(description); this.startDate = startDate; this.endDate = endDate; } - public DateRangeContainer(Calendar startDate, Calendar endDate, String description, TaskList taskList) { - super(description, taskList); + public DateRangeContainer(Calendar startDate, Calendar endDate, String description) { + super(description); this.startDate = startDate; this.endDate = endDate; } - public DateRangeContainer(GregorianCalendar startDate, GregorianCalendar endDate, TaskList taskList) { + public DateRangeContainer(GregorianCalendar startDate, GregorianCalendar endDate) { super(DateFormat.getDateInstance(DateFormat.FULL).format(startDate.getTime()) + " to " - + DateFormat.getDateInstance(DateFormat.FULL).format(endDate.getTime()), taskList); + + DateFormat.getDateInstance(DateFormat.FULL).format(endDate.getTime())); // super(startDate.hashCode() + endDate.hashCode() + ""); // String start = // DateFormat.getDateInstance(DateFormat.FULL).format(startDate.getTime()); @@ -64,8 +63,8 @@ public class DateRangeContainer extends AbstractTaskContainer { this.endDate = endDate; } - public DateRangeContainer(Date time, Date time2, String description, TaskList taskList) { - super(description, taskList); + public DateRangeContainer(Date time, Date time2, String description) { + super(description); startDate = new GregorianCalendar(); startDate.setTime(time); endDate = new GregorianCalendar(); diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java index e167a79cd..cc4f601e4 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java @@ -244,7 +244,7 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { String handle = element.getAttribute(KEY_HANDLE); ITask subTask = tasklist.getTask(handle); if (subTask != null) { - task.addSubTask(subTask); + tasklist.addTask(subTask, (Task)task); } } } @@ -287,7 +287,7 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { AbstractTaskContainer category; if (element.hasAttribute(KEY_NAME)) { - category = new TaskCategory(element.getAttribute(KEY_NAME), taskList); + category = new TaskCategory(element.getAttribute(KEY_NAME)); taskList.internalAddCategory(category); } else { // LEGACY: registry categories did not have names @@ -359,7 +359,7 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { if (task != null) { readTaskInfo(task, taskList, element, parent, category); } - + return task; } @@ -407,8 +407,6 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { } else { taskList.internalAddRootTask(task); } - } else if (parent != null) { - task.setParent(parent); } else { taskList.internalAddTask(task, taskList.getArchiveContainer()); } @@ -633,25 +631,9 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { return KEY_QUERY_HIT; } - public boolean canCreateElementFor(AbstractQueryHit queryHit) { - return false; - } - public Element createQueryHitElement(AbstractRepositoryTask queryHit, Document doc, Element parent) { Element node = doc.createElement(getQueryHitTagName()); -// node.setAttribute(KEY_NAME, queryHit.getSummary()); node.setAttribute(KEY_HANDLE, queryHit.getHandleIdentifier()); -// node.setAttribute(KEY_PRIORITY, queryHit.getPriority()); -// if (queryHit.isCompleted()) { -// node.setAttribute(KEY_COMPLETE, VAL_TRUE); -// } else { -// node.setAttribute(KEY_COMPLETE, VAL_FALSE); -// } -// if (queryHit.isNotified()) { -// node.setAttribute(KEY_NOTIFIED_INCOMING, VAL_TRUE); -// } else { -// node.setAttribute(KEY_NOTIFIED_INCOMING, VAL_FALSE); -// } parent.appendChild(node); return node; } @@ -667,7 +649,7 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { String handle = element.getAttribute(KEY_HANDLE); ITask hit = taskList.getTask(handle); if (hit != null) { - query.addHit((AbstractRepositoryTask) hit); + taskList.addTask(hit, query); } } else { @@ -675,46 +657,6 @@ public class DelegatingTaskExternalizer implements ITaskListExternalizer { } } -// /** -// * Subclasses should override. -// */ -// public AbstractQueryHit createQueryHit(String repositoryUrl, String taskId, -// String summary, Element element, -// TaskList taskList, AbstractRepositoryQuery query) throws -// TaskExternalizationException { -// // no default hit reading behavior -// return null; -// } - -// private void readQueryHitInfo(AbstractQueryHit hit, TaskList taskList, -// AbstractRepositoryQuery query, -// Element element) throws TaskExternalizationException { -// if (element.hasAttribute(KEY_PRIORITY)) { -// hit.setPriority(element.getAttribute(KEY_PRIORITY)); -// } -// -// if (element.hasAttribute(KEY_COMPLETE) && -// element.getAttribute(KEY_COMPLETE).compareTo(VAL_TRUE) == 0) { -// hit.setCompleted(true); -// } else { -// hit.setCompleted(false); -// } -// -// if (element.hasAttribute(KEY_NOTIFIED_INCOMING) -// && element.getAttribute(KEY_NOTIFIED_INCOMING).compareTo(VAL_TRUE) == 0) { -// hit.setNotified(true); -// } else { -// hit.setNotified(false); -// } -// -// ITask correspondingTask = taskList.getTask(hit.getHandleIdentifier()); -// if (correspondingTask instanceof AbstractRepositoryTask) { -// hit.setCorrespondingTask((AbstractRepositoryTask) correspondingTask); -// } -// -// query.addHit(hit); -// } - public List<ITaskListExternalizer> getDelegateExternalizers() { return delegateExternalizers; } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java index d5bbb31d1..3d95af2ab 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java @@ -23,10 +23,6 @@ public interface ITask extends ITaskListElement { public abstract String getHandleIdentifier(); - public abstract ITask getParent(); - - public abstract void setParent(ITask parent); - public abstract boolean isActive(); public abstract void setActive(boolean active); @@ -55,12 +51,10 @@ public interface ITask extends ITaskListElement { public abstract Set<ITask> getChildren(); - public abstract void addSubTask(ITask task); - - public abstract void removeSubTask(ITask task); public abstract void setPriority(String priority); + @Deprecated public abstract void setContainer(AbstractTaskContainer category); /** diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java index e248bca75..63de8b587 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java @@ -32,8 +32,6 @@ public interface ITaskListExternalizer { public abstract String getQueryTagNameForElement(AbstractRepositoryQuery query); -// public abstract String getQueryHitTagName(); - /** * @return the element that was created, null if failed */ @@ -52,8 +50,8 @@ public interface ITaskListExternalizer { public abstract boolean canReadTask(Node node); - public abstract ITask createTask(String repositoryUrl, String taskId, String summary, Element element, TaskList tlist, AbstractTaskContainer category, ITask parent) - throws TaskExternalizationException; + public abstract ITask createTask(String repositoryUrl, String taskId, String summary, Element element, + TaskList tlist, AbstractTaskContainer category, ITask parent) throws TaskExternalizationException; public abstract boolean canCreateElementFor(AbstractRepositoryQuery category); @@ -62,13 +60,4 @@ public interface ITaskListExternalizer { public abstract boolean canReadQuery(Node node); public abstract AbstractRepositoryQuery readQuery(Node node, TaskList tlist) throws TaskExternalizationException; - - public abstract boolean canCreateElementFor(AbstractQueryHit queryHit); - -// public abstract Element createQueryHitElement(AbstractRepositoryTask queryHit, Document doc, Element parent); - -// public abstract boolean canReadQueryHit(Node node); - -// public abstract AbstractQueryHit createQueryHit(String repositoryUrl, String taskId, String summary, Element element, TaskList tlist, AbstractRepositoryQuery query) -// throws TaskExternalizationException; } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java index b6abca0f1..3fe1ea6b3 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java @@ -89,7 +89,7 @@ public class QueryHitCollector { public void accept(RepositoryTaskData taskData) throws CoreException { if (taskData == null) return; - + if (!getProgressMonitor().isCanceled()) { getProgressMonitor().subTask(getFormattedMatchesString(matchCount)); getProgressMonitor().worked(1); diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java index b7f8fdc8e..8d7624143 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java @@ -14,15 +14,11 @@ package org.eclipse.mylar.tasks.core; import java.net.MalformedURLException; import java.net.URL; import java.util.Date; -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.core.runtime.PlatformObject; /** * @author Mik Kersten */ -public class Task extends PlatformObject implements ITask { +public class Task extends AbstractTaskContainer implements ITask { private static final String REPOSITORY_KIND_LOCAL = "local"; @@ -101,11 +97,9 @@ public class Task extends PlatformObject implements ITask { } } - private String handleIdentifier = "-1"; - private boolean active = false; - private boolean category = false; +// private boolean category = false; private boolean hasReminded = false; @@ -131,12 +125,7 @@ public class Task extends PlatformObject implements ITask { private Date dueDate = null; - /** - * @return null if root - */ - private transient ITask parent; - - private Set<ITask> children = new HashSet<ITask>(); + //private Set<ITask> children = new HashSet<ITask>(); protected String kind = DEFAULT_TASK_KIND; @@ -146,21 +135,10 @@ public class Task extends PlatformObject implements ITask { } public Task(String handle, String summary) { - this.handleIdentifier = handle; + super(handle); this.summary = summary; } - public String getHandleIdentifier() { - return handleIdentifier; - } - - public ITask getParent() { - return parent; - } - - public void setParent(ITask parent) { - this.parent = parent; - } /** * Package visible in order to prevent sets that don't update the index. @@ -200,14 +178,6 @@ public class Task extends PlatformObject implements ITask { } } - public boolean isCategory() { - return category; - } - - public void setIsCategory(boolean category) { - this.category = category; - } - public String getPriority() { return priority; } @@ -247,21 +217,6 @@ public class Task extends PlatformObject implements ITask { this.estimatedTimeHours = estimated; } - public Set<ITask> getChildren() { - return children; - } - - public void addSubTask(ITask t) { - children.add(t); - } - - public void removeSubTask(ITask t) { - children.remove(t); - } - - public void dropSubTasks() { - children.clear(); - } public void setContainer(AbstractTaskContainer cat) { this.parentCategory = cat; @@ -275,6 +230,7 @@ public class Task extends PlatformObject implements ITask { return summary; } + // TODO: Remove public boolean isLocal() { return true; } diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java index adae2728a..7788ab5eb 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java @@ -22,8 +22,8 @@ public class TaskArchive extends AbstractTaskContainer { public static final String LABEL_ARCHIVE = "Archive (all tasks)"; - public TaskArchive(TaskList taskList) { - super(HANDLE, taskList); + public TaskArchive() { + super(HANDLE); } public String getPriority() { diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskCategory.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskCategory.java index 9562bc848..e0ae5f726 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskCategory.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskCategory.java @@ -21,8 +21,8 @@ import java.util.Set; */ public class TaskCategory extends AbstractTaskContainer { - public TaskCategory(String handleAndDescription, TaskList taskList) { - super(handleAndDescription, taskList); + public TaskCategory(String handleAndDescription) { + super(handleAndDescription); } public String getPriority() { diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java index 253551222..a6e1a2b37 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java @@ -65,8 +65,8 @@ public class TaskList { categories = new ConcurrentHashMap<String, AbstractTaskContainer>(); queries = new ConcurrentHashMap<String, AbstractRepositoryQuery>(); - archiveContainer = new TaskArchive(this); - uncategorizedCategory = new UncategorizedCategory(this); + archiveContainer = new TaskArchive(); + uncategorizedCategory = new UncategorizedCategory(); activeTasks = new CopyOnWriteArrayList<ITask>(); lastTaskNum = 0; @@ -76,9 +76,6 @@ public class TaskList { public void addTask(ITask task) { addTask(task, archiveContainer); - for (ITask subTask : task.getChildren()) { - addTask(subTask, archiveContainer); - } } /** @@ -98,11 +95,74 @@ public class TaskList { return result; } - public void addTask(ITask task, AbstractTaskContainer category) { - tasks.put(task.getHandleIdentifier(), task); - if (category != null) { - category.add(task); - task.setContainer(category); +// /** +// * Adds subTask to parentTask, adding each to tasklist if not already +// * present +// */ +// public void addSubTask(ITask parentTask, ITask subTask) { +// if (parentTask instanceof AbstractTaskContainer) { +// if (!tasks.containsKey(parentTask.getHandleIdentifier())) { +// addTask(parentTask); +// } else { +// parentTask = tasks.get(parentTask.getHandleIdentifier()); +// } +// if (!tasks.containsKey(subTask.getHandleIdentifier())) { +// addTask(subTask); +// } +// ((AbstractTaskContainer) parentTask).add(subTask); +// } +// } +// +// /** +// * Precondition: query exists in tasklist Postcondition: hit added to +// * tasklist if not present and added to query +// */ +// public void addQueryHit(AbstractRepositoryQuery query, ITask hit) { +// if (queries.containsKey(query.getHandleIdentifier())) { +// if (!tasks.containsKey(hit.getHandleIdentifier())) { +// addTask(hit); +// } else { +// hit = tasks.get(hit.getHandleIdentifier()); +// } +// query.add(hit); +// } +// } + +// /** +// * Add task hits to a query Precondition: query exists in tasklist +// * Postcondition: hit added to tasklist if not present and added to query +// */ +// public void addTask(ITask task, AbstractRepositoryQuery query) { +// if (queries.containsKey(query.getHandleIdentifier())) { +// if (!tasks.containsKey(task.getHandleIdentifier())) { +// addTask(task); +// } else { +// hit = tasks.get(hit.getHandleIdentifier()); +// } +// query.add(hit); +// } +// } + + /** + * Precondition: {@code container} already exists in tasklist (be it a parent task, category, or query) + * @param task to be added (hit, subtask, etc) + * @param container task container, query or parent task + */ + public void addTask(ITask task, AbstractTaskContainer container) { + + if (!tasks.containsKey(task.getHandleIdentifier())) { + tasks.put(task.getHandleIdentifier(), task); + archiveContainer.add(task); + task.setContainer(archiveContainer); + } else { + task = tasks.get(task.getHandleIdentifier()); + } + + if (container != null) { + container.add(task); + if (!(container instanceof ITask) && !(container instanceof AbstractRepositoryQuery)) { + task.setContainer(container); + } } else { uncategorizedCategory.add(task); task.setContainer(uncategorizedCategory); diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/UncategorizedCategory.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/UncategorizedCategory.java index 7fca227dc..1b24f6b50 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/UncategorizedCategory.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/UncategorizedCategory.java @@ -20,8 +20,8 @@ public class UncategorizedCategory extends AbstractTaskContainer { public static final String HANDLE = "uncategorized"; - public UncategorizedCategory(TaskList taskList) { - super(HANDLE, taskList); + public UncategorizedCategory() { + super(HANDLE); } public String getPriority() { |