# added new RaceLogRaceStatus FINISHING

# added new generic event method to RaceLogListener
This commit is contained in:
Lukas Niemeier committed 2013-02-12 22:55:18 +01:00
1 parent 4112f6919c
commit 02c70e69b4
12 files changed
+56 -9

No files matched your search

@@ -6,6 +6,7 @@ import com.mongodb.DBObject;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.persistence.MongoObjectFactory;
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
import com.sap.sailing.domain.racelog.RaceLogEvent;
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
import com.sap.sailing.domain.racelog.RaceLogListener;
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
@@ -40,4 +41,9 @@ public class MongoRaceLogListener implements RaceLogListener {
}
@Override
public void eventReceived(RaceLogEvent event) {
// do nothing, we are interested in the typed events.
}
}
@@ -1,7 +1,25 @@
package com.sap.sailing.domain.racelog;
/**
* Implementors may use this interface to listen for added {@link RaceLogEvent}.
*/
public interface RaceLogListener {
/**
* This method is called for any event that is added to the host.
* @param event
*/
void eventReceived(RaceLogEvent event);
/**
* This method is called additionally if the event is a {@link RaceLogFlagEvent}.
* @param flagEvent
*/
void flagEventReceived(RaceLogFlagEvent flagEvent);
/**
* This method is called additionally if the event is a {@link RaceLogStartTimeEvent}.
* @param startTimeEvent
*/
void startTimeEventReceived(RaceLogStartTimeEvent startTimeEvent);
}
@@ -5,5 +5,5 @@ package com.sap.sailing.domain.racelog;
*
*/
public enum RaceLogRaceStatus {
UNKNOWN, UNSCHEDULED, SCHEDULED, STARTPHASE, RUNNING, FINISHED
UNKNOWN, UNSCHEDULED, SCHEDULED, STARTPHASE, RUNNING, FINISHING, FINISHED
}
@@ -43,6 +43,7 @@ public class RaceLogImpl extends TrackImpl<RaceLogEvent> implements RaceLog {
}
private void notifyListenersAboutReceive(RaceLogEvent event) {
notifiyListenersAboutReceivedEvent(event);
if (event instanceof RaceLogFlagEvent) {
notifiyListenersAboutReceivedFlagEvent((RaceLogFlagEvent) event);
} else if (event instanceof RaceLogStartTimeEvent) {
@@ -50,6 +51,19 @@ public class RaceLogImpl extends TrackImpl<RaceLogEvent> implements RaceLog {
}
}
private void notifiyListenersAboutReceivedEvent(RaceLogEvent event) {
synchronized (listeners) {
for (RaceLogListener listener : listeners) {
try {
listener.eventReceived(event);
} catch (Throwable t) {
logger.log(Level.SEVERE, "RaceLogListener " + listener + " threw exception " + t.getMessage());
logger.throwing(RaceLogImpl.class.getName(), "notifiyListenersAboutReceivedEvent(RaceLogEvent)", t);
}
}
}
}
private void notifiyListenersAboutReceivedStartTimeEvent(RaceLogStartTimeEvent event) {
synchronized (listeners) {
for (RaceLogListener listener : listeners) {