add competitor registration in RegattaLog upon checkin if necessary

This commit is contained in:
Fredrik Teschke committed 2014-12-05 21:24:32 +01:00
1 parent 68f9b9fb6e
commit 8d810d915b
1 file changed
+11
@@ -8,6 +8,7 @@ import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.logging.Logger;
@@ -33,7 +34,9 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogCloseOpenEndedDeviceMappingEventImpl;
import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceCompetitorMappingEventImpl;
import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl;
import com.sap.sailing.domain.abstractlog.regatta.impl.OpenEndedDeviceMappingFinder;
import com.sap.sailing.domain.abstractlog.shared.analyzing.RegisteredCompetitorsAnalyzer;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.base.Fleet;
@@ -385,6 +388,14 @@ public class LeaderboardsResource extends AbstractSailingServerResource {
return Response.status(Status.BAD_REQUEST).entity("No competitor found for id " + competitorId)
.type(MediaType.TEXT_PLAIN).build();
}
//add registration if necessary
Set<Competitor> registered = new RegisteredCompetitorsAnalyzer<>(hasRegattaLog.getRegattaLog()).analyze();
if (!registered.contains(mappedTo)) {
hasRegattaLog.getRegattaLog().add(
new RegattaLogRegisterCompetitorEventImpl(now, author, now, UUID.randomUUID(), mappedTo));
}
DeviceIdentifier device = new SmartphoneUUIDIdentifierImpl(UUID.fromString(deviceUuid));
TimePoint from = new MillisecondsTimePoint(fromMillis);