-
Notifications
You must be signed in to change notification settings - Fork 0
/
EventLog.java
63 lines (56 loc) · 1.42 KB
/
EventLog.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package model;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* Represents a log of to-do list events.
* We use the Singleton Design Pattern to ensure that there is only
* one EventLog in the system and that the system has global access
* to the single instance of the EventLog.
*/
public class EventLog implements Iterable<Event> {
/**
* the only EventLog in the system (Singleton Design Pattern)
*/
private static EventLog theLog;
private Collection<Event> events;
/**
* Prevent external construction.
* (Singleton Design Pattern).
*/
private EventLog() {
events = new ArrayList<Event>();
}
/**
* Gets instance of EventLog - creates it
* if it doesn't already exist.
* (Singleton Design Pattern)
*
* @return instance of EventLog
*/
public static EventLog getInstance() {
if (theLog == null) {
theLog = new EventLog();
}
return theLog;
}
/**
* Adds an event to the event log.
*
* @param e the event to be added
*/
public void logEvent(Event e) {
events.add(e);
}
/**
* Clears the event log and logs the event.
*/
public void clear() {
events.clear();
logEvent(new Event("Event log cleared."));
}
@Override
public Iterator<Event> iterator() {
return events.iterator();
}
}