| /******************************************************************************* |
| * 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.mylyn.tasks.core; |
| |
| import org.eclipse.core.runtime.PlatformObject; |
| import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil; |
| import org.eclipse.mylyn.tasks.core.Task.PriorityLevel; |
| |
| /** |
| * @author Mik Kersten |
| */ |
| /*public*/ abstract class AbstractQueryHit extends PlatformObject implements ITaskListElement { |
| |
| protected TaskList taskList; |
| |
| protected AbstractTask 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 AbstractTask getOrCreateCorrespondingTask() { |
| if (taskList == null) { |
| return null; |
| } |
| |
| ITask existingTask = taskList.getTask(getHandleIdentifier()); |
| if (existingTask instanceof AbstractTask) { |
| this.task = (AbstractTask) existingTask; |
| } else { |
| task = createTask(); |
| task.setCompleted(completed); |
| taskList.addTask(task); |
| } |
| return task; |
| } |
| |
| //@Deprecated |
| protected abstract AbstractTask createTask(); |
| |
| /** |
| * @return null if there is no corresponding task |
| */ |
| public AbstractTask getCorrespondingTask() { |
| return task; |
| } |
| |
| public void setCorrespondingTask(AbstractTask 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; |
| } |
| } |