mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 21:30:57 +00:00
compact the competitor in LeaderboardRowDTO
This commit is contained in:
1 parent
6aeaecd4fc
commit
38e7b14ac3
2 files changed
+23
-3
No files matched your search
+7
-3
@@ -440,10 +440,12 @@ public class IncrementalLeaderboardDTO extends LeaderboardDTO implements Increme
|
||||
if (rows == null) {
|
||||
rows = new HashMap<CompetitorDTO, LeaderboardRowDTO>();
|
||||
}
|
||||
// expand all keys and remove values from compact keys and re-enter with expanded keys
|
||||
// expand all keys and remove values from compact keys and re-enter with expanded keys; expand their competitor field
|
||||
for (CompetitorDTO compactCompetitor : new ArrayList<CompetitorDTO>(rows.keySet())) {
|
||||
final CompetitorDTO expandedCompetitor = compactCompetitor.getCompetitorFromPrevious(previousVersion);
|
||||
rows.put(expandedCompetitor, rows.remove(compactCompetitor));
|
||||
final LeaderboardRowDTO row = rows.remove(compactCompetitor);
|
||||
row.competitor = expandedCompetitor;
|
||||
rows.put(expandedCompetitor, row);
|
||||
}
|
||||
for (Pair<CompetitorDTO, Void> rowUnchanged : rowsUnchanged.getAllUnchangedCompetitorsAndKeys(previousVersion)) {
|
||||
rowsUnchangedForCompetitors.add(rowUnchanged.getA());
|
||||
@@ -595,7 +597,9 @@ public class IncrementalLeaderboardDTO extends LeaderboardDTO implements Increme
|
||||
} else {
|
||||
LeaderboardRowDTO newRowDTO = new LeaderboardRowDTO();
|
||||
cloner.clone(competitorAndRow.getValue(), newRowDTO);
|
||||
newRows.put(compactCompetitorMap.get(competitorAndRow.getKey()), newRowDTO);
|
||||
CompetitorDTO compactCompetitor = compactCompetitorMap.get(competitorAndRow.getKey());
|
||||
newRowDTO.competitor = compactCompetitor;
|
||||
newRows.put(compactCompetitor, newRowDTO);
|
||||
HashMap<String, LeaderboardEntryDTO> newFieldsByRaceColumnName = new HashMap<String, LeaderboardEntryDTO>();
|
||||
for (Map.Entry<String, LeaderboardEntryDTO> raceColumnNameAndLeaderboardEntry : newRowDTO.fieldsByRaceColumnName.entrySet()) {
|
||||
LeaderboardEntryDTO previousEntryDTO = null;
|
||||
|
||||
+16
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.assertSame;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
@@ -82,6 +83,7 @@ public class LeaderboardDTODiffingTest {
|
||||
@Test
|
||||
public void testTotalStripping() {
|
||||
newVersion.strip(previousVersion);
|
||||
assertAllRowsKeysAreIdenticalToAllLeaderboardRowDTOCompetitors(newVersion);
|
||||
assertNull(newVersion.rows);
|
||||
}
|
||||
|
||||
@@ -96,6 +98,7 @@ public class LeaderboardDTODiffingTest {
|
||||
wolfgangsRow.totalDistanceTraveledInMeters += 1;
|
||||
Map<CompetitorDTO, LeaderboardRowDTO> rowsBeforeStripping = newVersion.rows;
|
||||
newVersion.strip(previousVersion);
|
||||
assertAllRowsKeysAreIdenticalToAllLeaderboardRowDTOCompetitors(newVersion);
|
||||
assertNotNull(newVersion.rows);
|
||||
assertEquals(1, newVersion.rows.size()); // only wolfgang's row should show
|
||||
assertEquals(wolfgang, newVersion.rows.keySet().iterator().next().getCompetitorFromPrevious(previousVersion));
|
||||
@@ -132,6 +135,7 @@ public class LeaderboardDTODiffingTest {
|
||||
newVersion.rows = newRows;
|
||||
Map<CompetitorDTO, LeaderboardRowDTO> rowsBeforeStripping = newVersion.rows;
|
||||
newVersion.strip(previousVersion);
|
||||
assertAllRowsKeysAreIdenticalToAllLeaderboardRowDTOCompetitors(newVersion);
|
||||
assertNotNull(newVersion.rows);
|
||||
assertEquals(previousVersion.rows.size()-17, newVersion.rows.size()); // all rows have changed except for 17 that have no leg details in leg 8
|
||||
// now assert that for all rows there is no leaderboard entry for all races but R9 and
|
||||
@@ -173,6 +177,7 @@ public class LeaderboardDTODiffingTest {
|
||||
newVersion.rows.remove(wolfgang); // remove another competitor
|
||||
List<CompetitorDTO> newCompetitorsBeforeStripping = new ArrayList<CompetitorDTO>(newVersion.competitors);
|
||||
newVersion.strip(previousVersion);
|
||||
assertAllRowsKeysAreIdenticalToAllLeaderboardRowDTOCompetitors(newVersion);
|
||||
assertNull(newVersion.competitors); // but there should be an added competitor that we can't see through the public interface
|
||||
LeaderboardDTO applied = newVersion.getLeaderboardDTO(previousVersion);
|
||||
assertEquals(newCompetitorsBeforeStripping, applied.competitors);
|
||||
@@ -192,6 +197,7 @@ public class LeaderboardDTODiffingTest {
|
||||
Set<CompetitorDTO> newSuppressedCompetitorsBeforeStripping = new HashSet<CompetitorDTO>();
|
||||
Util.addAll(newVersion.getSuppressedCompetitors(), newSuppressedCompetitorsBeforeStripping);
|
||||
newVersion.strip(previousVersion);
|
||||
assertAllRowsKeysAreIdenticalToAllLeaderboardRowDTOCompetitors(newVersion);
|
||||
assertEquals(2, Util.size(newVersion.getSuppressedCompetitors()));
|
||||
assertTrue(Util.contains(newVersion.getSuppressedCompetitors(), somebodyNew));
|
||||
for (CompetitorDTO compactSuppressedCompetitor : newVersion.getSuppressedCompetitors()) {
|
||||
@@ -215,6 +221,7 @@ public class LeaderboardDTODiffingTest {
|
||||
final HashMap<CompetitorDTO, String> newDisplayNamesBeforeStripping = new HashMap<CompetitorDTO, String>();
|
||||
newDisplayNamesBeforeStripping.putAll(newVersion.competitorDisplayNames);
|
||||
newVersion.strip(previousVersion);
|
||||
assertAllRowsKeysAreIdenticalToAllLeaderboardRowDTOCompetitors(newVersion);
|
||||
assertEquals(2, newVersion.competitorDisplayNames.size());
|
||||
assertTrue(newVersion.competitorDisplayNames.keySet().contains(somebodyNew));
|
||||
for (CompetitorDTO compactSuppressedCompetitor : newVersion.competitorDisplayNames.keySet()) {
|
||||
@@ -242,6 +249,7 @@ public class LeaderboardDTODiffingTest {
|
||||
newOrdering.add(12, formerRank13);
|
||||
List<CompetitorDTO> newOrderBeforeStripping = new ArrayList<CompetitorDTO>(newOrdering);
|
||||
newVersion.strip(previousVersion);
|
||||
assertAllRowsKeysAreIdenticalToAllLeaderboardRowDTOCompetitors(newVersion);
|
||||
for (RaceColumnDTO raceColumn : newVersion.getRaceList()) {
|
||||
if (!raceColumn.getName().equals("R9")) {
|
||||
assertNull(newVersion.getCompetitorsFromBestToWorst(raceColumn));
|
||||
@@ -256,4 +264,12 @@ public class LeaderboardDTODiffingTest {
|
||||
LeaderboardDTO applied = newVersion.getLeaderboardDTO(previousVersion);
|
||||
assertEquals(newOrderBeforeStripping, applied.getCompetitorsFromBestToWorst(applied.getRaceColumnByName("R9")));
|
||||
}
|
||||
|
||||
private void assertAllRowsKeysAreIdenticalToAllLeaderboardRowDTOCompetitors(LeaderboardDTO leaderboard) {
|
||||
if (leaderboard.rows != null) {
|
||||
for (Map.Entry<CompetitorDTO, LeaderboardRowDTO> e : leaderboard.rows.entrySet()) {
|
||||
assertSame(e.getKey(), e.getValue().competitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user