From 6ecb70d4c51a3401f4f5f70b54360f3f9ea478ff Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 22 Apr 2016 15:54:14 +0200 Subject: [PATCH] infer zeroBasedIndexInFleet if not transmitted explicity by searching through the RaceRow/RaceCell combo; slow but effective Change-Id: Ib66bd39bdc66a95ed853d7529de5c209865d15c5 --- .../data/parsers/ManagedRacesDataParser.java | 3 +-- .../app/domain/FleetIdentifier.java | 4 ++-- .../app/domain/impl/FleetIdentifierImpl.java | 8 +++---- .../impl/ManagedRaceIdentifierImpl.java | 4 ++-- .../app/domain/impl/ManagedRaceImpl.java | 23 ++++++++++++++++--- .../SimpleRaceIdentifierEscapingTest.java | 4 ++-- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/parsers/ManagedRacesDataParser.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/parsers/ManagedRacesDataParser.java index 0b0789dc0ef..c6cb55eba88 100755 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/parsers/ManagedRacesDataParser.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/data/parsers/ManagedRacesDataParser.java @@ -11,7 +11,6 @@ import org.json.simple.JSONValue; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.SeriesBase; import com.sap.sailing.domain.base.configuration.ConfigurationLoader; import com.sap.sailing.domain.base.configuration.RegattaConfiguration; import com.sap.sailing.domain.base.racegroup.RaceCell; @@ -72,7 +71,7 @@ public class ManagedRacesDataParser implements DataParser configurationLoader = globalConfigurationLoader; RegattaConfiguration localConfiguration = raceGroup.getRegattaConfiguration(); diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/FleetIdentifier.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/FleetIdentifier.java index 597b257aa5b..b1f87e47112 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/FleetIdentifier.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/FleetIdentifier.java @@ -1,14 +1,14 @@ package com.sap.sailing.racecommittee.app.domain; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.SeriesBase; import com.sap.sailing.domain.base.racegroup.RaceGroup; +import com.sap.sailing.domain.base.racegroup.SeriesWithRows; public interface FleetIdentifier { public Fleet getFleet(); - public SeriesBase getSeries(); + public SeriesWithRows getSeries(); public RaceGroup getRaceGroup(); diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/FleetIdentifierImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/FleetIdentifierImpl.java index 0ab155c64b0..25ecf802f76 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/FleetIdentifierImpl.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/FleetIdentifierImpl.java @@ -1,18 +1,18 @@ package com.sap.sailing.racecommittee.app.domain.impl; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.SeriesBase; import com.sap.sailing.domain.base.racegroup.RaceGroup; +import com.sap.sailing.domain.base.racegroup.SeriesWithRows; import com.sap.sailing.racecommittee.app.domain.FleetIdentifier; import com.sap.sse.common.Util.Triple; public class FleetIdentifierImpl implements FleetIdentifier { private Fleet fleet; - private SeriesBase series; + private SeriesWithRows series; private RaceGroup raceGroup; - public FleetIdentifierImpl(Fleet fleet, SeriesBase series, RaceGroup raceGroup) { + public FleetIdentifierImpl(Fleet fleet, SeriesWithRows series, RaceGroup raceGroup) { this.fleet = fleet; this.series = series; this.raceGroup = raceGroup; @@ -22,7 +22,7 @@ public class FleetIdentifierImpl implements FleetIdentifier { return fleet; } - public SeriesBase getSeries() { + public SeriesWithRows getSeries() { return series; } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceIdentifierImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceIdentifierImpl.java index 10202c3a4a5..4390fe5f574 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceIdentifierImpl.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceIdentifierImpl.java @@ -1,8 +1,8 @@ package com.sap.sailing.racecommittee.app.domain.impl; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.SeriesBase; import com.sap.sailing.domain.base.racegroup.RaceGroup; +import com.sap.sailing.domain.base.racegroup.SeriesWithRows; import com.sap.sailing.racecommittee.app.domain.FleetIdentifier; import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier; @@ -10,7 +10,7 @@ public class ManagedRaceIdentifierImpl extends FleetIdentifierImpl implements Ma private String raceColumnName; - public ManagedRaceIdentifierImpl(String raceColumnName, Fleet fleetWithRaceNames, SeriesBase series, RaceGroup raceGroup) { + public ManagedRaceIdentifierImpl(String raceColumnName, Fleet fleetWithRaceNames, SeriesWithRows series, RaceGroup raceGroup) { super(fleetWithRaceNames, series, raceGroup); this.raceColumnName = raceColumnName; } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceImpl.java index 88a8e43727a..c79c4f17b9d 100755 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceImpl.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/impl/ManagedRaceImpl.java @@ -11,9 +11,9 @@ import com.sap.sailing.domain.abstractlog.race.state.RaceState; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.SeriesBase; import com.sap.sailing.domain.base.racegroup.RaceCell; import com.sap.sailing.domain.base.racegroup.RaceGroup; +import com.sap.sailing.domain.base.racegroup.SeriesWithRows; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.data.AndroidRaceLogResolver; @@ -97,7 +97,7 @@ public class ManagedRaceImpl implements ManagedRace { } @Override - public SeriesBase getSeries() { + public SeriesWithRows getSeries() { return identifier.getSeries(); } @@ -223,7 +223,24 @@ public class ManagedRaceImpl implements ManagedRace { @Override public int getZeroBasedIndexInFleet() { - return zeroBasedIndexInFleet; + int result = -1; + if (zeroBasedIndexInFleet != -1) { + // it was properly delivered by a compatible server; that's our result + result = zeroBasedIndexInFleet; + } else { + // we deal with an incompatible server that doesn't know about this field yet; + // try to compute from the surrounding race group: + int i=0; + for (final RaceCell cell : getSeries().getRaceRow(getFleet()).getCells()) { + if (cell.getName().equals(getRaceColumnName())) { + result = i; + break; + } + i++; + } + // if a cell with this race's race column name is not found, leave the index at -1 + } + return result; } @Override diff --git a/mobile/com.sap.sailing.racecommittee.app/tests-jvm/src/com/sap/sailing/racecommittee/app/domain/impl/SimpleRaceIdentifierEscapingTest.java b/mobile/com.sap.sailing.racecommittee.app/tests-jvm/src/com/sap/sailing/racecommittee/app/domain/impl/SimpleRaceIdentifierEscapingTest.java index d74114461d8..be50ab207a4 100755 --- a/mobile/com.sap.sailing.racecommittee.app/tests-jvm/src/com/sap/sailing/racecommittee/app/domain/impl/SimpleRaceIdentifierEscapingTest.java +++ b/mobile/com.sap.sailing.racecommittee.app/tests-jvm/src/com/sap/sailing/racecommittee/app/domain/impl/SimpleRaceIdentifierEscapingTest.java @@ -7,8 +7,8 @@ import static org.mockito.Mockito.when; import org.junit.Test; import com.sap.sailing.domain.base.Fleet; -import com.sap.sailing.domain.base.SeriesBase; import com.sap.sailing.domain.base.racegroup.RaceGroup; +import com.sap.sailing.domain.base.racegroup.SeriesWithRows; import com.sap.sailing.domain.base.racegroup.impl.RaceGroupImpl; import com.sap.sailing.racecommittee.app.domain.ManagedRaceIdentifier; import com.sap.sse.common.Util.Triple; @@ -43,7 +43,7 @@ public class SimpleRaceIdentifierEscapingTest { private String build(final String leaderboardName, final String seriesName, final String fleetName, final String raceColumnName) { Fleet fleet = mock(Fleet.class); - SeriesBase series = mock(SeriesBase.class); + SeriesWithRows series = mock(SeriesWithRows.class); RaceGroup raceGroup = mock(RaceGroupImpl.class); when(fleet.getName()).thenReturn(fleetName);