diff --git a/src/main/java/EventListener.java b/src/main/java/EventListener.java index 9119f82..31c7dae 100644 --- a/src/main/java/EventListener.java +++ b/src/main/java/EventListener.java @@ -1,4 +1,4 @@ -public class EventListener { +public class EventListener extends Thread { private String messageToListenFor; private String messageToReplyWith; @@ -17,16 +17,27 @@ public EventListener(String message, String reply, Tracker tracker) { } public void run() { + while (!readyToQuit()) { + if (shouldReply()){ + eventTracker.handle(messageToReplyWith, ); //pass in instance of event handler + //the Handler should print out the reply + } + } } - public Boolean readyToQuit() { - return null; + public Boolean readyToQuit() { // return true if there is a "quit" event in the event tracker + if (eventTracker.) + return false; } - public Boolean shouldReply() { - return null; + public Boolean shouldReply() { // return true if the event tracker has a message the listener is listening for + if (messageToListenFor == "test"){ + return true; + } + return false; } public void reply() { + System.out.println(messageToReplyWith); } } \ No newline at end of file diff --git a/src/main/java/EventTracker.java b/src/main/java/EventTracker.java index 84885a4..2f3cf7c 100644 --- a/src/main/java/EventTracker.java +++ b/src/main/java/EventTracker.java @@ -1,5 +1,6 @@ import java.util.HashMap; import java.util.Map; +import java.util.Set; public class EventTracker implements Tracker { @@ -12,17 +13,33 @@ private EventTracker() { } synchronized public static EventTracker getInstance() { - return null; + return INSTANCE; } + public Map getTracker() { return tracker; } + synchronized public void push(String message) { + Integer value = tracker.get(message); + value++; + tracker.put(message, value); } synchronized public Boolean has(String message) { - return null; + for (String k : tracker.keySet()){ + if (k.equals(message)){ + Integer value = tracker.get(message); + if (value != null && value > 0) return true; + } + } + return false; } synchronized public void handle(String message, EventHandler e) { + // run the event handler's handle function (??) + + Integer value = tracker.get(message); + value--; // decrement the integer associated with the message passed in + tracker.put(message, value); } // Do not use this. This constructor is for tests only diff --git a/src/test/java/EventListenerTest.java b/src/test/java/EventListenerTest.java index 3d4b2eb..8d94d9a 100644 --- a/src/test/java/EventListenerTest.java +++ b/src/test/java/EventListenerTest.java @@ -4,7 +4,7 @@ import java.util.List; import java.util.Map; -public class EventListenerTest { +public class EventListenerTest extends Thread { @Test public void readToQuit() { @@ -37,18 +37,21 @@ class TrackerMock implements Tracker { public boolean itemWasPushed; public boolean eventWasHandled; - @Override public Map tracker() { + //return EvenTracker HashMap? return null; } @Override public void push(String message) { + //add message to EventTracker Hashmap as key, return true; + //(if already in hashmap, increment counter value) itemWasPushed = true; } @Override - public boolean has(String message) { + public Boolean has(String message) { + //if message is a Key in hashmap, return true; return true; } diff --git a/src/test/java/EventTrackerTest.java b/src/test/java/EventTrackerTest.java index 11cab9d..53905aa 100644 --- a/src/test/java/EventTrackerTest.java +++ b/src/test/java/EventTrackerTest.java @@ -32,7 +32,7 @@ public void tracker() { eventTracker.push("test"); - Assert.assertEquals(testList, eventTracker.tracker()); + Assert.assertEquals(testList, eventTracker.getTracker()); }