diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java index 72691953bdf..7f4c499cfa3 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java @@ -69,5 +69,5 @@ public enum FieldNames { RACE_LOG_EVENT, RACE_LOG_EVENT_PASS_ID, RACE_LOG_EVENT_ID, RACE_LOG_EVENT_CREATED_AT, RACE_LOG_EVENT_INVOLVED_BOATS, RACE_LOG_EVENT_FLAG_UPPER, RACE_LOG_EVENT_FLAG_LOWER, RACE_LOG_EVENT_FLAG_DISPLAYED, RACE_LOG_EVENT_START_TIME, RACE_LOG_EVENT_CLASS, RACE_LOG_EVENT_NEXT_STATUS, RACE_LOG_COURSE_DESIGN, WAYPOINT_ID, WAYPOINT_NAME, WAYPOINT_PASSINGSIDE, CONTROLPOINT, CONTROLPOINT_CLASS, MARK_ID, MARK_COLOR, MARK_NAME, MARK_PATTERN, MARK_SHAPE, MARK_TYPE, - CONTROLPOINT_VALUE, GATE_ID, GATE_NAME, GATE_LEFT, GATE_RIGHT, RACE_LOG_POSITIONED_COMPETITORS; + CONTROLPOINT_VALUE, GATE_ID, GATE_NAME, GATE_LEFT, GATE_RIGHT, RACE_LOG_POSITIONED_COMPETITORS, RACE_LOG_PATHFINDER_ID; } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java index 7b841b62ea2..c192dcc3010 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java @@ -52,6 +52,7 @@ import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.tracking.Positioned; @@ -575,6 +576,13 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogFinishPositioningConfirmedEvent(finishPositioningConfirmedEvent)); return result; } + + public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogPathfinderEvent pathfinderEvent) { + BasicDBObject result = new BasicDBObject(); + result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), MongoUtils.escapeDollarAndDot(raceLogIdentifier.getIdentifier().toString())); + result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogPathfinderEventEvent(pathfinderEvent)); + return result; + } private DBObject storeRaceLogStartTimeEvent(RaceLogStartTimeEvent startTimeEvent) { DBObject result = new BasicDBObject(); @@ -674,6 +682,16 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { return result; } + private Object storeRaceLogPathfinderEventEvent(RaceLogPathfinderEvent pathfinderEvent) { + DBObject result = new BasicDBObject(); + storeRaceLogEventProperties(pathfinderEvent, result); + + result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogPathfinderEvent.class.getSimpleName()); + + result.put(FieldNames.RACE_LOG_PATHFINDER_ID.name(), pathfinderEvent.getPathfinderId()); + return result; + } + private BasicDBList storePositionedCompetitors(List> positionedCompetitors) { BasicDBList dbList = new BasicDBList(); diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRaceLogListener.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRaceLogListener.java index c3c64cfa55d..784d137171d 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRaceLogListener.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRaceLogListener.java @@ -12,6 +12,7 @@ import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; @@ -76,4 +77,10 @@ public class MongoRaceLogListener implements RaceLogEventVisitor { raceLogsCollection.insert(finishPositioningConfirmedEventTrackEntry); } + @Override + public void visit(RaceLogPathfinderEvent event) { + DBObject pathfinderEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event); + raceLogsCollection.insert(pathfinderEventTrackEntry); + } + } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventFactory.java index cdd527b456b..fd1d7aaffa0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventFactory.java @@ -38,4 +38,8 @@ public interface RaceLogEventFactory { RaceLogFinishPositioningConfirmedEvent createFinishPositioningConfirmedEvent(TimePoint timePoint, Serializable id, List competitors, int passId); RaceLogFinishPositioningConfirmedEvent createFinishPositioningConfirmedEvent(TimePoint timePoint, int passId); + + RaceLogPathfinderEvent createPathfinderEvent(TimePoint timePoint, Serializable id, List competitors, int passId, String pathfinderId); + RaceLogPathfinderEvent createPathfinderEvent(TimePoint timePoint, int passId, String pathfinderId); + } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventVisitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventVisitor.java index 3ed50d2889a..42153a1cb85 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventVisitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogEventVisitor.java @@ -16,4 +16,6 @@ public interface RaceLogEventVisitor { public void visit(RaceLogFinishPositioningListChangedEvent event); public void visit(RaceLogFinishPositioningConfirmedEvent event); + + public void visit(RaceLogPathfinderEvent event); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogGatelineOpeneningTimeEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogGatelineOpeneningTimeEvent.java new file mode 100644 index 00000000000..4006d8315e4 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogGatelineOpeneningTimeEvent.java @@ -0,0 +1,6 @@ +package com.sap.sailing.domain.racelog; + + +public interface RaceLogGatelineOpeneningTimeEvent extends RaceLogEvent { + long getGateLineOpeningTime(); +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogPathfinderEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogPathfinderEvent.java new file mode 100644 index 00000000000..163b5ebbe5e --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/RaceLogPathfinderEvent.java @@ -0,0 +1,6 @@ +package com.sap.sailing.domain.racelog; + + +public interface RaceLogPathfinderEvent extends RaceLogEvent { + String getPathfinderId(); +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/PathfinderFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/PathfinderFinder.java new file mode 100644 index 00000000000..38500595484 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/PathfinderFinder.java @@ -0,0 +1,38 @@ +package com.sap.sailing.domain.racelog.analyzing.impl; + +import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sailing.domain.racelog.RaceLogEvent; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; + +public class PathfinderFinder extends RaceLogAnalyzer { + + public PathfinderFinder(RaceLog raceLog) { + super(raceLog); + } + + public String getPathfinderId() { + String pathfinderId; + this.raceLog.lockForRead(); + try { + pathfinderId = searchForPathfinderId(); + } finally { + this.raceLog.unlockAfterRead(); + } + + return pathfinderId; + } + + private String searchForPathfinderId() { + String pathfinderId = null; + + for (RaceLogEvent event : getPassEvents()) { + if (event instanceof RaceLogPathfinderEvent) { + pathfinderId = ((PathfinderFinder) event).getPathfinderId(); + + } + } + + return pathfinderId; + } + +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventFactoryImpl.java index da44a9b1c65..7c369d1ad3c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventFactoryImpl.java @@ -19,6 +19,7 @@ import com.sap.sailing.domain.racelog.RaceLogEventFactory; import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; @@ -116,4 +117,15 @@ public class RaceLogEventFactoryImpl implements RaceLogEventFactory { return createFinishPositioningConfirmedEvent(timePoint, UUID.randomUUID(), new ArrayList(), passId); } + @Override + public RaceLogPathfinderEvent createPathfinderEvent(TimePoint timePoint, Serializable id, + List competitors, int passId, String pathfinderId) { + return new RaceLogPathfinderEventImpl(MillisecondsTimePoint.now(), timePoint, id, competitors, passId, pathfinderId); + } + + @Override + public RaceLogPathfinderEvent createPathfinderEvent(TimePoint timePoint, int passId, String pathfinderId) { + return createPathfinderEvent(timePoint, UUID.randomUUID(), new ArrayList(), passId, pathfinderId); + } + } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPathfinderEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPathfinderEventImpl.java new file mode 100644 index 00000000000..556ca263cc7 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogPathfinderEventImpl.java @@ -0,0 +1,32 @@ +package com.sap.sailing.domain.racelog.impl; + +import java.io.Serializable; +import java.util.List; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.common.TimePoint; +import com.sap.sailing.domain.racelog.RaceLogEventVisitor; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; + +public class RaceLogPathfinderEventImpl extends RaceLogEventImpl implements RaceLogPathfinderEvent { + + private static final long serialVersionUID = -1654474931330970804L; + private String pathfinderId; + + public RaceLogPathfinderEventImpl(TimePoint createdAt, + TimePoint pTimePoint, Serializable pId, List pCompetitors, int pPassId, String pathfinderId) { + super(createdAt, pTimePoint, pId, pCompetitors, pPassId); + this.pathfinderId = pathfinderId; + } + + @Override + public void accept(RaceLogEventVisitor visitor) { + visitor.visit(this); + } + + @Override + public String getPathfinderId() { + return this.pathfinderId; + } + +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnRaceLogReplicator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnRaceLogReplicator.java index 431dada9d4d..92656d7394f 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnRaceLogReplicator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnRaceLogReplicator.java @@ -12,6 +12,7 @@ import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; @@ -72,4 +73,9 @@ public class RaceColumnRaceLogReplicator implements RaceLogEventVisitor, Seriali public void visit(RaceLogFinishPositioningConfirmedEvent event) { notifyOnAdd(event); } + + @Override + public void visit(RaceLogPathfinderEvent event) { + notifyOnAdd(event); + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceLogListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceLogListener.java index a3525c57f74..3f066868755 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceLogListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceLogListener.java @@ -7,6 +7,7 @@ import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent; import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.tracking.TrackedRace; @@ -61,4 +62,9 @@ public class TrackedRaceLogListener implements RaceLogEventVisitor { // do nothing score correction is handled by the leaderboard } + @Override + public void visit(RaceLogPathfinderEvent event) { + // doo nothing + } + } diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerChooserTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerChooserTest.java index 32502201b56..c0d2464e972 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerChooserTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerChooserTest.java @@ -25,6 +25,7 @@ public class RaceLogEventSerializerChooserTest { private JsonSerializer courseDesignChangedEventSerializer; private JsonSerializer finishPositioningListChangedEventSerializer; private JsonSerializer finishPositioningConfirmedEventSerializer; + private JsonSerializer pathfinderEventSerializer; private RaceLogEventFactory factory; @@ -39,6 +40,7 @@ public class RaceLogEventSerializerChooserTest { courseDesignChangedEventSerializer = mock(JsonSerializer.class); finishPositioningListChangedEventSerializer = mock(JsonSerializer.class); finishPositioningConfirmedEventSerializer = mock(JsonSerializer.class); + pathfinderEventSerializer = mock(JsonSerializer.class); chooser = new RaceLogEventSerializerChooserImpl( flagEventSerializer, @@ -48,7 +50,8 @@ public class RaceLogEventSerializerChooserTest { passChangedSerializer, courseDesignChangedEventSerializer, finishPositioningListChangedEventSerializer, - finishPositioningConfirmedEventSerializer); + finishPositioningConfirmedEventSerializer, + pathfinderEventSerializer); factory = RaceLogEventFactory.INSTANCE; } @@ -108,5 +111,12 @@ public class RaceLogEventSerializerChooserTest { RaceLogEvent event = factory.createFinishPositioningConfirmedEvent(null, 0); assertEquals(finishPositioningConfirmedEventSerializer, chooser.getSerializer(event)); } + + @Test + public void testChoosesPathfinderSerializer() { + // we use the real event type here because we do not want to re-implement the dispatching. + RaceLogEvent event = factory.createPathfinderEvent(null, 0, "GER 20"); + assertEquals(pathfinderEventSerializer, chooser.getSerializer(event)); + } } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java index d65f734a3f9..e77d56b90b1 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java @@ -28,7 +28,8 @@ public class RaceLogEventSerializer implements JsonSerializer { new MarkJsonSerializer(), new GateJsonSerializer(new MarkJsonSerializer()))))), new RaceLogFinishPositioningListChangedEventSerializer(competitorSerializer), - new RaceLogFinishPositioningConfirmedEventSerializer(competitorSerializer))); + new RaceLogFinishPositioningConfirmedEventSerializer(competitorSerializer), + new RaceLogPathfinderEventSerializer(competitorSerializer))); } private RaceLogEventSerializerChooser serializerChooser; diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializerChooserImpl.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializerChooserImpl.java index 883949add46..b8a84874f94 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializerChooserImpl.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializerChooserImpl.java @@ -8,6 +8,7 @@ import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent; import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.server.gateway.serialization.JsonSerializer; @@ -23,6 +24,7 @@ public class RaceLogEventSerializerChooserImpl implements RaceLogEventSerializer private final JsonSerializer courseDesignChangedEventSerializer; private final JsonSerializer finishPositioningListChangedEventSerializer; private final JsonSerializer finishPositioningConfirmedEventSerializer; + private final JsonSerializer pathfinderEventSerializer; private JsonSerializer chosenSerializer; @@ -34,7 +36,8 @@ public class RaceLogEventSerializerChooserImpl implements RaceLogEventSerializer JsonSerializer passChangedEventSerializer, JsonSerializer courseDesignChangedEventSerializer, JsonSerializer finishPositioningListChangedEventSerializer, - JsonSerializer finishPositioningConfirmedEventSerializer) { + JsonSerializer finishPositioningConfirmedEventSerializer, + JsonSerializer pathfinderEventSerializer) { this.flagEventSerializer = flagEventSerializer; this.startTimeSerializer = startTimeSerializer; this.raceStatusSerializer = raceStatusSerializer; @@ -43,7 +46,8 @@ public class RaceLogEventSerializerChooserImpl implements RaceLogEventSerializer this.courseDesignChangedEventSerializer = courseDesignChangedEventSerializer; this.finishPositioningListChangedEventSerializer = finishPositioningListChangedEventSerializer; this.finishPositioningConfirmedEventSerializer = finishPositioningConfirmedEventSerializer; - + this.pathfinderEventSerializer = finishPositioningConfirmedEventSerializer; + this.chosenSerializer = null; } @@ -99,4 +103,9 @@ public class RaceLogEventSerializerChooserImpl implements RaceLogEventSerializer chosenSerializer = finishPositioningConfirmedEventSerializer; } + @Override + public void visit(RaceLogPathfinderEvent event) { + chosenSerializer = pathfinderEventSerializer; + } + } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogPathfinderEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogPathfinderEventSerializer.java new file mode 100644 index 00000000000..019523756ba --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogPathfinderEventSerializer.java @@ -0,0 +1,35 @@ +package com.sap.sailing.server.gateway.serialization.racelog.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.racelog.RaceLogEvent; +import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public class RaceLogPathfinderEventSerializer extends BaseRaceLogEventSerializer { + + public static final String VALUE_CLASS = RaceLogPathfinderEvent.class.getSimpleName(); + public static final String FIELD_PATHFINDER_ID = "pathfinderId"; + + public RaceLogPathfinderEventSerializer( + JsonSerializer competitorSerializer) { + super(competitorSerializer); + } + + @Override + protected String getClassFieldValue() { + return VALUE_CLASS; + } + + @Override + public JSONObject serialize(RaceLogEvent object) { + RaceLogPathfinderEvent pathfinderEvent = (RaceLogPathfinderEvent) object; + + JSONObject result = super.serialize(pathfinderEvent); + result.put(FIELD_PATHFINDER_ID, pathfinderEvent.getPathfinderId()); + + return result; + } + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_startphase_gate_view.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_startphase_gate_view.xml index ba09197411f..8dbe31dbb9e 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_startphase_gate_view.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_startphase_gate_view.xml @@ -114,6 +114,38 @@ android:layout_weight="0.99" android:gravity="center_horizontal" android:orientation="vertical" > + + + +