diff options
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()); } } - } |