001: package org.quartz.listeners;
002:
003: import java.util.Iterator;
004: import java.util.LinkedList;
005: import java.util.List;
006:
007: import org.quartz.SchedulerException;
008: import org.quartz.SchedulerListener;
009: import org.quartz.Trigger;
010:
011: /**
012: * Holds a List of references to SchedulerListener instances and broadcasts all
013: * events to them (in order).
014: *
015: * <p>This may be more convenient than registering all of the listeners
016: * directly with the Scheduler, and provides the flexibility of easily changing
017: * which listeners get notified.</p>
018: *
019: * @see #addListener(org.quartz.SchedulerListener)
020: * @see #removeListener(org.quartz.SchedulerListener)
021: *
022: * @author James House (jhouse AT revolition DOT net)
023: */
024: public class BroadcastSchedulerListener implements SchedulerListener {
025:
026: private List listeners;
027:
028: public BroadcastSchedulerListener() {
029: listeners = new LinkedList();
030: }
031:
032: /**
033: * Construct an instance with the given List of listeners.
034: *
035: * @param listeners the initial List of SchedulerListeners to broadcast to.
036: */
037: public BroadcastSchedulerListener(List listeners) {
038: this ();
039: this .listeners.addAll(listeners);
040: }
041:
042: public void addListener(SchedulerListener listener) {
043: listeners.add(listener);
044: }
045:
046: public boolean removeListener(SchedulerListener listener) {
047: return listeners.remove(listener);
048: }
049:
050: public List getListeners() {
051: return java.util.Collections.unmodifiableList(listeners);
052: }
053:
054: public void jobScheduled(Trigger trigger) {
055: Iterator itr = listeners.iterator();
056: while (itr.hasNext()) {
057: SchedulerListener l = (SchedulerListener) itr.next();
058: l.jobScheduled(trigger);
059: }
060: }
061:
062: public void jobUnscheduled(String triggerName, String triggerGroup) {
063: Iterator itr = listeners.iterator();
064: while (itr.hasNext()) {
065: SchedulerListener l = (SchedulerListener) itr.next();
066: l.jobUnscheduled(triggerName, triggerGroup);
067: }
068: }
069:
070: public void triggerFinalized(Trigger trigger) {
071: Iterator itr = listeners.iterator();
072: while (itr.hasNext()) {
073: SchedulerListener l = (SchedulerListener) itr.next();
074: l.triggerFinalized(trigger);
075: }
076: }
077:
078: public void triggersPaused(String triggerName, String triggerGroup) {
079: Iterator itr = listeners.iterator();
080: while (itr.hasNext()) {
081: SchedulerListener l = (SchedulerListener) itr.next();
082: l.triggersPaused(triggerName, triggerGroup);
083: }
084: }
085:
086: public void triggersResumed(String triggerName, String triggerGroup) {
087: Iterator itr = listeners.iterator();
088: while (itr.hasNext()) {
089: SchedulerListener l = (SchedulerListener) itr.next();
090: l.triggersResumed(triggerName, triggerGroup);
091: }
092: }
093:
094: public void jobsPaused(String jobName, String jobGroup) {
095: Iterator itr = listeners.iterator();
096: while (itr.hasNext()) {
097: SchedulerListener l = (SchedulerListener) itr.next();
098: l.jobsPaused(jobName, jobGroup);
099: }
100: }
101:
102: public void jobsResumed(String jobName, String jobGroup) {
103: Iterator itr = listeners.iterator();
104: while (itr.hasNext()) {
105: SchedulerListener l = (SchedulerListener) itr.next();
106: l.jobsResumed(jobName, jobGroup);
107: }
108: }
109:
110: public void schedulerError(String msg, SchedulerException cause) {
111: Iterator itr = listeners.iterator();
112: while (itr.hasNext()) {
113: SchedulerListener l = (SchedulerListener) itr.next();
114: l.schedulerError(msg, cause);
115: }
116: }
117:
118: public void schedulerShutdown() {
119: Iterator itr = listeners.iterator();
120: while (itr.hasNext()) {
121: SchedulerListener l = (SchedulerListener) itr.next();
122: l.schedulerShutdown();
123: }
124: }
125: }
|