mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-22 12:03:58 +00:00
# added new RaceLogRaceStatus FINISHING
# added new generic event method to RaceLogListener
This commit is contained in:
1 parent
4112f6919c
commit
02c70e69b4
12 files changed
+56
-9
No files matched your search
+6
@@ -6,6 +6,7 @@ import com.mongodb.DBObject;
|
|||||||
import com.sap.sailing.domain.base.Fleet;
|
import com.sap.sailing.domain.base.Fleet;
|
||||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
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.RaceLogFlagEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogListener;
|
import com.sap.sailing.domain.racelog.RaceLogListener;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
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;
|
package com.sap.sailing.domain.racelog;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementors may use this interface to listen for added {@link RaceLogEvent}.
|
||||||
|
*/
|
||||||
public interface RaceLogListener {
|
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);
|
void flagEventReceived(RaceLogFlagEvent flagEvent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called additionally if the event is a {@link RaceLogStartTimeEvent}.
|
||||||
|
* @param startTimeEvent
|
||||||
|
*/
|
||||||
void startTimeEventReceived(RaceLogStartTimeEvent startTimeEvent);
|
void startTimeEventReceived(RaceLogStartTimeEvent startTimeEvent);
|
||||||
}
|
}
|
||||||
+1
-1
@@ -5,5 +5,5 @@ package com.sap.sailing.domain.racelog;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public enum RaceLogRaceStatus {
|
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) {
|
private void notifyListenersAboutReceive(RaceLogEvent event) {
|
||||||
|
notifiyListenersAboutReceivedEvent(event);
|
||||||
if (event instanceof RaceLogFlagEvent) {
|
if (event instanceof RaceLogFlagEvent) {
|
||||||
notifiyListenersAboutReceivedFlagEvent((RaceLogFlagEvent) event);
|
notifiyListenersAboutReceivedFlagEvent((RaceLogFlagEvent) event);
|
||||||
} else if (event instanceof RaceLogStartTimeEvent) {
|
} 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) {
|
private void notifiyListenersAboutReceivedStartTimeEvent(RaceLogStartTimeEvent event) {
|
||||||
synchronized (listeners) {
|
synchronized (listeners) {
|
||||||
for (RaceLogListener listener : listeners) {
|
for (RaceLogListener listener : listeners) {
|
||||||
|
|||||||
+1
-1
@@ -79,7 +79,7 @@ public class OfflineDataManager extends DataManager {
|
|||||||
RaceLogRaceStatus.SCHEDULED,
|
RaceLogRaceStatus.SCHEDULED,
|
||||||
new MillisecondsTimePoint(new Date().getTime() + 100000)));
|
new MillisecondsTimePoint(new Date().getTime() + 100000)));
|
||||||
log.add(factory.createRaceStatusEvent(
|
log.add(factory.createRaceStatusEvent(
|
||||||
new MillisecondsTimePoint(new Date()),
|
new MillisecondsTimePoint(new Date().getTime() + 1),
|
||||||
2,
|
2,
|
||||||
RaceLogRaceStatus.RUNNING));
|
RaceLogRaceStatus.RUNNING));
|
||||||
|
|
||||||
|
|||||||
+1
@@ -4,6 +4,7 @@ import com.sap.sailing.domain.common.Named;
|
|||||||
import com.sap.sailing.domain.common.WithID;
|
import com.sap.sailing.domain.common.WithID;
|
||||||
import com.sap.sailing.domain.racelog.RaceLog;
|
import com.sap.sailing.domain.racelog.RaceLog;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||||
|
import com.sap.sailing.racecommittee.app.domain.state.ManagedRaceState;
|
||||||
|
|
||||||
public interface ManagedRace extends ManagedRaceIdentifier, Named, WithID {
|
public interface ManagedRace extends ManagedRaceIdentifier, Named, WithID {
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -8,8 +8,9 @@ import com.sap.sailing.domain.racelog.RaceLog;
|
|||||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||||
import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier;
|
import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier;
|
||||||
import com.sap.sailing.racecommittee.app.domain.ManagedRaceState;
|
|
||||||
import com.sap.sailing.racecommittee.app.domain.RaceGroup;
|
import com.sap.sailing.racecommittee.app.domain.RaceGroup;
|
||||||
|
import com.sap.sailing.racecommittee.app.domain.state.ManagedRaceState;
|
||||||
|
import com.sap.sailing.racecommittee.app.domain.state.impl.ManagedRaceStateImpl;
|
||||||
|
|
||||||
public class ManagedRaceImpl implements ManagedRace {
|
public class ManagedRaceImpl implements ManagedRace {
|
||||||
private static final long serialVersionUID = -4936566684992524001L;
|
private static final long serialVersionUID = -4936566684992524001L;
|
||||||
|
|||||||
+8
-3
@@ -6,9 +6,11 @@ import com.sap.sailing.domain.base.Timed;
|
|||||||
import com.sap.sailing.domain.racelog.RaceLog;
|
import com.sap.sailing.domain.racelog.RaceLog;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogListener;
|
import com.sap.sailing.domain.racelog.RaceLogListener;
|
||||||
|
import com.sap.sailing.domain.racelog.impl.RaceLogEventComparator;
|
||||||
import com.sap.sailing.domain.tracking.impl.PartialNavigableSetView;
|
import com.sap.sailing.domain.tracking.impl.PartialNavigableSetView;
|
||||||
import com.sap.sailing.domain.tracking.impl.TrackImpl;
|
import com.sap.sailing.domain.tracking.impl.TrackImpl;
|
||||||
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
||||||
|
import com.sap.sailing.util.impl.ArrayListNavigableSet;
|
||||||
|
|
||||||
public class PassAwareRaceLog extends TrackImpl<RaceLogEvent> implements RaceLog {
|
public class PassAwareRaceLog extends TrackImpl<RaceLogEvent> implements RaceLog {
|
||||||
private static final String TAG = PassAwareRaceLog.class.getName();
|
private static final String TAG = PassAwareRaceLog.class.getName();
|
||||||
@@ -24,7 +26,7 @@ public class PassAwareRaceLog extends TrackImpl<RaceLogEvent> implements RaceLog
|
|||||||
}
|
}
|
||||||
|
|
||||||
public PassAwareRaceLog(int currentPassId) {
|
public PassAwareRaceLog(int currentPassId) {
|
||||||
super(ReadWriteLockName);
|
super(new ArrayListNavigableSet<Timed>(RaceLogEventComparator.INSTANCE), ReadWriteLockName);
|
||||||
this.currentPassId = currentPassId;
|
this.currentPassId = currentPassId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,8 +66,11 @@ public class PassAwareRaceLog extends TrackImpl<RaceLogEvent> implements RaceLog
|
|||||||
public boolean add(RaceLogEvent event) {
|
public boolean add(RaceLogEvent event) {
|
||||||
lockForWrite();
|
lockForWrite();
|
||||||
try {
|
try {
|
||||||
setCurrentPassId(Math.max(event.getPassId(), this.currentPassId));
|
if (getInternalRawFixes().add(event)) {
|
||||||
return getInternalRawFixes().add(event);
|
setCurrentPassId(Math.max(event.getPassId(), this.currentPassId));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
unlockAfterWrite();
|
unlockAfterWrite();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.racecommittee.app.domain;
|
package com.sap.sailing.racecommittee.app.domain.state;
|
||||||
|
|
||||||
import com.sap.sailing.domain.racelog.RaceLog;
|
import com.sap.sailing.domain.racelog.RaceLog;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||||
+2
-2
@@ -1,10 +1,10 @@
|
|||||||
package com.sap.sailing.racecommittee.app.domain.impl;
|
package com.sap.sailing.racecommittee.app.domain.state.impl;
|
||||||
|
|
||||||
import com.sap.sailing.domain.racelog.RaceLog;
|
import com.sap.sailing.domain.racelog.RaceLog;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||||
import com.sap.sailing.racecommittee.app.domain.ManagedRaceState;
|
import com.sap.sailing.racecommittee.app.domain.state.ManagedRaceState;
|
||||||
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
||||||
|
|
||||||
public class ManagedRaceStateImpl implements ManagedRaceState {
|
public class ManagedRaceStateImpl implements ManagedRaceState {
|
||||||
+1
@@ -190,6 +190,7 @@ public class RaceListAdapter extends ArrayAdapter<RaceListDataType> {
|
|||||||
RaceListDataTypeElement lastFinishedRace = null;
|
RaceListDataTypeElement lastFinishedRace = null;
|
||||||
int numberOfUnscheduledRaces = 0;
|
int numberOfUnscheduledRaces = 0;
|
||||||
|
|
||||||
|
/// TODO: new status FINISHING?!?!?!
|
||||||
for (RaceListDataTypeElement dataElement : elementList) {
|
for (RaceListDataTypeElement dataElement : elementList) {
|
||||||
if (dataElement.getRace().getStatus().equals(RaceLogRaceStatus.FINISHED)) {
|
if (dataElement.getRace().getStatus().equals(RaceLogRaceStatus.FINISHED)) {
|
||||||
lastFinishedRace = dataElement;
|
lastFinishedRace = dataElement;
|
||||||
|
|||||||
+1
@@ -85,6 +85,7 @@ public class RaceListDataTypeElement extends RaceListDataType {
|
|||||||
case STARTPHASE:
|
case STARTPHASE:
|
||||||
return String.format(startPhaseTemplate, formatStartTime());
|
return String.format(startPhaseTemplate, formatStartTime());
|
||||||
case RUNNING:
|
case RUNNING:
|
||||||
|
case FINISHING:
|
||||||
return String.format(runningTemplate, formatStartTime());
|
return String.format(runningTemplate, formatStartTime());
|
||||||
case FINISHED:
|
case FINISHED:
|
||||||
return finishedTemplate;
|
return finishedTemplate;
|
||||||
|
|||||||
Reference in new issue
Block a user