1 package com.atlassian.core.task;
2
3 import java.util.*;
4
5
6
7
8 public class DefaultMultiQueueTaskManager implements MultiQueueTaskManager
9 {
10 private Map queues = new HashMap();
11
12 public DefaultMultiQueueTaskManager(String queueName, TaskQueue queue)
13 {
14 addTaskQueue(queueName, queue);
15 }
16
17 public DefaultMultiQueueTaskManager(Map 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 (TaskQueue)queues.get(name);
44 }
45
46 public void setTaskQueues(Map queues)
47 {
48 Map.Entry entry;
49 for (Iterator iterator = queues.entrySet().iterator(); iterator.hasNext();)
50 {
51 entry = (Map.Entry)iterator.next();
52 addTaskQueue(entry.getKey().toString(), (TaskQueue)entry.getValue());
53 }
54 }
55
56 public void addTask(String queueName, Task task)
57 {
58 getTaskQueue(queueName).addTask(task);
59 }
60
61 public void flush(String queueName)
62 {
63 getTaskQueue(queueName).flush();
64 }
65
66 public void flush()
67 {
68 for (Iterator iterator = queues.values().iterator(); iterator.hasNext();)
69 {
70 ((TaskQueue)iterator.next()).flush();
71 }
72 }
73 }