added the necessary creation of a default fleet for legacy RaceColumns in leaderboard loading from Mongo;

added error message and robust handling in case a second RaceColumn by the same name is to be added to a
leaderboard; this may happen under rare and erroneous circumstances, probably during replication issues,
but shall not kill the replica. Also, fixed de-selection of tracked race after refactoring with fleets
This commit is contained in:
Axel Uhl committed 2012-05-21 16:12:48 +02:00
1 parent 0594f1c2ec
commit 9c6fcc0830
7 files changed
+30 -10

No files matched your search

@@ -187,6 +187,9 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
}
fleets.add(fleet);
}
if (fleets.isEmpty()) {
fleets.add(result.getFleet(null));
}
RaceColumn raceColumn = result.addRaceColumn((String) dbRaceColumn.get(FieldNames.LEADERBOARD_COLUMN_NAME.name()),
(Boolean) dbRaceColumn.get(FieldNames.LEADERBOARD_IS_MEDAL_RACE_COLUMN.name()), fleets.toArray(new Fleet[0]));
for (Map.Entry<String, RaceIdentifier> e : raceIdentifiers.entrySet()) {
@@ -1,7 +1,5 @@
package com.sap.sailing.domain.persistence.impl;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -48,8 +46,8 @@ public class FlexibleLeaderboardImplWithDelayedCarriedPoints extends FlexibleLea
private class RaceColumnForDelayedCarriedPoints extends RaceColumnImpl {
private static final long serialVersionUID = -1243132535406059096L;
public RaceColumnForDelayedCarriedPoints(Leaderboard leaderboard, String name, boolean medalRace, Fleet... fleets) {
super(name, medalRace, fleets==null ? Collections.singletonList(defaultFleet) : Arrays.asList(fleets));
public RaceColumnForDelayedCarriedPoints(Leaderboard leaderboard, String name, boolean medalRace, Iterable<Fleet> fleets) {
super(name, medalRace, fleets);
}
@Override
@@ -80,7 +78,7 @@ public class FlexibleLeaderboardImplWithDelayedCarriedPoints extends FlexibleLea
@Override
protected RaceColumnImpl createRaceColumn(String columnName, boolean medalRace, Fleet... fleets) {
return new RaceColumnForDelayedCarriedPoints(this, columnName, medalRace, fleets);
return new RaceColumnForDelayedCarriedPoints(this, columnName, medalRace, turnNullOrEmptyFleetsIntoDefaultFleet(fleets));
}
public void setCarriedPoints(String competitorName, int carriedPoints) {