1
2
3
4
5
6
7 package org.mule.util.timer;
8
9 import java.util.ArrayList;
10 import java.util.List;
11 import java.util.TimerTask;
12
13
14
15
16
17
18 public class EventTimerTask extends TimerTask
19 {
20
21
22
23 private List listeners = null;
24
25
26
27
28 private String name = null;
29
30
31
32
33 private boolean started = true;
34
35
36
37
38
39
40 public EventTimerTask(TimeEventListener listener)
41 {
42 super();
43 addListener(listener);
44 this.name = "EventTimerTask." + hashCode();
45 }
46
47
48
49
50
51
52
53 public EventTimerTask(TimeEventListener listener, String name)
54 {
55 super();
56 addListener(listener);
57 this.name = name;
58 }
59
60
61
62
63
64 public void run()
65 {
66
67 TimeEvent event = new TimeEvent(this, getName(), scheduledExecutionTime());
68 fireTimerEvent(event);
69 }
70
71
72
73
74
75
76 public String getName()
77 {
78 return name;
79 }
80
81 public void removeListener(TimeEventListener listener)
82 {
83 if (listeners != null && listeners.contains(listener))
84 {
85 listeners.remove(listener);
86 }
87 }
88
89 public void removeAllListeners()
90 {
91 listeners = new ArrayList();
92 }
93
94 public void addListener(TimeEventListener listener)
95 {
96 if (listeners == null)
97 {
98 listeners = new ArrayList();
99 listeners.add(listener);
100 }
101 else if (!listeners.contains(listener))
102 {
103 listeners.add(listener);
104 }
105 }
106
107 protected void fireTimerEvent(TimeEvent event)
108 {
109 if (listeners != null && started)
110 {
111 int count = listeners.size();
112 for (int i = 0; i < count; i++)
113 {
114 ((TimeEventListener) listeners.get(i)).timeExpired(event);
115 }
116 }
117 }
118
119 public void stop()
120 {
121 started = false;
122 }
123
124 public void start()
125 {
126 started = true;
127 }
128
129 public boolean isStarted()
130 {
131 return started;
132 }
133 }