mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-04 01:59:35 +00:00
Merged master
This commit is contained in:
commit
723c281f58
21 files changed
+374
-234
No files matched your search
+9
-12
@@ -35,35 +35,32 @@ public interface FlexibleLeaderboard extends Leaderboard, Renamable {
|
||||
void moveRaceColumnDown(String name);
|
||||
|
||||
/**
|
||||
* Adds a new {@link RaceColumn} that has no {@link TrackedRace} associated yet to this leaderboard.
|
||||
* Adds a new {@link RaceColumn} that has no {@link TrackedRace} associated yet to this leaderboard. The default
|
||||
* fleet will be used.
|
||||
*
|
||||
* @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
|
||||
* 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
|
||||
* the fleets to add to the {@link RaceColumn} created. If no fleets are specified, a single default
|
||||
* fleet will be assigned to the race column created.
|
||||
* @return the race column in the leaderboard used to represent the tracked <code>race</code>
|
||||
*/
|
||||
RaceColumn addRaceColumn(String name, boolean medalRace, Fleet... fleets);
|
||||
RaceColumn addRaceColumn(String name, boolean medalRace);
|
||||
|
||||
/**
|
||||
* Adds a tracked race to this leaderboard. If a {@link RaceColumn} with name <code>columnName</code> already exists
|
||||
* in this leaderboard, <code>race</code> is {@link RaceColumn#setTrackedRace(Fleet, TrackedRace) set as its tracked
|
||||
* race} and <code>medalRace</code> is ignored. Otherwise, a new {@link RaceColumn} column, with <code>race</code>
|
||||
* as its tracked race, is created and added to this leaderboard.
|
||||
* as its tracked race, is created and added to this leaderboard. The default fleet will be used.
|
||||
*
|
||||
* @param medalRace
|
||||
* tells if the column to add represents a medal race which has double score and cannot be discarded;
|
||||
* ignored if the column named <code>columnName</code> already exists
|
||||
* @param fleet
|
||||
* the fleet to link the race to when the {@link RaceColumn} is created.
|
||||
*
|
||||
* @return the race column in the leaderboard used to represent the tracked <code>race</code>
|
||||
*/
|
||||
RaceColumn addRace(TrackedRace race, String columnName, boolean medalRace, Fleet fleet);
|
||||
RaceColumn addRace(TrackedRace race, String columnName, boolean medalRace);
|
||||
|
||||
void removeRaceColumn(String columnName);
|
||||
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.sap.sailing.domain.leaderboard.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
|
||||
public class DefaultFleetImpl extends FleetImpl implements IsManagedBySharedDomainFactory {
|
||||
|
||||
private static final long serialVersionUID = 6233489616955255401L;
|
||||
|
||||
public DefaultFleetImpl() {
|
||||
super(LeaderboardNameConstants.DEFAULT_FLEET_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) {
|
||||
return FlexibleLeaderboardImpl.defaultFleet;
|
||||
}
|
||||
|
||||
}
|
||||
+13
-16
@@ -13,8 +13,6 @@ import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.RaceColumnListener;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleRaceColumn;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
@@ -39,7 +37,7 @@ 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(LeaderboardNameConstants.DEFAULT_FLEET_NAME);
|
||||
protected static final DefaultFleetImpl defaultFleet = new DefaultFleetImpl();
|
||||
private static final long serialVersionUID = -5708971849158747846L;
|
||||
private final List<FlexibleRaceColumn> races;
|
||||
private final ScoringScheme scoringScheme;
|
||||
@@ -96,24 +94,25 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceColumn addRace(TrackedRace race, String columnName, boolean medalRace, Fleet fleet) {
|
||||
FlexibleRaceColumn column = addRaceColumn(columnName, medalRace, /* logAlreadyExistingColumn */ false, fleet);
|
||||
column.setTrackedRace(fleet, race); // triggers listeners because this object was registered above as race column listener on the column
|
||||
public RaceColumn addRace(TrackedRace race, String columnName, boolean medalRace) {
|
||||
FlexibleRaceColumn column = addRaceColumn(columnName, medalRace, /* logAlreadyExistingColumn */false);
|
||||
column.setTrackedRace(defaultFleet, race); // triggers listeners because this object was registered above as
|
||||
// race column listener on the column
|
||||
return column;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FlexibleRaceColumn addRaceColumn(String name, boolean medalRace, Fleet... fleets) {
|
||||
return addRaceColumn(name, medalRace, /* logAlreadyExistingColumn */ true, fleets);
|
||||
public FlexibleRaceColumn addRaceColumn(String name, boolean medalRace) {
|
||||
return addRaceColumn(name, medalRace, /* logAlreadyExistingColumn */true);
|
||||
}
|
||||
|
||||
private FlexibleRaceColumn addRaceColumn(String name, boolean medalRace, boolean logAlreadyExistingColumn, Fleet... fleets) {
|
||||
private FlexibleRaceColumn addRaceColumn(String name, boolean medalRace, boolean logAlreadyExistingColumn) {
|
||||
FlexibleRaceColumn 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);
|
||||
column = createRaceColumn(name, medalRace);
|
||||
column.addRaceColumnListener(this);
|
||||
races.add(column);
|
||||
column.setRaceLogInformation(
|
||||
@@ -159,17 +158,15 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
||||
return Collections.unmodifiableCollection(new ArrayList<RaceColumn>(races));
|
||||
}
|
||||
|
||||
protected RaceColumnImpl createRaceColumn(String column, boolean medalRace, Fleet... fleets) {
|
||||
return new RaceColumnImpl(
|
||||
column,
|
||||
medalRace,
|
||||
turnNullOrEmptyFleetsIntoDefaultFleet(fleets));
|
||||
protected RaceColumnImpl createRaceColumn(String column, boolean medalRace) {
|
||||
return new RaceColumnImpl(column, medalRace);
|
||||
}
|
||||
|
||||
protected Iterable<Fleet> turnNullOrEmptyFleetsIntoDefaultFleet(Fleet... fleets) {
|
||||
Iterable<Fleet> theFleets;
|
||||
if (fleets == null || fleets.length == 0) {
|
||||
theFleets = Collections.singleton(defaultFleet);
|
||||
Fleet defaultfleetCasted = defaultFleet;
|
||||
theFleets = Collections.singleton(defaultfleetCasted);
|
||||
} else {
|
||||
theFleets = Arrays.asList(fleets);
|
||||
}
|
||||
|
||||
+3
-16
@@ -1,8 +1,6 @@
|
||||
package com.sap.sailing.domain.leaderboard.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.impl.AbstractRaceColumn;
|
||||
@@ -12,23 +10,12 @@ public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceCo
|
||||
private static final long serialVersionUID = -7801617988982540470L;
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* All fleets for which this column can contain a race. This is the maximum set of keys possible for
|
||||
* {@link #trackedRaces} and {@link #raceIdentifiers}.
|
||||
*/
|
||||
private final Iterable<Fleet> fleets;
|
||||
private boolean medalRace;
|
||||
|
||||
public RaceColumnImpl(String name, boolean medalRace, Iterable<Fleet> fleets) {
|
||||
public RaceColumnImpl(String name, boolean medalRace) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.medalRace = medalRace;
|
||||
List<Fleet> myFleets = new ArrayList<Fleet>();
|
||||
for (Fleet fleet : fleets) {
|
||||
myFleets.add(fleet);
|
||||
}
|
||||
Collections.sort(myFleets);
|
||||
this.fleets = myFleets;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -53,8 +40,8 @@ public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceCo
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Fleet> getFleets() {
|
||||
return fleets;
|
||||
public Iterable<? extends Fleet> getFleets() {
|
||||
return Collections.singleton(FlexibleLeaderboardImpl.defaultFleet);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user