diff --git a/game-app/game-core/src/main/java/games/strategy/triplea/ai/AbstractAi.java b/game-app/game-core/src/main/java/games/strategy/triplea/ai/AbstractAi.java index 837668a661..10eab9782c 100644 --- a/game-app/game-core/src/main/java/games/strategy/triplea/ai/AbstractAi.java +++ b/game-app/game-core/src/main/java/games/strategy/triplea/ai/AbstractAi.java @@ -605,7 +605,8 @@ protected void battle(final IBattleDelegate battleDelegate) { if (listing.isEmpty()) { return; } - for (final Entry> entry : listing.getBattles().entrySet()) { + for (final Entry> entry : + listing.getBattlesMap().entrySet()) { for (final Territory current : entry.getValue()) { final String error = battleDelegate.fightBattle(current, entry.getKey().isBombingRun(), entry.getKey()); diff --git a/game-app/game-core/src/main/java/games/strategy/triplea/ai/pro/simulate/ProSimulateTurnUtils.java b/game-app/game-core/src/main/java/games/strategy/triplea/ai/pro/simulate/ProSimulateTurnUtils.java index 4b7dc1e0cc..df7a66f8e3 100644 --- a/game-app/game-core/src/main/java/games/strategy/triplea/ai/pro/simulate/ProSimulateTurnUtils.java +++ b/game-app/game-core/src/main/java/games/strategy/triplea/ai/pro/simulate/ProSimulateTurnUtils.java @@ -50,7 +50,7 @@ public static void simulateBattles( final BattleDelegate battleDelegate = data.getBattleDelegate(); final Map> battleTerritories = - battleDelegate.getBattleListing().getBattles(); + battleDelegate.getBattleListing().getBattlesMap(); for (final Entry> entry : battleTerritories.entrySet()) { for (final Territory t : entry.getValue()) { final IBattle battle = diff --git a/game-app/game-core/src/main/java/games/strategy/triplea/delegate/battle/BattleTracker.java b/game-app/game-core/src/main/java/games/strategy/triplea/delegate/battle/BattleTracker.java index c801b02f21..283949abd9 100644 --- a/game-app/game-core/src/main/java/games/strategy/triplea/delegate/battle/BattleTracker.java +++ b/game-app/game-core/src/main/java/games/strategy/triplea/delegate/battle/BattleTracker.java @@ -39,7 +39,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.EnumMap; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -1095,19 +1094,7 @@ private Collection getPendingBattleSites(final boolean bombing) { } public BattleListing getBattleListingFromPendingBattles() { - final Map> battles = new EnumMap<>(BattleType.class); - pendingBattles.stream() - .filter(b -> !b.isEmpty()) - .forEach( - b -> { - Collection territories = battles.get(b.getBattleType()); - if (territories == null) { - territories = new HashSet<>(); - } - territories.add(b.getTerritory()); - battles.put(b.getBattleType(), territories); - }); - return new BattleListing(battles); + return new BattleListing(pendingBattles); } /** diff --git a/game-app/game-core/src/main/java/games/strategy/triplea/delegate/data/BattleListing.java b/game-app/game-core/src/main/java/games/strategy/triplea/delegate/data/BattleListing.java index e2605ba41a..965ea41898 100644 --- a/game-app/game-core/src/main/java/games/strategy/triplea/delegate/data/BattleListing.java +++ b/game-app/game-core/src/main/java/games/strategy/triplea/delegate/data/BattleListing.java @@ -1,14 +1,17 @@ package games.strategy.triplea.delegate.data; import games.strategy.engine.data.Territory; +import games.strategy.triplea.delegate.battle.IBattle; import games.strategy.triplea.delegate.battle.IBattle.BattleType; import java.io.Serializable; import java.util.Collection; +import java.util.EnumMap; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.function.BiConsumer; +import java.util.function.Predicate; import lombok.Getter; /** @@ -17,31 +20,40 @@ @Getter public class BattleListing implements Serializable { private static final long serialVersionUID = 2700129486225793827L; - private final Map> battles; + private final Map> battlesMap; /** * Creates new BattleListing. * * @param battles battles to list */ - public BattleListing(final Map> battles) { - this.battles = battles; + public BattleListing(final Set battles) { + this.battlesMap = new EnumMap<>(BattleType.class); + battles.stream() + .filter(b -> !b.isEmpty()) + .forEach( + b -> { + Collection territories = battlesMap.get(b.getBattleType()); + if (territories == null) { + territories = new HashSet<>(); + } + territories.add(b.getTerritory()); + battlesMap.put(b.getBattleType(), territories); + }); } public Set getNormalBattlesIncludingAirBattles() { - final Set territories = new HashSet<>(); - for (final Entry> entry : battles.entrySet()) { - if (!entry.getKey().isBombingRun()) { - territories.addAll(entry.getValue()); - } - } - return territories; + return getBattlesWith(b -> !b.isBombingRun()); } public Set getStrategicBombingRaidsIncludingAirBattles() { + return getBattlesWith(BattleType::isBombingRun); + } + + private Set getBattlesWith(Predicate predicate) { final Set territories = new HashSet<>(); - for (final Entry> entry : battles.entrySet()) { - if (entry.getKey().isBombingRun()) { + for (final Entry> entry : battlesMap.entrySet()) { + if (predicate.test(entry.getKey())) { territories.addAll(entry.getValue()); } } @@ -49,11 +61,12 @@ public Set getStrategicBombingRaidsIncludingAirBattles() { } public boolean isEmpty() { - return battles.isEmpty(); + return battlesMap.isEmpty(); } public void forEachBattle(BiConsumer action) { - for (final Entry> battleTypeCollection : battles.entrySet()) { + for (final Entry> battleTypeCollection : + battlesMap.entrySet()) { final BattleType battleType = battleTypeCollection.getKey(); for (final Territory territory : battleTypeCollection.getValue()) { action.accept(battleType, territory); diff --git a/game-app/game-core/src/test/java/games/strategy/triplea/delegate/AirThatCantLandUtilTest.java b/game-app/game-core/src/test/java/games/strategy/triplea/delegate/AirThatCantLandUtilTest.java index c482bd6ff3..47e51f0138 100644 --- a/game-app/game-core/src/test/java/games/strategy/triplea/delegate/AirThatCantLandUtilTest.java +++ b/game-app/game-core/src/test/java/games/strategy/triplea/delegate/AirThatCantLandUtilTest.java @@ -32,7 +32,7 @@ class AirThatCantLandUtilTest extends AbstractClientSettingTestCase { private static void fight(final IBattleDelegate battle, final Territory territory) { for (final Entry> entry : - battle.getBattleListing().getBattles().entrySet()) { + battle.getBattleListing().getBattlesMap().entrySet()) { if (!entry.getKey().isBombingRun() && entry.getValue().contains(territory)) { battle.fightBattle(territory, false, entry.getKey()); return; diff --git a/game-app/game-core/src/test/java/games/strategy/triplea/delegate/WW2V3Year41Test.java b/game-app/game-core/src/test/java/games/strategy/triplea/delegate/WW2V3Year41Test.java index 5d9f155536..84a5904eaf 100644 --- a/game-app/game-core/src/test/java/games/strategy/triplea/delegate/WW2V3Year41Test.java +++ b/game-app/game-core/src/test/java/games/strategy/triplea/delegate/WW2V3Year41Test.java @@ -151,7 +151,7 @@ private static void thenRemotePlayerShouldNotBeAskedToRetreat( private static void fight(final BattleDelegate battle, final Territory territory) { for (final Entry> entry : - battle.getBattleListing().getBattles().entrySet()) { + battle.getBattleListing().getBattlesMap().entrySet()) { if (!entry.getKey().isBombingRun() && entry.getValue().contains(territory)) { battle.fightBattle(territory, false, entry.getKey()); return;