Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity')
-rw-r--r--org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityCoreInternal.java1
-rw-r--r--org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityManager.java16
-rw-r--r--org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityStream.java25
-rw-r--r--org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/TaskActivityProvider.java70
4 files changed, 75 insertions, 37 deletions
diff --git a/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityCoreInternal.java b/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityCoreInternal.java
index 78fbc93d8..0783e5c64 100644
--- a/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityCoreInternal.java
+++ b/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityCoreInternal.java
@@ -11,7 +11,6 @@
package org.eclipse.mylyn.internal.tasks.activity.core;
-
/**
* @author Steffen Pingel
*/
diff --git a/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityManager.java b/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityManager.java
index ecb278670..17962ef7f 100644
--- a/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityManager.java
+++ b/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityManager.java
@@ -12,8 +12,9 @@
package org.eclipse.mylyn.internal.tasks.activity.core;
import java.util.Collection;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.Collections;
+import java.util.Set;
+import java.util.TreeSet;
import org.eclipse.mylyn.tasks.activity.core.ActivityEvent;
import org.eclipse.mylyn.tasks.activity.core.ActivityScope;
@@ -26,14 +27,14 @@ import org.eclipse.mylyn.tasks.activity.core.spi.IActivitySession;
*/
public class ActivityManager implements IActivityManager, IActivitySession {
- private final Map<String, ActivityEvent> events;
+ private final Set<ActivityEvent> events;
public ActivityManager() {
- this.events = new ConcurrentHashMap<String, ActivityEvent>();
+ this.events = Collections.synchronizedSet(new TreeSet<ActivityEvent>());
}
public Collection<ActivityEvent> getEvents(ActivityScope scope) {
- return events.values();
+ return events;
}
public IActivityStream getStream(ActivityScope scope) {
@@ -45,7 +46,6 @@ public class ActivityManager implements IActivityManager, IActivitySession {
}
public void fireActivityEvent(ActivityEvent event) {
- events.put(event.getHandle(), event);
+ events.add(event);
}
-
-}
+} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityStream.java b/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityStream.java
index cf5a4210a..90377e229 100644
--- a/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityStream.java
+++ b/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/ActivityStream.java
@@ -11,10 +11,13 @@
package org.eclipse.mylyn.internal.tasks.activity.core;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.Collections;
+import java.util.Set;
+import java.util.TreeSet;
import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.mylyn.tasks.activity.core.ActivityEvent;
import org.eclipse.mylyn.tasks.activity.core.ActivityScope;
import org.eclipse.mylyn.tasks.activity.core.IActivityManager;
@@ -22,10 +25,11 @@ import org.eclipse.mylyn.tasks.activity.core.IActivityStream;
/**
* @author Steffen Pingel
+ * @author Timur Achmetow
*/
public class ActivityStream implements IActivityStream {
- private final List<ActivityEvent> events;
+ private final Set<ActivityEvent> events;
private final ActivityScope scope;
@@ -36,7 +40,7 @@ public class ActivityStream implements IActivityStream {
Assert.isNotNull(scope);
this.manager = manager;
this.scope = scope;
- this.events = new CopyOnWriteArrayList<ActivityEvent>();
+ this.events = Collections.synchronizedSet(new TreeSet<ActivityEvent>());
initialize();
}
@@ -44,11 +48,19 @@ public class ActivityStream implements IActivityStream {
events.addAll(manager.getEvents(scope));
}
+ public void query(IProgressMonitor monitor) throws CoreException {
+ TaskActivityProvider reviewTaskProvider = new TaskActivityProvider();
+ reviewTaskProvider.open(manager);
+ reviewTaskProvider.query(scope, monitor);
+
+ initialize();
+ }
+
public void addEvent(ActivityEvent event) {
events.add(event);
}
- public List<ActivityEvent> getEvents() {
+ public Set<ActivityEvent> getEvents() {
return events;
}
@@ -63,5 +75,4 @@ public class ActivityStream implements IActivityStream {
public void removeEvent(ActivityEvent event) {
events.remove(event);
}
-
-}
+} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/TaskActivityProvider.java b/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/TaskActivityProvider.java
index 0ddcd9c15..3c97d4a75 100644
--- a/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/TaskActivityProvider.java
+++ b/org.eclipse.mylyn.tasks.activity.core/src/org/eclipse/mylyn/internal/tasks/activity/core/TaskActivityProvider.java
@@ -11,38 +11,32 @@
package org.eclipse.mylyn.internal.tasks.activity.core;
-import org.eclipse.core.runtime.Assert;
+import java.util.HashMap;
+import java.util.Map;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.mylyn.internal.tasks.core.TaskList;
+import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex;
+import org.eclipse.mylyn.internal.tasks.index.core.TaskListIndex.TaskCollector;
+import org.eclipse.mylyn.internal.tasks.index.ui.IndexReference;
import org.eclipse.mylyn.tasks.activity.core.ActivityEvent;
import org.eclipse.mylyn.tasks.activity.core.ActivityScope;
import org.eclipse.mylyn.tasks.activity.core.TaskActivityScope;
import org.eclipse.mylyn.tasks.activity.core.spi.ActivityProvider;
import org.eclipse.mylyn.tasks.activity.core.spi.IActivitySession;
-import org.eclipse.mylyn.tasks.core.IRepositoryManager;
import org.eclipse.mylyn.tasks.core.ITask;
/**
* @author Steffen Pingel
+ * @author Timur Achmetow
*/
+@SuppressWarnings("restriction")
public class TaskActivityProvider extends ActivityProvider {
- public static final String ID_PROVIDER = "org.eclipse.mylyn.tasks.activity.core.providers.TaskActivityProvider"; //$NON-NLS-1$
+ private static final String UNKNOWN = "Unknown"; //$NON-NLS-1$
private IActivitySession session;
- private final IRepositoryManager repositoryManager;
-
- private final TaskList taskList;
-
- public TaskActivityProvider(IRepositoryManager repositoryManager, TaskList taskList) {
- Assert.isNotNull(repositoryManager);
- Assert.isNotNull(taskList);
- this.repositoryManager = repositoryManager;
- this.taskList = taskList;
- }
-
@Override
public void open(IActivitySession session) {
this.session = session;
@@ -52,12 +46,14 @@ public class TaskActivityProvider extends ActivityProvider {
public void query(ActivityScope scope, IProgressMonitor monitor) throws CoreException {
if (scope instanceof TaskActivityScope) {
ITask scopeTask = ((TaskActivityScope) scope).getTask();
- for (ITask task : taskList.getAllTasks()) {
- if (task.getSummary().contains(scopeTask.getTaskId())) {
- ActivityEvent event = new ActivityEvent(task.getHandleIdentifier(), ID_PROVIDER, task.getSummary(),
- task.getCreationDate(), null);
- session.fireActivityEvent(event);
- }
+
+ GetAssociatedTasks collector = new GetAssociatedTasks(session);
+ IndexReference reference = new IndexReference();
+ try {
+ TaskListIndex taskListIndex = reference.index();
+ taskListIndex.find(scopeTask.getTaskKey(), collector, 50);
+ } finally {
+ reference.dispose();
}
}
}
@@ -66,4 +62,36 @@ public class TaskActivityProvider extends ActivityProvider {
public void close() {
}
+ private static class GetAssociatedTasks extends TaskCollector {
+ private final IActivitySession session;
+
+ public GetAssociatedTasks(IActivitySession session) {
+ this.session = session;
+ }
+
+ @Override
+ public void collect(ITask task) {
+
+ Map<String, String> attrMap = new HashMap<String, String>();
+ attrMap.put("author", getAuthor(task)); //$NON-NLS-1$
+ attrMap.put("taskId", getTaskId(task)); //$NON-NLS-1$
+ ActivityEvent activityEvent = new ActivityEvent(task.getHandleIdentifier(), task.getConnectorKind(),
+ task.getSummary(), task.getCreationDate(), attrMap);
+ session.fireActivityEvent(activityEvent);
+ }
+
+ private String getTaskId(ITask task) {
+ if (task.getTaskId() == null) {
+ return UNKNOWN;
+ }
+ return task.getTaskId();
+ }
+
+ private String getAuthor(ITask task) {
+ if (task.getOwner() == null) {
+ return UNKNOWN;
+ }
+ return task.getOwner();
+ }
+ }
}

Back to the top