1
2
3
4 package org.abraracourcix.alipes.listeners.status;
5 import java.util.Date;
6 import java.util.HashMap;
7 import java.util.Map;
8 import org.abraracourcix.alipes.common.Event;
9 import org.abraracourcix.alipes.listeners.Listener;
10 import org.abraracourcix.alipes.listeners.ListenerException;
11 import org.abraracourcix.alipes.monitors.AbstractMonitor;
12 /***
13 *
14 * This listener merely retains a list of the latest statuses, and the times
15 * they were received. It will also alert any listeners to the change of state.
16 * @author jdt
17 */
18 public final class StatusListener extends AbstractMonitor implements Listener {
19 /***
20 * @author jdt just a dataholder for the events and date
21 */
22 public final class ResourceInfo {
23 /***
24 * What happened
25 */
26 private Event event;
27 /***
28 * When
29 */
30 private Date date;
31 /***
32 * Constructor
33 *
34 * @param event
35 * what
36 * @param date
37 * when
38 */
39 public ResourceInfo(final Event event, final Date date) {
40 this.event = event;
41 this.date = date;
42 }
43 /***
44 * @return Returns the date.
45 */
46 public Date getDate() {
47 return date;
48 }
49 /***
50 * @return Returns the event.
51 */
52 public Event getEvent() {
53 return event;
54 }
55 }
56 /***
57 * Constructor
58 *
59 * @param listener
60 * who's listening?
61 *
62 */
63 public StatusListener(final Listener listener) {
64 super(listener);
65 }
66 /***
67 * Collection of resources for which we received statuses
68 */
69 private Map statuses = new HashMap();
70 /***
71 * Log the event, and keep a record of it
72 *
73 * @see org.abraracourcix.alipes.listeners.Listener#eventOccurred(org.abraracourcix.alipes.common.Event,
74 * java.lang.Object)
75 * @TODO deal with exceptions here properly
76 */
77 public void eventOccurred(final Event event, final Object resource) throws ListenerException {
78 statuses.put(resource, new ResourceInfo(event, new Date()));
79 signalListener(event, resource);
80 }
81 /***
82 * @return Returns the statuses.
83 */
84 public Map getStatuses() {
85 return statuses;
86 }
87 }
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112