mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-20 04:35:32 +00:00
Merge branch 'master' into bug4811
This commit is contained in:
@@ -789,4 +789,6 @@ public interface Leaderboard extends LeaderboardBase, HasRaceColumns {
|
||||
ScoreCorrectionMapping mapRegattaScoreCorrections(RegattaScoreCorrections regattaScoreCorrections,
|
||||
Map<String, RaceColumn> raceNumberOrNameToRaceColumnMap, Map<String, Competitor> sailIdToCompetitorMap,
|
||||
boolean allowRaceDefaultsByOrder, boolean allowPartialImport);
|
||||
|
||||
boolean isResultsAreOfficial(RaceColumn raceColumn, Fleet fleet);
|
||||
}
|
||||
+7
-1
@@ -10,6 +10,7 @@ import java.util.UUID;
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.ResultsAreOfficialFinder;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLog;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor;
|
||||
@@ -282,5 +283,10 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI
|
||||
RegattaLogBoatDeregistrator<RegattaLog, RegattaLogEvent, RegattaLogEventVisitor> deregisterer = new RegattaLogBoatDeregistrator<>(regattaLog, boats, regattaLogEventAuthorForAbstractLeaderboard);
|
||||
deregisterer.deregister(deregisterer.analyze());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isResultsAreOfficial(RaceColumn raceColumn, Fleet fleet) {
|
||||
final RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
return new ResultsAreOfficialFinder(raceLog).analyze() != null;
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -502,4 +502,9 @@ public class DelegatingRegattaLeaderboardWithCompetitorElimination extends Abstr
|
||||
return getFullLeaderboard().getNetPoints(competitor, raceColumn, timePoint, discardedRaceColumns,
|
||||
totalPointsProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isResultsAreOfficial(RaceColumn raceColumn, Fleet fleet) {
|
||||
return getFullLeaderboard().isResultsAreOfficial(raceColumn, fleet);
|
||||
}
|
||||
}
|
||||
|
||||
+18
-1
@@ -210,7 +210,7 @@ public abstract class AbstractMetaLeaderboard extends AbstractSimpleLeaderboardI
|
||||
return result;
|
||||
}
|
||||
|
||||
protected RaceColumn getColumnForLeaderboard(Leaderboard leaderboard) {
|
||||
protected MetaLeaderboardColumn getColumnForLeaderboard(Leaderboard leaderboard) {
|
||||
MetaLeaderboardColumn result = columnsForLeaderboards.get(leaderboard);
|
||||
if (result == null) {
|
||||
result = new MetaLeaderboardColumn(leaderboard, metaFleet);
|
||||
@@ -276,4 +276,21 @@ public abstract class AbstractMetaLeaderboard extends AbstractSimpleLeaderboardI
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isResultsAreOfficial(RaceColumn raceColumn, Fleet fleet) {
|
||||
if (!(raceColumn instanceof MetaLeaderboardColumn)) {
|
||||
throw new IllegalArgumentException("Expected a MetaLeaderboardColumn in a MetaLeaderboard but got "+raceColumn.getClass());
|
||||
}
|
||||
final MetaLeaderboardColumn metaRaceColumn = (MetaLeaderboardColumn) raceColumn;
|
||||
final Leaderboard leaderboard = metaRaceColumn.getLeaderboard();
|
||||
for (final RaceColumn raceColumnLeaderboardRaceColumn : leaderboard.getRaceColumns()) {
|
||||
for (final Fleet raceColumnLeaderboardFleet : raceColumnLeaderboardRaceColumn.getFleets()) {
|
||||
if (!leaderboard.isResultsAreOfficial(raceColumnLeaderboardRaceColumn, raceColumnLeaderboardFleet)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-8
@@ -10,8 +10,6 @@ import org.apache.shiro.SecurityUtils;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.ResultsAreOfficialFinder;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorWithBoat;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
@@ -180,7 +178,7 @@ public abstract class AbstractLeaderboardsResource extends AbstractSailingServer
|
||||
final JSONObject fleetJson = new JSONObject();
|
||||
fleetsJson.add(fleetJson);
|
||||
fleetJson.put("name", fleet.getName());
|
||||
fleetJson.put("resultsAreOfficial", isResultsAreOfficial(raceColumn, fleet));
|
||||
fleetJson.put("resultsAreOfficial", leaderboard.isResultsAreOfficial(raceColumn, fleet));
|
||||
final TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
|
||||
final JSONObject trackedRaceInfo;
|
||||
if (trackedRace == null) {
|
||||
@@ -206,11 +204,6 @@ public abstract class AbstractLeaderboardsResource extends AbstractSailingServer
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isResultsAreOfficial(RaceColumn raceColumn, Fleet fleet) {
|
||||
final RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
return new ResultsAreOfficialFinder(raceLog).analyze() != null;
|
||||
}
|
||||
|
||||
protected TimePoint calculateTimePointForResultState(Leaderboard leaderboard, ResultStates resultState) {
|
||||
TimePoint result = null;
|
||||
switch (resultState) {
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
<li>Importing of results where sail numbers have leading or trailing space/blank characters works now.</li>
|
||||
<li>Image URLs used for events must not use the insecure HTTP protocol anymore; they have to use HTTPS now,
|
||||
meaning they should start with "http://".</li>
|
||||
<li>Fixed a problem with API access to seasonal/overall leaderboards regarding reporting "official" status.
|
||||
Clients received an error message when querying seasonal leaderboards. This is now solved.</li>
|
||||
</ul>
|
||||
<h2 class="articleSubheadline">March 2021</h2>
|
||||
<ul class="bulletList">
|
||||
|
||||
Reference in New Issue
Block a user