mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 21:30:57 +00:00
Merge branch 'master' into racecommittee_app
This commit is contained in:
commit
4ff174a9a5
84 files changed
+2957
-514
No files matched your search
+4
@@ -185,6 +185,10 @@ public abstract class AbstractLeaderboardDTO implements Serializable {
|
||||
public List<RaceColumnDTO> getRaceList() {
|
||||
return races;
|
||||
}
|
||||
|
||||
public void setRaceList(List<RaceColumnDTO> raceList) {
|
||||
this.races = raceList;
|
||||
}
|
||||
|
||||
public boolean raceListContains(String raceColumnName) {
|
||||
return getRaceColumnByName(raceColumnName) != null;
|
||||
|
||||
+33
-1
@@ -67,6 +67,14 @@ public class IncrementalLeaderboardDTO extends LeaderboardDTO implements Increme
|
||||
|
||||
private Set<String> raceColumnNamesForWhichCompetitorOrderingPerRaceUnchanged;
|
||||
|
||||
/**
|
||||
* For each index in this object's {@link #getRaceList()}, either has <code>-1</code> meaning that the element at the respective index
|
||||
* is properly set because it has changed compared to the previous version, or it has a non-negative index pointing to the previous
|
||||
* leaderboard's {@link #getRaceList()} result which has an unchanged {@link RaceColumnDTO} at that index which is to be
|
||||
* set in this object's {@link #getRaceList()} during {@link #applyThisToPreviousVersionByUpdatingThis(LeaderboardDTO) expansion}.
|
||||
*/
|
||||
private int[] indexOfUnchangedRaceColumnDTOsInPrevious;
|
||||
|
||||
private transient Cloner cloner;
|
||||
|
||||
/**
|
||||
@@ -363,7 +371,13 @@ public class IncrementalLeaderboardDTO extends LeaderboardDTO implements Increme
|
||||
}
|
||||
competitorDisplayNames = expandedCompetitorDisplayNames;
|
||||
}
|
||||
// TODO ensure that the races collection has all the necessary RaceColumnDTO objects before looking them up by name
|
||||
if (indexOfUnchangedRaceColumnDTOsInPrevious != null) {
|
||||
for (int i=0; i<indexOfUnchangedRaceColumnDTOsInPrevious.length; i++) {
|
||||
if (indexOfUnchangedRaceColumnDTOsInPrevious[i] != -1) {
|
||||
getRaceList().set(i, previousVersion.getRaceList().get(indexOfUnchangedRaceColumnDTOsInPrevious[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
Set<String> columnNamesForWhichToExpandCompetitorOrderingPerRace = new HashSet<String>(getCompetitorOrderingPerRaceColumnName().keySet());
|
||||
for (String raceColumnNameForWhichCompetitorOrderingPerRaceUnchanged : raceColumnNamesForWhichCompetitorOrderingPerRaceUnchanged) {
|
||||
// be on the safe side regarding the equals/hashCode implementation of RaceColumnDTO and look it up by name for old and new version
|
||||
@@ -605,6 +619,24 @@ public class IncrementalLeaderboardDTO extends LeaderboardDTO implements Increme
|
||||
if (legDetailsUnchanged != null) {
|
||||
legDetailsUnchanged.compact(); // compacts even those columns where the *last* entry was one with a null leg index
|
||||
}
|
||||
if (getRaceList() != null) {
|
||||
List<RaceColumnDTO> newRaceList = new ArrayList<RaceColumnDTO>(getRaceList().size());
|
||||
indexOfUnchangedRaceColumnDTOsInPrevious = new int[getRaceList().size()];
|
||||
boolean changed = false;
|
||||
for (int raceIndex=0; raceIndex<getRaceList().size(); raceIndex++) {
|
||||
int previousIndex = previousVersion.getRaceList().indexOf(getRaceList().get(raceIndex));
|
||||
indexOfUnchangedRaceColumnDTOsInPrevious[raceIndex] = previousIndex;
|
||||
if (previousIndex != -1) {
|
||||
newRaceList.add(null);
|
||||
changed = true;
|
||||
} else {
|
||||
newRaceList.add(getRaceList().get(raceIndex));
|
||||
}
|
||||
}
|
||||
if (changed) {
|
||||
setRaceList(newRaceList);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user