mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 21:30:57 +00:00
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:
1 parent
0594f1c2ec
commit
9c6fcc0830
7 files changed
+30
-10
No files matched your search
+3
@@ -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()) {
|
||||
|
||||
+3
-5
@@ -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) {
|
||||
|
||||
+4
@@ -28,6 +28,10 @@ public interface FlexibleLeaderboard extends Leaderboard {
|
||||
/**
|
||||
* Adds a new {@link RaceColumn} that has no {@link TrackedRace} associated yet to this leaderboard.
|
||||
*
|
||||
* @param name
|
||||
* the name for the new race column such that none of the columns in {@link #getRaceColumns()}
|
||||
* has that name yet; otherwise, an message will be logged, no race column will be added and
|
||||
* the existing column will be returned for robustness reasons
|
||||
* @param medalRace
|
||||
* tells if the column to add represents a medal race which has double score and cannot be discarded
|
||||
* @param fleets
|
||||
|
||||
+16
-3
@@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
@@ -21,6 +22,8 @@ import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
*
|
||||
*/
|
||||
public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements FlexibleLeaderboard {
|
||||
private static Logger logger = Logger.getLogger(FlexibleLeaderboardImpl.class.getName());
|
||||
|
||||
protected static final Fleet defaultFleet = new FleetImpl("Default");
|
||||
private static final long serialVersionUID = -5708971849158747846L;
|
||||
private final List<RaceColumn> races;
|
||||
@@ -33,8 +36,14 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
||||
|
||||
@Override
|
||||
public RaceColumn addRaceColumn(String name, boolean medalRace, Fleet... fleets) {
|
||||
RaceColumnImpl column = createRaceColumn(name, medalRace, fleets);
|
||||
races.add(column);
|
||||
RaceColumn column = getRaceColumnByName(name);
|
||||
if (column != null) {
|
||||
final String msg = "Trying to create race column with duplicate name "+name+" in leaderboard +"+getName();
|
||||
logger.severe(msg);
|
||||
} else {
|
||||
column = createRaceColumn(name, medalRace, fleets);
|
||||
races.add(column);
|
||||
}
|
||||
return column;
|
||||
}
|
||||
|
||||
@@ -71,13 +80,17 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
||||
}
|
||||
|
||||
protected RaceColumnImpl createRaceColumn(String columnName, boolean medalRace, Fleet... fleets) {
|
||||
return new RaceColumnImpl(columnName, medalRace, turnNullOrEmptyFleetsIntoDefaultFleet(fleets));
|
||||
}
|
||||
|
||||
protected Iterable<Fleet> turnNullOrEmptyFleetsIntoDefaultFleet(Fleet... fleets) {
|
||||
Iterable<Fleet> theFleets;
|
||||
if (fleets == null || fleets.length == 0) {
|
||||
theFleets = Collections.singleton(defaultFleet);
|
||||
} else {
|
||||
theFleets = Arrays.asList(fleets);
|
||||
}
|
||||
return new RaceColumnImpl(columnName, medalRace, theFleets);
|
||||
return theFleets;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
@@ -591,6 +591,8 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
RegattaAndRaceIdentifier raceIdentifier = regattaAndRaceNamesPerFleet.get(selectedFleetName);
|
||||
if (raceIdentifier != null) {
|
||||
selectRaceInList(raceIdentifier.getRegattaName(), raceIdentifier.getRaceName());
|
||||
} else {
|
||||
trackedRacesListComposite.clearSelection();
|
||||
}
|
||||
} else {
|
||||
trackedRacesListComposite.clearSelection();
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,com.tractrac.resultapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
@@ -25,6 +25,6 @@
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,com.tractrac.resultapi@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
|
||||
<stringAttribute key="yk-options" value=" additional-options2=onexit\=snapshot "/>
|
||||
</launchConfiguration>
|
||||
Reference in new issue
Block a user