View Javadoc

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