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