View Javadoc

1   package com.atlassian.core.task;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   
6   /**
7    * A TaskManager implementation that manages multiple queues
8    */
9   public class DefaultMultiQueueTaskManager implements MultiQueueTaskManager {
10      private final Map<String, TaskQueue> queues = new HashMap<String, TaskQueue>();
11  
12      public DefaultMultiQueueTaskManager(String queueName, TaskQueue queue) {
13          addTaskQueue(queueName, queue);
14      }
15  
16      public DefaultMultiQueueTaskManager(Map<String, TaskQueue> queues) {
17          setTaskQueues(queues);
18      }
19  
20      public void addTaskQueue(String name, TaskQueue queue) {
21          if (queues.keySet().contains(name)) {
22              throw new IllegalArgumentException("The queue specified already exists in the task manager");
23          }
24          queues.put(name, queue);
25      }
26  
27      public TaskQueue removeTaskQueue(String queueName, TaskQueue taskQueue, boolean flush) {
28          TaskQueue queue = getTaskQueue(queueName);
29          if (queue != null && flush) {
30              queue.flush();
31          }
32          return queue;
33      }
34  
35      public TaskQueue getTaskQueue(String name) {
36          return queues.get(name);
37      }
38  
39      public void setTaskQueues(Map<String, TaskQueue> queues) {
40          for (Map.Entry<String, TaskQueue> entry : queues.entrySet()) {
41              addTaskQueue(entry.getKey(), entry.getValue());
42          }
43      }
44  
45      public void addTask(String queueName, Task task) {
46          getTaskQueue(queueName).addTask(task);
47      }
48  
49      public void flush(String queueName) {
50          getTaskQueue(queueName).flush();
51      }
52  
53      public void flush() {
54          for (TaskQueue taskQueue : queues.values()) {
55              taskQueue.flush();
56          }
57      }
58  }