diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java index 877900dc5b5..f9c50ad136b 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java @@ -31,11 +31,7 @@ import com.sap.sailing.domain.tracking.impl.TrackImpl; import com.sap.sailing.util.impl.ArrayListNavigableSet; /** - * {@link Track} implementation for {@link RaceLogEvent}s. - * - *

- * "Fix" validity is decided based on the {@link #getCurrentPassId() current pass}. The validity is not cached. - *

+ * {@link Track} implementation for {@link AbstractLogEvent}s. * *

* {@link TrackImpl#getDummyFix(com.sap.sailing.domain.common.TimePoint)} is not overridden, see @@ -86,8 +82,15 @@ extends TrackImpl implements AbstractLog { return this.id; } - @Override - public boolean add(EventT event) { + protected void onSuccessfulAdd(EventT event, boolean notifyListeners) { + revokeIfNecessary(event); + eventsById.put(event.getId(), event); + if (notifyListeners) { + notifyListenersAboutReceive(event); + } + } + + protected boolean add(EventT event, boolean notifyListeners) { boolean isAdded = false; lockForWrite(); try { @@ -97,35 +100,21 @@ extends TrackImpl implements AbstractLog { } if (isAdded) { logger.finer(String.format("%s (%s) was added to log %s.", event, event.getClass().getName(), getId())); - // FIXME with out-of-order delivery would destroy currentPassId; need to check at least the createdAt time - // point - revokeIfNecessary(event); - eventsById.put(event.getId(), event); - notifyListenersAboutReceive(event); + onSuccessfulAdd(event, true); } else { logger.fine(String.format("%s (%s) was not added to race log %s because it already existed there.", event, event.getClass().getName(), getId())); } return isAdded; } + + @Override + public boolean add(EventT event) { + return add(event, true); + } @Override public boolean load(EventT event) { - boolean isAdded = false; - lockForWrite(); - try { - isAdded = getInternalRawFixes().add(event); - } finally { - unlockAfterWrite(); - } - if (isAdded) { - logger.finer(String.format("%s (%s) was loaded into log.", event, event.getClass().getName())); - revokeIfNecessary(event); - eventsById.put(event.getId(), event); - } else { - logger.finer(String - .format("%s (%s) was not loaded into log because it already existed there.", event, event.getClass().getName())); - } - return isAdded; + return add(event, false); } private void revokeIfNecessary(EventT newEvent) { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLog.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLog.java index 48c3f1e111b..f58304745bc 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLog.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLog.java @@ -3,6 +3,9 @@ package com.sap.sailing.domain.abstractlog.race; import com.sap.sailing.domain.abstractlog.AbstractLog; import com.sap.sailing.domain.common.WithID; +/** +* "Fix" validity is decided based on the {@link #getCurrentPassId() current pass}. The validity is not cached. +*/ public interface RaceLog extends AbstractLog, WithID { public static final int DefaultPassId = 0; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogImpl.java index 15e3360faba..ee2245d9a9a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogImpl.java @@ -63,21 +63,11 @@ public class RaceLogImpl extends AbstractLogImpl