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:
Lukas Niemeier committed 2013-03-04 16:59:42 +01:00
commit 79379e416a
33 files changed
+433 -220

No files matched your search

@@ -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 {
@@ -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;
@@ -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;
@@ -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;
@@ -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();
}
@@ -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;
}
}
@@ -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();
@@ -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 {
@@ -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();
}
}
@@ -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;
}
}
@@ -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;
}
}