From 48a9b24d58344ff514fe7c2d7091b24958f0234c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 19 Jun 2014 09:59:10 +0200 Subject: [PATCH] fixing bug 2005 ordering problem while still parallelizing --- .../impl/AbstractSimpleLeaderboardImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java index 1b395bebaa1..3de56864621 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java @@ -701,13 +701,13 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race throws NoWindException { final Map> result = new LinkedHashMap<>(); List raceColumnsToConsider = new ArrayList<>(); - List> futures = new ArrayList<>(); + Map>> futures = new HashMap<>(); for (final RaceColumn raceColumn : getRaceColumns()) { raceColumnsToConsider.add(raceColumn); final Iterable finalRaceColumnsToConsider = new ArrayList<>(raceColumnsToConsider); - futures.add(executor.submit(new Runnable() { + futures.put(raceColumn, executor.submit(new Callable>() { @Override - public void run() { + public Map call() { Map totalPointsSumPerCompetitorInColumn = new HashMap<>(); for (Competitor competitor : getCompetitors()) { try { @@ -717,14 +717,14 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race } } synchronized (result) { - result.put(raceColumn, totalPointsSumPerCompetitorInColumn); + return totalPointsSumPerCompetitorInColumn; } } })); } - for (Future future : futures) { + for (RaceColumn raceColumn : getRaceColumns()) { try { - future.get(); + result.put(raceColumn, futures.get(raceColumn).get()); } catch (InterruptedException | ExecutionException e) { if (e.getCause() instanceof NoWindError) { throw ((NoWindError) e.getCause()).getCause();