1 package com.atlassian.core.task;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6
7
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 }