diff --git a/configuration/buildAndUpdateProduct.sh b/configuration/buildAndUpdateProduct.sh index 103b1a37704..17618a90743 100755 --- a/configuration/buildAndUpdateProduct.sh +++ b/configuration/buildAndUpdateProduct.sh @@ -53,6 +53,7 @@ MAVEN_SETTINGS_PROXY=$PROJECT_HOME/configuration/maven-settings-proxy.xml p2PluginRepository=$PROJECT_HOME/java/com.sap.sailing.feature.p2build/bin/products/raceanalysis.product.id/linux/gtk/$ARCH +HAS_OVERWRITTEN_TARGET=0 TARGET_SERVER_NAME=$active_branch gwtcompile=1 @@ -104,7 +105,8 @@ do m) MAVEN_SETTINGS=$OPTARG;; n) OSGI_BUNDLE_NAME=$OPTARG;; l) OSGI_TELNET_PORT=$OPTARG;; - s) TARGET_SERVER_NAME=$OPTARG;; + s) TARGET_SERVER_NAME=$OPTARG + HAS_OVERWRITTEN_TARGET=1;; \?) echo "Invalid option" exit 2;; esac @@ -331,27 +333,28 @@ if [[ "$@" == "install" ]] || [[ "$@" == "all" ]]; then rm -rf $ACDIR/org.eclipse.* rm -rf $ACDIR/configuration/org.eclipse.* - rm -rf $ACDIR/start - rm -rf $ACDIR/stop + if [[ i$HAS_OVERWRITTEN_TARGET -eq 0 ]]; then + rm -rf $ACDIR/start + rm -rf $ACDIR/stop + + cp -v $p2PluginRepository/configuration/config.ini configuration/ + mkdir -p configuration/jetty/etc + cp -v $PROJECT_HOME/java/target/configuration/jetty/etc/jetty.xml configuration/jetty/etc + cp -v $PROJECT_HOME/java/target/configuration/jetty/etc/realm.properties configuration/jetty/etc + cp -v $PROJECT_HOME/java/target/configuration/monitoring.properties configuration/ + cp -v $PROJECT_HOME/configuration/mongodb.cfg $ACDIR/ + cp -v $PROJECT_HOME/java/target/start $ACDIR/ + cp -v $PROJECT_HOME/java/target/stop $ACDIR/ + fi - cp -v $p2PluginRepository/configuration/config.ini configuration/ cp -r -v $p2PluginRepository/configuration/org.eclipse.equinox.simpleconfigurator configuration/ cp -v $p2PluginRepository/plugins/*.jar plugins/ - mkdir -p configuration/jetty/etc - cp -v $PROJECT_HOME/java/target/configuration/jetty/etc/jetty.xml configuration/jetty/etc - cp -v $PROJECT_HOME/java/target/configuration/jetty/etc/realm.properties configuration/jetty/etc - cp -v $PROJECT_HOME/java/target/configuration/monitoring.properties configuration/ - - # Make sure mongodb configuration is active - cp -v $PROJECT_HOME/configuration/mongodb.cfg $ACDIR/ cp -rv $PROJECT_HOME/configuration/native-libraries $ACDIR/ # Make sure this script is up2date at least for the next run cp -v $PROJECT_HOME/configuration/buildAndUpdateProduct.sh $ACDIR/ - cp -v $PROJECT_HOME/java/target/start $ACDIR/ - cp -v $PROJECT_HOME/java/target/stop $ACDIR/ cp -v $PROJECT_HOME/java/target/udpmirror $ACDIR/ echo "Installation complete. You may now start the server using ./start" diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/StartProcedureType.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/StartProcedureType.java index 09a0d50fa98..89fa2786e3a 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/StartProcedureType.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/racelog/StartProcedureType.java @@ -1,8 +1,18 @@ package com.sap.sailing.domain.common.racelog; public enum StartProcedureType { - UNKNOWN, - RRS26, - GateStart, - ESS + //RRS26("Fix-Line-Start (RRS26)"), + GateStart("Gate-Line-Start"), + ESS("\"Extreme Sailing Series\"-Start"); + + private String displayName; + + private StartProcedureType(String displayName){ + this.displayName = displayName; + } + + @Override + public String toString(){ + return displayName; + } } diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventComparatorTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventComparatorTest.java index 02b2e998e06..54f773c59cf 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventComparatorTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogEventComparatorTest.java @@ -30,22 +30,38 @@ public class RaceLogEventComparatorTest { @Test public void testEqualsOnSame() { when(eventOne.getTimePoint()).thenReturn(new MillisecondsTimePoint(1)); + when(eventOne.getId()).thenReturn("a"); int result = comparator.compare(eventOne, eventOne); assertEquals(0, result); } @Test - public void testSamePassAndSameTime() { + public void testSamePassAndSameTimeSameId() { when(eventOne.getPassId()).thenReturn(0); when(eventOne.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventOne.getId()).thenReturn("a"); when(eventTwo.getPassId()).thenReturn(0); when(eventTwo.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventTwo.getId()).thenReturn("a"); int result = comparator.compare(eventOne, eventTwo); assertEquals(0, result); } + @Test + public void testSamePassAndSameTimeDifferentId() { + when(eventOne.getPassId()).thenReturn(0); + when(eventOne.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventOne.getId()).thenReturn("a"); + when(eventTwo.getPassId()).thenReturn(0); + when(eventTwo.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventTwo.getId()).thenReturn("b"); + + int result = comparator.compare(eventOne, eventTwo); + assertTrue(result < 0); + } + @Test public void testSamePassLowerHigherTime() { when(eventOne.getPassId()).thenReturn(0); diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogTest.java index 0811a18af2b..dc10560c6ef 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogTest.java @@ -61,8 +61,10 @@ public class RaceLogTest { when(eventOne.getPassId()).thenReturn(0); when(eventOne.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventOne.getId()).thenReturn("a"); when(eventTwo.getPassId()).thenReturn(1); when(eventTwo.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventTwo.getId()).thenReturn("b"); assertTrue(raceLog.add(eventOne)); assertTrue(raceLog.add(eventTwo)); @@ -74,14 +76,37 @@ public class RaceLogTest { } @Test - public void testWontAddEventSamePassSameTimePoint() { + public void testAddEventSamePassSameTimePointDifferentId() { RaceLogEvent eventOne = mock(RaceLogEvent.class); RaceLogEvent eventTwo = mock(RaceLogEvent.class); when(eventOne.getPassId()).thenReturn(0); when(eventOne.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventOne.getId()).thenReturn("a"); when(eventTwo.getPassId()).thenReturn(0); when(eventTwo.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventTwo.getId()).thenReturn("b"); + + assertTrue(raceLog.add(eventOne)); + assertTrue(raceLog.add(eventTwo)); + + raceLog.lockForRead(); + assertTrue(Util.contains(raceLog.getRawFixes(), eventOne)); + assertTrue(Util.contains(raceLog.getRawFixes(), eventTwo)); + raceLog.unlockAfterRead(); + } + + @Test + public void testWontAddEventSamePassSameTimePointSameId() { + RaceLogEvent eventOne = mock(RaceLogEvent.class); + RaceLogEvent eventTwo = mock(RaceLogEvent.class); + + when(eventOne.getPassId()).thenReturn(0); + when(eventOne.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventOne.getId()).thenReturn("a"); + when(eventTwo.getPassId()).thenReturn(0); + when(eventTwo.getTimePoint()).thenReturn(new MillisecondsTimePoint(0)); + when(eventTwo.getId()).thenReturn("a"); assertTrue(raceLog.add(eventOne)); assertFalse(raceLog.add(eventTwo)); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/StartProcedureTypeAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/StartProcedureTypeAnalyzer.java new file mode 100644 index 00000000000..f5d3047b514 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/analyzing/impl/StartProcedureTypeAnalyzer.java @@ -0,0 +1,36 @@ +package com.sap.sailing.domain.racelog.analyzing.impl; + +import com.sap.sailing.domain.common.racelog.StartProcedureType; +import com.sap.sailing.domain.racelog.RaceLog; +import com.sap.sailing.domain.racelog.RaceLogEvent; +import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent; + +public class StartProcedureTypeAnalyzer extends RaceLogAnalyzer { + + public StartProcedureTypeAnalyzer(RaceLog raceLog) { + super(raceLog); + } + + public StartProcedureType getActiveStartProcedureType() { + StartProcedureType result = null; + raceLog.lockForRead(); + try { + result = searchLog(); + } finally { + raceLog.unlockAfterRead(); + } + return result; + } + + private StartProcedureType searchLog() { + StartProcedureType result = null; + for (RaceLogEvent event : getAllEvents()) { + if (event instanceof RaceLogStartProcedureChangedEvent) { + RaceLogStartProcedureChangedEvent startProcedureEvent = (RaceLogStartProcedureChangedEvent) event; + result = startProcedureEvent.getStartProcedureType(); + } + } + return result; + } + +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/PassAwareRaceLogImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/PassAwareRaceLogImpl.java index b693d842d0b..36d6e6ca9f7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/PassAwareRaceLogImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/PassAwareRaceLogImpl.java @@ -1,6 +1,7 @@ package com.sap.sailing.domain.racelog.impl; import java.util.NavigableSet; +import java.util.logging.Logger; import com.sap.sailing.domain.racelog.PassAwareRaceLog; import com.sap.sailing.domain.racelog.RaceLog; @@ -8,27 +9,27 @@ import com.sap.sailing.domain.racelog.RaceLogEvent; import com.sap.sailing.domain.tracking.impl.PartialNavigableSetView; public class PassAwareRaceLogImpl extends RaceLogImpl implements PassAwareRaceLog { - // private static final String TAG = PassAwareRaceLogImpl.class.getName(); + private static final Logger logger = Logger.getLogger(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(); + + public static PassAwareRaceLog copy(RaceLog raceLog) { + PassAwareRaceLog newRaceLog = new PassAwareRaceLogImpl(); raceLog.lockForRead(); try { for (RaceLogEvent event : raceLog.getRawFixes()) { - this.add(event); + newRaceLog.add(event); } } finally { raceLog.unlockAfterRead(); } - + return newRaceLog; } + private int currentPassId; + public PassAwareRaceLogImpl() { this(DefaultPassId); } @@ -44,7 +45,7 @@ public class PassAwareRaceLogImpl extends RaceLogImpl implements PassAwareRaceLo public void setCurrentPassId(int newPassId) { if (newPassId != this.currentPassId) { - // ExLog.i(TAG, String.format("Changing pass id to %d", newPassId)); + logger.info(String.format("Changing pass id to %d", newPassId)); this.currentPassId = newPassId; } } @@ -79,11 +80,11 @@ public class PassAwareRaceLogImpl extends RaceLogImpl implements PassAwareRaceLo unlockAfterWrite(); } if (isAdded) { - // ExLog.i(TAG, String.format("%s (%s) was added to log.", event, event.getClass().getName())); + logger.finer(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())); + logger.warning(String.format("%s (%s) was not added to log. Ignoring", event, event.getClass().getName())); } return isAdded; } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventComparator.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventComparator.java index 44ddd3c1699..f7e1bb326b2 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventComparator.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogEventComparator.java @@ -28,11 +28,20 @@ public enum RaceLogEventComparator implements Comparator, Serializable { private int compareEvents(RaceLogEvent e1, RaceLogEvent e2) { int result = comparePasses(e1, e2); - return result == 0 ? timedComparator.compare(e1, e2) : result; + return result == 0 ? compareTimes(e1, e2) : result; } private int comparePasses(RaceLogEvent e1, RaceLogEvent e2) { return e1.getPassId() - e2.getPassId(); } + private int compareTimes(RaceLogEvent e1, RaceLogEvent e2) { + int result = timedComparator.compare(e1, e2); + return result == 0 ? compareIds(e1, e2) : result; + } + + private int compareIds(RaceLogEvent e1, RaceLogEvent e2) { + return e1.getId().toString().compareTo(e2.getId().toString()); + } + } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogImpl.java index 1ceee9cebfc..9aebedb90a0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/impl/RaceLogImpl.java @@ -15,12 +15,10 @@ import com.sap.sailing.domain.tracking.impl.TrackImpl; import com.sap.sailing.util.impl.ArrayListNavigableSet; public class RaceLogImpl extends TrackImpl implements RaceLog { - private static final long serialVersionUID = -176745401321893502L; - - private transient Set listeners; - private final static Logger logger = Logger.getLogger(RaceLogImpl.class.getName()); + + private transient Set listeners; public RaceLogImpl(String nameForReadWriteLock) { super(new ArrayListNavigableSet(RaceLogEventComparator.INSTANCE), nameForReadWriteLock); @@ -45,7 +43,10 @@ public class RaceLogImpl extends TrackImpl implements RaceLog { unlockAfterWrite(); } if (isAdded) { + logger.finer(String.format("%s (%s) was added to log.", event, event.getClass().getName())); notifyListenersAboutReceive(event); + } else { + logger.warning(String.format("%s (%s) was not added to log. Ignoring", event, event.getClass().getName())); } return isAdded; } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PassawareRaceLogTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PassawareRaceLogTest.java index ff250aecb88..b0f51c1356c 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PassawareRaceLogTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/PassawareRaceLogTest.java @@ -29,7 +29,7 @@ public class PassawareRaceLogTest { RaceLogFlagEvent rcEvent1 = RaceLogEventFactory.INSTANCE.createFlagEvent(t1, UUID.randomUUID(), new ArrayList(), passId, Flags.CLASS, Flags.NONE, false); RaceLogFlagEvent rcEvent2 = RaceLogEventFactory.INSTANCE.createFlagEvent(t1, UUID.randomUUID(), new ArrayList(), ++passId, Flags.CLASS, Flags.NONE, false); - RaceLog passAwareRaceLog = new PassAwareRaceLogImpl(raceLog); + RaceLog passAwareRaceLog = PassAwareRaceLogImpl.copy(raceLog); passAwareRaceLog.add(rcEvent1); passAwareRaceLog.add(rcEvent2); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 65d7c97f9b8..1b2e2049905 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -125,6 +125,7 @@ import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory; import com.sap.sailing.domain.persistence.MongoWindStoreFactory; import com.sap.sailing.domain.polarsheets.BoatAndWindSpeed; import com.sap.sailing.domain.polarsheets.PolarSheetGenerationWorker; +import com.sap.sailing.domain.racelog.PassAwareRaceLog; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.analyzing.impl.GateLineOpeningTimeFinder; @@ -1159,7 +1160,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S RaceLog raceLog = raceColumn.getRaceLog(fleet); if (raceLog != null) { - PassAwareRaceLogImpl passAwareRaceLog = new PassAwareRaceLogImpl(raceLog); + PassAwareRaceLog passAwareRaceLog = PassAwareRaceLogImpl.copy(raceLog); StartTimeFinder startTimeFinder = new StartTimeFinder(passAwareRaceLog); if(startTimeFinder.getStartTime()!=null){ raceInfoDTO.startTime = startTimeFinder.getStartTime().asDate(); diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java index bb853212629..a0bb8caafb0 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java @@ -122,7 +122,7 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends RaceLogMongoDBTest @Test public void testStoreAndRetrieveSimpleLeaderboardWithRaceLogStartProcedureChangedEvent() { - RaceLogStartProcedureChangedEvent expectedEvent = RaceLogEventFactory.INSTANCE.createStartProcedureChangedEvent(now, 0, StartProcedureType.RRS26); + RaceLogStartProcedureChangedEvent expectedEvent = RaceLogEventFactory.INSTANCE.createStartProcedureChangedEvent(now, 0, StartProcedureType.ESS); addAndStoreRaceLogEvent(regatta, raceColumnName, expectedEvent); diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogStartProcedureChangedEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogStartProcedureChangedEventSerializer.java index 2b9d70772a1..fc78673cdb4 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogStartProcedureChangedEventSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogStartProcedureChangedEventSerializer.java @@ -25,7 +25,7 @@ public class RaceLogStartProcedureChangedEventSerializer extends BaseRaceLogEven public JSONObject serialize(RaceLogEvent object) { RaceLogStartProcedureChangedEvent event = (RaceLogStartProcedureChangedEvent) object; JSONObject result = super.serialize(event); - result.put(FIELD_START_PROCEDURE_TYPE, event.getStartProcedureType().toString()); + result.put(FIELD_START_PROCEDURE_TYPE, event.getStartProcedureType().name()); return result; } diff --git a/java/com.sap.sailing.www/images/key-visual.jpg b/java/com.sap.sailing.www/images/key-visual.jpg new file mode 100644 index 00000000000..1910a01ddba Binary files /dev/null and b/java/com.sap.sailing.www/images/key-visual.jpg differ diff --git a/java/com.sap.sailing.www/index.html b/java/com.sap.sailing.www/index.html index c7cf8b1afb6..2f5f1cedafa 100644 --- a/java/com.sap.sailing.www/index.html +++ b/java/com.sap.sailing.www/index.html @@ -16,7 +16,7 @@
- Sailer + Sailer

SAP Sailing Analytics

diff --git a/java/com.sap.sailing.xcelsiusadapter/src/com/sap/sailing/xcelsiusadapter/RegattaDataPerLegAction.java b/java/com.sap.sailing.xcelsiusadapter/src/com/sap/sailing/xcelsiusadapter/RegattaDataPerLegAction.java index 29b39abdd4c..d1b7bff99b5 100755 --- a/java/com.sap.sailing.xcelsiusadapter/src/com/sap/sailing/xcelsiusadapter/RegattaDataPerLegAction.java +++ b/java/com.sap.sailing.xcelsiusadapter/src/com/sap/sailing/xcelsiusadapter/RegattaDataPerLegAction.java @@ -217,7 +217,7 @@ public class RegattaDataPerLegAction extends HttpAction { int posGL = 0; if (previousLeg != null) { posGL = rankAtWaypoint.get(competitor).get(trackedLeg.getLeg().getTo()) - - - rankAtWaypoint.get(competitor).get(trackedLeg.getLeg().getFrom()); + rankAtWaypoint.get(competitor).get(trackedLeg.getLeg().getFrom()); } final Element competitor_node = addNamedElement(competitor_data_node, "competitor"); diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_block.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_block.png new file mode 100644 index 00000000000..826c0941d36 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_block.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_recent_history.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_recent_history.png new file mode 100644 index 00000000000..4101434e57c Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_recent_history.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share.png new file mode 100644 index 00000000000..2837615728b Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share_holo_light.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share_holo_light.png new file mode 100644 index 00000000000..682b2fdec4c Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share_holo_light.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share_red.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share_red.png new file mode 100644 index 00000000000..af9e930240b Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_menu_share_red.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_reset_time.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_reset_time.xml index 0bac901213b..627fad8ded2 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_reset_time.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_reset_time.xml @@ -2,129 +2,135 @@ - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:orientation="vertical" + android:layout_marginBottom="18dp"> + + + + + + + - - - -