mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-30 15:57:11 +00:00
Merge branch 'racecommittee_regattaoverview' into racecommittee_integrated
Conflicts: java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/racecommittee/domain/racelog/impl/PassAwareRaceLogImpl.java java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/racecommittee/domain/state/impl/analyzers/RaceStatusAnalyzer.java mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/deserialization/impl/RaceLogDeserializer.java mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/state/impl/RaceStateImpl.java
This commit is contained in:
commit
79379e416a
33 files changed
+433
-220
No files matched your search
+2
-2
@@ -23,8 +23,8 @@ import com.sap.sailing.racecommittee.app.data.clients.LoadClient;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.ManagedRaceIdentifierImpl;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.ManagedRaceImpl;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.impl.PassAwareRaceLogImpl;
|
||||
import com.sap.sailing.racecommittee.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.racecommittee.domain.racelog.impl.PassAwareRaceLogImpl;
|
||||
|
||||
public class OfflineDataManager extends DataManager {
|
||||
|
||||
|
||||
+2
-2
@@ -17,8 +17,8 @@ import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.FleetIdentifierImpl;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.ManagedRaceIdentifierImpl;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.ManagedRaceImpl;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.impl.PassAwareRaceLogImpl;
|
||||
import com.sap.sailing.racecommittee.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.racecommittee.domain.racelog.impl.PassAwareRaceLogImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.Helpers;
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.impl.PassAwareRaceLogImpl;
|
||||
import com.sap.sailing.racecommittee.domain.racelog.impl.PassAwareRaceLogImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.Helpers;
|
||||
|
||||
+1
-1
@@ -9,9 +9,9 @@ import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.racecommittee.app.domain.state.RaceState;
|
||||
import com.sap.sailing.racecommittee.app.domain.state.impl.RaceStateImpl;
|
||||
import com.sap.sailing.racecommittee.domain.racelog.PassAwareRaceLog;
|
||||
|
||||
public class ManagedRaceImpl implements ManagedRace {
|
||||
private static final long serialVersionUID = -4936566684992524001L;
|
||||
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.racelog;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
|
||||
public interface PassAwareRaceLog extends RaceLog {
|
||||
int getCurrentPassId();
|
||||
}
|
||||
-86
@@ -1,86 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.racelog.impl;
|
||||
|
||||
import java.util.NavigableSet;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.PartialNavigableSetView;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
||||
|
||||
public class PassAwareRaceLogImpl extends RaceLogImpl implements PassAwareRaceLog {
|
||||
private static final String TAG = PassAwareRaceLogImpl.class.getName();
|
||||
private static final long serialVersionUID = -1252381252528365834L;
|
||||
private static final String ReadWriteLockName = PassAwareRaceLogImpl.class.getName() + ".lock";
|
||||
|
||||
public static final int DefaultPassId = 0;
|
||||
|
||||
private int currentPassId;
|
||||
|
||||
public PassAwareRaceLogImpl(RaceLog raceLog) {
|
||||
this();
|
||||
for (RaceLogEvent event : raceLog.getRawFixes()) {
|
||||
this.add(event);
|
||||
}
|
||||
}
|
||||
|
||||
public PassAwareRaceLogImpl() {
|
||||
this(DefaultPassId);
|
||||
}
|
||||
|
||||
public PassAwareRaceLogImpl(int currentPassId) {
|
||||
super(ReadWriteLockName);
|
||||
this.currentPassId = currentPassId;
|
||||
}
|
||||
|
||||
public int getCurrentPassId() {
|
||||
return currentPassId;
|
||||
}
|
||||
|
||||
public void setCurrentPassId(int newPassId) {
|
||||
if (newPassId != this.currentPassId) {
|
||||
ExLog.i(TAG, String.format("Changing pass id to %d", newPassId));
|
||||
this.currentPassId = newPassId;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NavigableSet<RaceLogEvent> getFixes() {
|
||||
lockForRead();
|
||||
try {
|
||||
return super.getFixes();
|
||||
} finally {
|
||||
unlockAfterRead();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected NavigableSet<RaceLogEvent> getInternalFixes() {
|
||||
return new PartialNavigableSetView<RaceLogEvent>(super.getInternalFixes()) {
|
||||
@Override
|
||||
protected boolean isValid(RaceLogEvent e) {
|
||||
return e.getPassId() == getCurrentPassId();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(RaceLogEvent event) {
|
||||
boolean isAdded = false;
|
||||
lockForWrite();
|
||||
try {
|
||||
isAdded = getInternalRawFixes().add(event);
|
||||
} finally {
|
||||
unlockAfterWrite();
|
||||
}
|
||||
if (isAdded) {
|
||||
ExLog.i(TAG, String.format("%s (%s) was added to log.", event, event.getClass().getName()));
|
||||
setCurrentPassId(Math.max(event.getPassId(), this.currentPassId));
|
||||
notifyListenersAboutReceive(event);
|
||||
} else {
|
||||
ExLog.w(TAG, String.format("%s (%s) was not added to log. Ignoring", event, event.getClass().getName()));
|
||||
}
|
||||
return isAdded;
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -13,14 +13,14 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogPassChangeEventImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogRaceStatusEventImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogStartTimeEventImpl;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.RaceLogChangedListener;
|
||||
import com.sap.sailing.racecommittee.app.domain.racelog.impl.RaceLogChangedVisitor;
|
||||
import com.sap.sailing.racecommittee.app.domain.state.RaceState;
|
||||
import com.sap.sailing.racecommittee.app.domain.state.RaceStateChangedListener;
|
||||
import com.sap.sailing.racecommittee.app.domain.state.impl.analyzers.FinishedTimeFinder;
|
||||
import com.sap.sailing.racecommittee.app.domain.state.impl.analyzers.RaceStatusAnalyzer;
|
||||
import com.sap.sailing.racecommittee.app.domain.state.impl.analyzers.StartTimeFinder;
|
||||
import com.sap.sailing.racecommittee.domain.racelog.PassAwareRaceLog;
|
||||
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.RaceStatusAnalyzer;
|
||||
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.StartTimeFinder;
|
||||
|
||||
public class RaceStateImpl implements RaceState, RaceLogChangedListener {
|
||||
// private static final String TAG = RaceStateImpl.class.getName();
|
||||
|
||||
+1
@@ -5,6 +5,7 @@ import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.RaceLogAnalyzer;
|
||||
|
||||
public class FinishedTimeFinder extends RaceLogAnalyzer {
|
||||
|
||||
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.state.impl.analyzers;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
|
||||
public abstract class RaceLogAnalyzer {
|
||||
|
||||
private RaceLog raceLog;
|
||||
|
||||
public RaceLogAnalyzer(RaceLog raceLog) {
|
||||
this.raceLog = raceLog;
|
||||
}
|
||||
|
||||
protected Iterable<RaceLogEvent> getPassEvents() {
|
||||
return raceLog.getFixes();
|
||||
}
|
||||
|
||||
protected Iterable<RaceLogEvent> getAllEvents() {
|
||||
return raceLog.getRawFixes();
|
||||
}
|
||||
}
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.state.impl.analyzers;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.racecommittee.app.logging.ExLog;
|
||||
|
||||
public class RaceStatusAnalyzer extends RaceLogAnalyzer {
|
||||
private static final String TAG = RaceStatusAnalyzer.class.getName();
|
||||
|
||||
public RaceStatusAnalyzer(RaceLog raceLog) {
|
||||
super(raceLog);
|
||||
}
|
||||
|
||||
public RaceLogRaceStatus getStatus() {
|
||||
ExLog.i(TAG, String.format("Updating status..."));
|
||||
|
||||
RaceLogRaceStatus newStatus = RaceLogRaceStatus.UNSCHEDULED;
|
||||
for (RaceLogEvent event : getPassEvents()) {
|
||||
ExLog.i(TAG, String.format("Deciding on event of type %s.", event.getClass().getSimpleName()));
|
||||
if (event instanceof RaceLogRaceStatusEvent) {
|
||||
RaceLogRaceStatusEvent statusEvent = (RaceLogRaceStatusEvent) event;
|
||||
ExLog.i(TAG, String.format("Decision to %s.", statusEvent.getNextStatus()));
|
||||
newStatus = statusEvent.getNextStatus();
|
||||
}
|
||||
}
|
||||
|
||||
ExLog.i(TAG, String.format("Status will be set to %s.", newStatus));
|
||||
return newStatus;
|
||||
}
|
||||
|
||||
}
|
||||
-24
@@ -1,24 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.state.impl.analyzers;
|
||||
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
|
||||
public class StartTimeFinder extends RaceLogAnalyzer {
|
||||
|
||||
public StartTimeFinder(RaceLog raceLog) {
|
||||
super(raceLog);
|
||||
}
|
||||
|
||||
public TimePoint getStartTime() {
|
||||
TimePoint startTime = null;
|
||||
for (RaceLogEvent event : getPassEvents()) {
|
||||
if (event instanceof RaceLogStartTimeEvent) {
|
||||
startTime = ((RaceLogStartTimeEvent) event).getStartTime();
|
||||
}
|
||||
}
|
||||
return startTime;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user