infer zeroBasedIndexInFleet if not transmitted explicity by searching through the RaceRow/RaceCell combo; slow but effective

Change-Id: Ib66bd39bdc66a95ed853d7529de5c209865d15c5
This commit is contained in:
Axel Uhl committed 2016-04-22 15:54:14 +02:00
1 parent 64eca8c4e1
commit 6ecb70d4c5
6 files changed
+31 -15

No files matched your search

@@ -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<Collection<ManagedRace
}
}
private ManagedRace createManagedRace(RaceGroup raceGroup, SeriesBase series, Fleet fleet, String raceColumnName,
private ManagedRace createManagedRace(RaceGroup raceGroup, SeriesWithRows series, Fleet fleet, String raceColumnName,
RaceLog raceLog, double factor, Double explicitFactor, int zeroBasedIndexInFleet) {
ConfigurationLoader<RegattaConfiguration> configurationLoader = globalConfigurationLoader;
RegattaConfiguration localConfiguration = raceGroup.getRegattaConfiguration();
@@ -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();
@@ -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;
}
@@ -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;
}
@@ -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
@@ -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);