resolve competitor via *ByIdAsString() and compare competitor in checkout

This commit is contained in:
Fredrik Teschke committed 2014-12-05 21:10:33 +01:00
1 parent d7e010c88a
commit 68f9b9fb6e
2 files changed
+21 -7

No files matched your search

@@ -7,6 +7,7 @@ import com.sap.sailing.domain.abstractlog.regatta.RegattaLog;
import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent;
import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor;
import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompetitorMappingEvent;
import com.sap.sse.common.WithID;
/**
@@ -16,10 +17,12 @@ import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompeti
*/
public class OpenEndedDeviceMappingFinder extends BaseLogAnalyzer<RegattaLog, RegattaLogEvent, RegattaLogEventVisitor, Serializable> {
private Serializable deviceUuid;
private final WithID mappedTo;
private final Serializable deviceUuid;
public OpenEndedDeviceMappingFinder(RegattaLog log, Serializable deviceUuid) {
public OpenEndedDeviceMappingFinder(RegattaLog log, WithID mappedTo, Serializable deviceUuid) {
super(log);
this.mappedTo = mappedTo;
this.deviceUuid = deviceUuid;
}
@@ -28,7 +31,8 @@ public class OpenEndedDeviceMappingFinder extends BaseLogAnalyzer<RegattaLog, Re
for (RegattaLogEvent regattaLogEvent : log.getUnrevokedEvents()) {
if (regattaLogEvent instanceof RegattaLogDeviceCompetitorMappingEvent) {
RegattaLogDeviceCompetitorMappingEvent deviceMappingEvent = (RegattaLogDeviceCompetitorMappingEvent) regattaLogEvent;
if (deviceMappingEvent.getDevice().getStringRepresentation().equals(deviceUuid)) {
if (deviceMappingEvent.getMappedTo().equals(mappedTo) &&
deviceMappingEvent.getDevice().getStringRepresentation().equals(deviceUuid)) {
return deviceMappingEvent.getId();
}
}
@@ -31,8 +31,6 @@ import org.json.simple.parser.ParseException;
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent;
import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceCompetitorMappingEvent;
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.impl.OpenEndedDeviceMappingFinder;
@@ -382,7 +380,11 @@ public class LeaderboardsResource extends AbstractSailingServerResource {
//TODO: use device type and pushDeviceId
Competitor mappedTo = domainFactory.getExistingCompetitorById(competitorId);
Competitor mappedTo = domainFactory.getCompetitorStore().getExistingCompetitorByIdAsString(competitorId);
if (mappedTo == null) {
return Response.status(Status.BAD_REQUEST).entity("No competitor found for id " + competitorId)
.type(MediaType.TEXT_PLAIN).build();
}
DeviceIdentifier device = new SmartphoneUUIDIdentifierImpl(UUID.fromString(deviceUuid));
TimePoint from = new MillisecondsTimePoint(fromMillis);
@@ -440,6 +442,7 @@ public class LeaderboardsResource extends AbstractSailingServerResource {
logger.fine("JSON requestObject is: " + requestObject.toString());
Long toMillis = (Long) requestObject.get("toMillis");
String competitorId = (String) requestObject.get("competitorId");
String deviceUuid = (String) requestObject.get("deviceUuid");
TimePoint closingTimePoint = new MillisecondsTimePoint(toMillis);
@@ -447,8 +450,15 @@ public class LeaderboardsResource extends AbstractSailingServerResource {
return Response.status(Status.BAD_REQUEST).entity("Invalid JSON body in request")
.type(MediaType.TEXT_PLAIN).build();
}
Competitor mappedTo = getService().getCompetitorStore().getExistingCompetitorByIdAsString(competitorId);
if (mappedTo == null) {
return Response.status(Status.BAD_REQUEST).entity("No competitor found for id " + competitorId)
.type(MediaType.TEXT_PLAIN).build();
}
OpenEndedDeviceMappingFinder finder = new OpenEndedDeviceMappingFinder(hasRegattaLog.getRegattaLog(), deviceUuid);
OpenEndedDeviceMappingFinder finder = new OpenEndedDeviceMappingFinder(hasRegattaLog.getRegattaLog(),
mappedTo, deviceUuid);
Serializable deviceMappingEventId = finder.analyze();
if (deviceMappingEventId == null) {