using Map instead of LinkedHashMap for quick ranks; they are not sorted anymore

Change-Id: I50776034a659d7363c564ba43db7ceae87e2102c
This commit is contained in:
Axel Uhl committed 2017-06-21 19:01:46 +02:00
1 parent 7d2feff5bf
commit 314b178202
4 files changed
+22 -15

No files matched your search

@@ -1,16 +1,16 @@
package com.sap.sailing.gwt.ui.client.shared.racemap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import com.sap.sailing.gwt.ui.raceboard.AbstractQuickRanksDTOProvider;
import com.sap.sailing.gwt.ui.shared.QuickRankDTO;
public class DefaultQuickRanksDTOProvider extends AbstractQuickRanksDTOProvider {
private LinkedHashMap<String, QuickRankDTO> quickRanksFromServer;
private Map<String, QuickRankDTO> quickRanksFromServer;
@Override
public void quickRanksReceivedFromServer(LinkedHashMap<String, QuickRankDTO> quickRanksFromServer) {
public void quickRanksReceivedFromServer(Map<String, QuickRankDTO> quickRanksFromServer) {
this.quickRanksFromServer = quickRanksFromServer;
for (final Entry<String, QuickRankDTO> e : quickRanksFromServer.entrySet()) {
notifyListeners(e.getKey(), e.getValue());
@@ -18,7 +18,7 @@ public class DefaultQuickRanksDTOProvider extends AbstractQuickRanksDTOProvider
}
@Override
public LinkedHashMap<String, QuickRankDTO> getQuickRanks() {
public Map<String, QuickRankDTO> getQuickRanks() {
return quickRanksFromServer;
}
@@ -1,6 +1,6 @@
package com.sap.sailing.gwt.ui.client.shared.racemap;
import java.util.LinkedHashMap;
import java.util.Map;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
@@ -40,11 +40,11 @@ public interface QuickRanksDTOProvider {
*
* @param quickRanksFromServer keys are the competitor IDs as strings
*/
void quickRanksReceivedFromServer(LinkedHashMap<String, QuickRankDTO> quickRanksFromServer);
void quickRanksReceivedFromServer(Map<String, QuickRankDTO> quickRanksFromServer);
/**
* @return keys are the {@link CompetitorDTO#getIdAsString() competitor IDs are string}, values are the quick ranks
* pertaining to the competitors whose IDs are provided as keys
*/
LinkedHashMap<String, QuickRankDTO> getQuickRanks();
Map<String, QuickRankDTO> getQuickRanks();
}
@@ -1360,16 +1360,21 @@ public class RaceMap extends AbstractCompositeComponent<RaceMapSettings> impleme
Iterable<CompetitorDTO> competitorsToShow) {
CompetitorDTO leadingCompetitorDTO = null;
int legOfLeaderCompetitor = -1;
// this only works because the quickRanks are sorted
int bestOneBasedRank = Integer.MAX_VALUE;
for (QuickRankDTO competitorFromBestToWorstAndOneBasedLegNumber : quickRanksDTOProvider.getQuickRanks().values()) {
if (Util.contains(competitorsToShow, competitorFromBestToWorstAndOneBasedLegNumber.competitor) &&
competitorFromBestToWorstAndOneBasedLegNumber.legNumberOneBased != 0) {
competitorFromBestToWorstAndOneBasedLegNumber.legNumberOneBased != 0 &&
competitorFromBestToWorstAndOneBasedLegNumber.oneBasedRank < bestOneBasedRank) {
leadingCompetitorDTO = competitorFromBestToWorstAndOneBasedLegNumber.competitor;
legOfLeaderCompetitor = competitorFromBestToWorstAndOneBasedLegNumber.legNumberOneBased;
return new com.sap.sse.common.Util.Pair<Integer, CompetitorDTO>(legOfLeaderCompetitor, leadingCompetitorDTO);
bestOneBasedRank = competitorFromBestToWorstAndOneBasedLegNumber.legNumberOneBased;
if (bestOneBasedRank == 1) {
break; // as good as it gets
}
}
}
return null;
return leadingCompetitorDTO == null ? null :
new com.sap.sse.common.Util.Pair<Integer, CompetitorDTO>(legOfLeaderCompetitor, leadingCompetitorDTO);
}
final static Distance advantageLineLength = new MeterDistance(1000); // TODO this should probably rather scale with the visible area of the map; bug 616
@@ -1,7 +1,9 @@
package com.sap.sailing.gwt.ui.raceboard;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.sap.sailing.domain.common.RaceIdentifier;
@@ -25,7 +27,7 @@ import com.sap.sse.common.Util;
*
*/
public class QuickRanksDTOFromLeaderboardDTOProvider extends AbstractQuickRanksDTOProvider {
private LinkedHashMap<String, QuickRankDTO> quickRanks;
private Map<String, QuickRankDTO> quickRanks;
private final RaceCompetitorSet raceCompetitorSet;
private final RaceIdentifier selectedRace;
private boolean lastLeaderboardProvidedLegNumbers;
@@ -37,9 +39,9 @@ public class QuickRanksDTOFromLeaderboardDTOProvider extends AbstractQuickRanksD
}
@Override
public void quickRanksReceivedFromServer(LinkedHashMap<String, QuickRankDTO> quickRanksFromServer) {
public void quickRanksReceivedFromServer(Map<String, QuickRankDTO> quickRanksFromServer) {
if (quickRanks == null) {
quickRanks = new LinkedHashMap<>();
quickRanks = new HashMap<>();
for (final Entry<String, QuickRankDTO> e : quickRanksFromServer.entrySet()) {
quickRanks.put(e.getKey(), e.getValue());
notifyListeners(e.getKey(), e.getValue());
@@ -118,7 +120,7 @@ public class QuickRanksDTOFromLeaderboardDTOProvider extends AbstractQuickRanksD
}
@Override
public LinkedHashMap<String, QuickRankDTO> getQuickRanks() {
public Map<String, QuickRankDTO> getQuickRanks() {
return quickRanks;
}
}