fixed in-place modification of competitorOrderingPerRace and replaced it by copying the original map before modifying it

This commit is contained in:
Axel Uhl committed 2013-05-23 16:38:40 +02:00
1 parent d4dee9d3f6
commit d9dd3a941f
2 files changed
+12 -4

No files matched your search

@@ -1,5 +1,6 @@
package com.sap.sailing.domain.common.dto;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -94,14 +95,17 @@ public class IncrementalLeaderboardDTO extends LeaderboardDTO implements Cloneab
competitorDisplayNamesUnchanged = true;
competitorDisplayNames = null;
}
raceColumnNamesForWhichCompetitorOrderingPerRaceUnchanged = new HashSet<String>();
final HashMap<RaceColumnDTO, List<CompetitorDTO>> competitorOrderingPerRace = new HashMap<RaceColumnDTO, List<CompetitorDTO>>(getCompetitorOrderingPerRace());
for (RaceColumnDTO raceColumn : this.getRaceList()) {
List<CompetitorDTO> competitorsFromBestToWorstForRaceColumn = getCompetitorsFromBestToWorst(raceColumn);
List<CompetitorDTO> previousCompetitorsFrombestToWorstForRaceColumn = previousVersion.getCompetitorsFromBestToWorst(raceColumn);
if (Util.equalsWithNull(competitorsFromBestToWorstForRaceColumn, previousCompetitorsFrombestToWorstForRaceColumn)) {
raceColumnNamesForWhichCompetitorOrderingPerRaceUnchanged.add(raceColumn.name);
removeCompetitorsFromBestToWorst(raceColumn);
competitorOrderingPerRace.remove(raceColumn);
}
}
setCompetitorOrderingPerRace(competitorOrderingPerRace);
// TODO remove those field values from this which are equal to previousVersion, set ...Unchanged flags accordingly
return this;
}
@@ -98,11 +98,15 @@ public class LeaderboardDTO extends AbstractLeaderboardDTO implements Serializab
public void setCompetitorsFromBestToWorst(RaceColumnDTO raceColumn, List<CompetitorDTO> orderedCompetitors) {
competitorOrderingPerRace.put(raceColumn, orderedCompetitors);
}
protected List<CompetitorDTO> removeCompetitorsFromBestToWorst(RaceColumnDTO raceColumn) {
return competitorOrderingPerRace.remove(raceColumn);
protected void setCompetitorOrderingPerRace(Map<RaceColumnDTO, List<CompetitorDTO>> competitorOrderingPerRace) {
this.competitorOrderingPerRace = competitorOrderingPerRace;
}
protected Map<RaceColumnDTO, List<CompetitorDTO>> getCompetitorOrderingPerRace() {
return competitorOrderingPerRace;
}
public List<CompetitorDTO> getCompetitorsFromBestToWorst(RaceColumnDTO raceColumn) {
return competitorOrderingPerRace.get(raceColumn);
}