Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Davis2015-11-20 23:42:17 +0000
committerSam Davis2016-01-23 00:59:49 +0000
commit27d4ded07550dbc873407d291b3fcbadf377786a (patch)
tree5a7c9aabbce4c5dcf6d5e429ea5a183706d40536 /org.eclipse.mylyn.tasks.ui
parente5647f87f2d289148a4e5aa13ecb67d8f7546301 (diff)
downloadorg.eclipse.mylyn.tasks-27d4ded07550dbc873407d291b3fcbadf377786a.tar.gz
org.eclipse.mylyn.tasks-27d4ded07550dbc873407d291b3fcbadf377786a.tar.xz
org.eclipse.mylyn.tasks-27d4ded07550dbc873407d291b3fcbadf377786a.zip
485380: [api] connectors can search by task key
Change-Id: I512052246726ff51c1490b8b9f205c443fc8a562 Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=485380
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java45
1 files changed, 43 insertions, 2 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java
index baffbe8a6..a7ae7f4e9 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java
@@ -55,11 +55,36 @@ public class OpenRepositoryTaskJob extends Job {
private final long timestamp;
+ private String taskKey;
+
+ private TaskRepository repository;
+
+ /**
+ * Creates a job that searches for a task with the given task <i>key</i> and opens it if found.
+ */
+ public OpenRepositoryTaskJob(TaskRepository repository, String taskKey, String taskUrl, IWorkbenchPage page) {
+ super(MessageFormat.format(Messages.OpenRepositoryTaskJob_Opening_repository_task_X, taskKey));
+ this.repositoryKind = repository.getConnectorKind();
+ this.taskId = null;
+ this.repositoryUrl = repository.getRepositoryUrl();
+ this.taskUrl = taskUrl;
+ this.timestamp = 0;
+ this.repository = repository;
+ this.taskKey = taskKey;
+ }
+
+ /**
+ * Creates a job that fetches a task with the given task id and opens it.
+ */
public OpenRepositoryTaskJob(String repositoryKind, String repositoryUrl, String taskId, String taskUrl,
IWorkbenchPage page) {
this(repositoryKind, repositoryUrl, taskId, taskUrl, 0, page);
}
+ /**
+ * Creates a job that fetches a task with the given task id and opens it, expanding all comments made after the
+ * given timestamp.
+ */
public OpenRepositoryTaskJob(String repositoryKind, String repositoryUrl, String taskId, String taskUrl,
long timestamp, IWorkbenchPage page) {
super(MessageFormat.format(Messages.OpenRepositoryTaskJob_Opening_repository_task_X, taskId));
@@ -87,7 +112,9 @@ public class OpenRepositoryTaskJob extends Job {
@Override
public IStatus run(IProgressMonitor monitor) {
monitor.beginTask(Messages.OpenRepositoryTaskJob_Opening_Remote_Task, 10);
- final TaskRepository repository = TasksUi.getRepositoryManager().getRepository(repositoryKind, repositoryUrl);
+ if (repository == null) {
+ repository = TasksUi.getRepositoryManager().getRepository(repositoryKind, repositoryUrl);
+ }
if (repository == null) {
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
@@ -109,7 +136,7 @@ public class OpenRepositoryTaskJob extends Job {
AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(repositoryKind);
try {
- final TaskData taskData = connector.getTaskData(repository, taskId, monitor);
+ final TaskData taskData = getTaskData(connector, monitor);
if (taskData != null) {
task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId());
TasksUiPlugin.getTaskDataManager().putUpdatedTaskData(task, taskData, true);
@@ -161,4 +188,18 @@ public class OpenRepositoryTaskJob extends Job {
return Status.OK_STATUS;
}
+ TaskData getTaskData(AbstractRepositoryConnector connector, IProgressMonitor monitor) throws CoreException {
+ if (taskId != null) {
+ return connector.getTaskData(repository, taskId, monitor);
+ } else if (taskKey != null && connector.supportsSearchByTaskKey(repository)) {
+ TaskData searchTaskData = connector.searchByTaskKey(repository, taskKey, monitor);
+ if (searchTaskData.isPartial()) {
+ return connector.getTaskData(repository, searchTaskData.getTaskId(), monitor);
+ } else {
+ return searchTaskData;
+ }
+ }
+ return null;
+ }
+
}

Back to the top