Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/util/TestTaskDataCollector.java23
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java43
-rw-r--r--org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF1
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchTest.java10
4 files changed, 45 insertions, 32 deletions
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/util/TestTaskDataCollector.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/util/TestTaskDataCollector.java
index 55100352f..91d9383d9 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/util/TestTaskDataCollector.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/util/TestTaskDataCollector.java
@@ -1,5 +1,5 @@
/*******************************************************************************
-* Copyright (c) 2004, 2008 Tasktop Technologies and others.
+ * Copyright (c) 2004, 2008 Tasktop Technologies 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
@@ -12,10 +12,16 @@
package org.eclipse.mylyn.tasks.tests.util;
import java.util.ArrayList;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
+import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
+import org.eclipse.mylyn.tasks.core.ITask;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.core.data.TaskDataCollector;
+import org.eclipse.mylyn.tasks.ui.TasksUi;
/**
* @author Steffen Pingel
@@ -29,4 +35,19 @@ public class TestTaskDataCollector extends TaskDataCollector {
results.add(taskData);
}
+ public Set<ITask> getTasks(AbstractRepositoryConnector connector, TaskRepository repository) {
+ Set<ITask> tasks = new LinkedHashSet<ITask>(results.size());
+ for (TaskData taskData : results) {
+ ITask task = TasksUi.getRepositoryModel().getTask(repository, taskData.getTaskId());
+ if (task == null) {
+ task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId());
+ if (connector != null) {
+ connector.updateTaskFromTaskData(repository, task, taskData);
+ }
+ }
+ tasks.add(task);
+ }
+ return tasks;
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java
index 85e14ae85..d567d1221 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java
@@ -1,5 +1,5 @@
/*******************************************************************************
-* Copyright (c) 2004, 2008 Tasktop Technologies and others.
+ * Copyright (c) 2004, 2008 Tasktop Technologies 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
@@ -11,14 +11,11 @@
package org.eclipse.mylyn.internal.tasks.ui.search;
-import java.util.HashSet;
-import java.util.Set;
-
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Status;
+import org.eclipse.mylyn.commons.net.Policy;
import org.eclipse.mylyn.internal.tasks.core.ITaskList;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
@@ -40,7 +37,7 @@ import org.eclipse.ui.PlatformUI;
* Used for returning results from Eclipse Search view. Collects results of a repository search.
*
* @author Rob Elves
- * @since 2.0
+ * @author Steffen Pingel
*/
public class SearchHitCollector extends TaskDataCollector implements ISearchQuery {
@@ -48,8 +45,6 @@ public class SearchHitCollector extends TaskDataCollector implements ISearchQuer
private static final String QUERYING_REPOSITORY = "Querying Repository...";
- private final Set<ITask> taskResults = new HashSet<ITask>();
-
private final ITaskList taskList;
private final TaskRepository repository;
@@ -60,9 +55,6 @@ public class SearchHitCollector extends TaskDataCollector implements ISearchQuer
private AbstractRepositoryConnector connector;
- /**
- * @since 3.0
- */
public SearchHitCollector(ITaskList tasklist, TaskRepository repository, IRepositoryQuery repositoryQuery) {
this.taskList = tasklist;
this.repository = repository;
@@ -71,8 +63,6 @@ public class SearchHitCollector extends TaskDataCollector implements ISearchQuer
}
public void aboutToStart() {
- taskResults.clear();
-
searchResult.removeAll();
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
@@ -90,8 +80,7 @@ public class SearchHitCollector extends TaskDataCollector implements ISearchQuer
connector.updateTaskFromTaskData(repository, task, taskData);
}
}
- taskResults.add(task);
- this.searchResult.addMatch(new Match(task, 0, 0));
+ searchResult.addMatch(new Match(task, 0, 0));
}
public String getLabel() {
@@ -107,17 +96,11 @@ public class SearchHitCollector extends TaskDataCollector implements ISearchQuer
}
public ISearchResult getSearchResult() {
- if (searchResult.getMatchCount() >= TaskDataCollector.MAX_HITS) {
- TasksUiInternal.displayStatus("Maximum hits reached", RepositoryStatus.createStatus(
- repository.getRepositoryUrl(), IStatus.WARNING, TasksUiPlugin.ID_PLUGIN, LABEL_MAX_HITS_REACHED));
- }
return searchResult;
}
public IStatus run(IProgressMonitor monitor) throws OperationCanceledException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
+ monitor = Policy.monitorFor(monitor);
aboutToStart();
@@ -133,19 +116,25 @@ public class SearchHitCollector extends TaskDataCollector implements ISearchQuer
TasksUiInternal.displayStatus("Search failed", status);
}
});
+ } else {
+ if (searchResult.getMatchCount() >= TaskDataCollector.MAX_HITS) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ TasksUiInternal.displayStatus("Search returned maximum number of hits",
+ RepositoryStatus.createStatus(repository.getRepositoryUrl(), IStatus.WARNING,
+ TasksUiPlugin.ID_PLUGIN, LABEL_MAX_HITS_REACHED));
+ }
+ });
+ }
}
} else {
return new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, IStatus.OK,
- "repository connector could not be found", null);
+ "Repository connector could not be found", null);
}
return Status.OK_STATUS;
}
- public Set<ITask> getTasks() {
- return taskResults;
- }
-
public IRepositoryQuery getRepositoryQuery() {
return repositoryQuery;
}
diff --git a/org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF b/org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF
index 682781a67..1b3bb4424 100644
--- a/org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF
@@ -7,6 +7,7 @@ Require-Bundle: org.apache.xmlrpc;bundle-version="3.0.0",
org.junit,
org.eclipse.core.runtime,
org.eclipse.jface.text,
+ org.eclipse.search,
org.eclipse.ui,
org.eclipse.ui.workbench.texteditor,
org.eclipse.mylyn.commons.net,
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchTest.java
index 25c841f18..7299ac2a8 100644
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchTest.java
+++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
-* Copyright (c) 2006, 2008 Steffen Pingel and others.
+ * Copyright (c) 2006, 2008 Steffen Pingel 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
@@ -21,6 +21,7 @@ import org.eclipse.mylyn.context.tests.support.TestUtil.Credentials;
import org.eclipse.mylyn.context.tests.support.TestUtil.PrivilegeLevel;
import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
+import org.eclipse.mylyn.internal.tasks.ui.search.RepositorySearchResult;
import org.eclipse.mylyn.internal.tasks.ui.search.SearchHitCollector;
import org.eclipse.mylyn.internal.trac.core.TracCorePlugin;
import org.eclipse.mylyn.internal.trac.core.client.ITracClient;
@@ -79,10 +80,11 @@ public class RepositorySearchTest extends TestCase {
query.setUrl(queryUrl);
SearchHitCollector collector = new SearchHitCollector(TasksUiPlugin.getTaskList(), repository, query);
collector.run(new NullProgressMonitor());
- assertEquals(data.tickets.size(), collector.getTasks().size());
- for (ITask task : collector.getTasks()) {
+ RepositorySearchResult searchResult = (RepositorySearchResult) collector.getSearchResult();
+ assertEquals(data.tickets.size(), searchResult.getMatchCount());
+ for (Object match : searchResult.getElements()) {
+ ITask task = (ITask) match;
assertEquals(TracTestConstants.TEST_TRAC_096_URL, task.getRepositoryUrl());
}
}
-
}

Back to the top