From: "Enrico Weigelt, metux IT consult" <enrico.weig...@gr13.net>

---
 .../freecol/client/gui/panel/FindSettlementPanel.java  |  2 +-
 src/net/sf/freecol/common/model/Game.java              |  8 ++++++--
 src/net/sf/freecol/common/model/Operand.java           |  6 +++---
 src/net/sf/freecol/common/model/Player.java            | 18 ++++++++++--------
 src/net/sf/freecol/common/model/Unit.java              |  2 +-
 src/net/sf/freecol/server/ai/EuropeanAIPlayer.java     |  2 +-
 src/net/sf/freecol/server/model/ServerPlayer.java      |  6 +++---
 test/src/net/sf/freecol/common/model/ColonyTest.java   |  2 +-
 8 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/src/net/sf/freecol/client/gui/panel/FindSettlementPanel.java 
b/src/net/sf/freecol/client/gui/panel/FindSettlementPanel.java
index d17db5b1c88..718d7d1baf7 100644
--- a/src/net/sf/freecol/client/gui/panel/FindSettlementPanel.java
+++ b/src/net/sf/freecol/client/gui/panel/FindSettlementPanel.java
@@ -177,7 +177,7 @@ public final class FindSettlementPanel extends FreeColPanel
                 break;
             }
             if (ok) {
-                for (Settlement s : player.getSettlementList()) {
+                for (Settlement s : player.getSettlements()) {
                     model.addElement(s);
                 }
             }
diff --git a/src/net/sf/freecol/common/model/Game.java 
b/src/net/sf/freecol/common/model/Game.java
index 4c1c1004beb..c98265b33e8 100644
--- a/src/net/sf/freecol/common/model/Game.java
+++ b/src/net/sf/freecol/common/model/Game.java
@@ -1070,8 +1070,12 @@ public class Game extends FreeColGameObject {
      *     specified name (the settlement might not be visible to a client).
      */
     public Settlement getSettlementByName(String name) {
-        return find(flatten(getLivePlayers(), Player::getSettlements),
-                    matchKeyEquals(name, Settlement::getName));
+        for (Player p : this.players)
+            if (p.isLive())
+                for (Settlement s : p.getSettlements())
+                    if (Utils.equals(name, s.getName()))
+                        return s;
+        return null;
     }
 
     /**
diff --git a/src/net/sf/freecol/common/model/Operand.java 
b/src/net/sf/freecol/common/model/Operand.java
index 97f4ee76b21..a91ecd4034f 100644
--- a/src/net/sf/freecol/common/model/Operand.java
+++ b/src/net/sf/freecol/common/model/Operand.java
@@ -210,7 +210,7 @@ public class Operand extends Scope {
                                   c -> ourCount(c.getBuildings()));
                     break;
                 case SETTLEMENTS:
-                    result += ourCount(player.getSettlementList());
+                    result += ourCount(player.getSettlements());
                     break;
                 case FOUNDING_FATHERS:
                     result += ourCount(player.getFathers());
@@ -249,11 +249,11 @@ public class Operand extends Scope {
             return sum(player.getColonies(), c -> ourCount(c.getBuildings()));
         case SETTLEMENTS:
             if (methodName == null) {
-                return ourCount(player.getSettlementList())
+                return ourCount(player.getSettlements())
                     + spec.getInteger(GameOptions.SETTLEMENT_LIMIT_MODIFIER);
             }
             final String methodValue = getMethodValue();
-            return count(player.getSettlementList(),
+            return count(player.getSettlements(),
                 s -> String.valueOf(s.invokeMethod(methodName,
                         Boolean.class, Boolean.FALSE)).equals(methodValue));
         case FOUNDING_FATHERS:
diff --git a/src/net/sf/freecol/common/model/Player.java 
b/src/net/sf/freecol/common/model/Player.java
index 1714d5ec7f7..feeff525076 100644
--- a/src/net/sf/freecol/common/model/Player.java
+++ b/src/net/sf/freecol/common/model/Player.java
@@ -2253,21 +2253,23 @@ public class Player extends FreeColGameObject 
implements Nameable {
     /**
      * Gets a the settlements this player owns.
      *
-     * @return The list of {@code Settlements} this player owns.
+     * @return The list of {@code Settlement}s this player owns.
      */
-    public List<Settlement> getSettlementList() {
+    public List<Settlement> getSettlements() {
         synchronized (this.settlements) {
             return new ArrayList<>(this.settlements);
         }
     }
 
     /**
-     * Get a stream of the settlements this player owns.
+     * Gets the first settlement this player owns.
      *
-     * @return The strean of {@code Settlements} this player owns.
+     * @return The first {@code Settlement} this player owns.
      */
-    public Stream<Settlement> getSettlements() {
-        return getSettlementList().stream();
+    public Settlement getFirstSettlement() {
+        synchronized (this.settlements) {
+            return this.settlements.get(0);
+        }
     }
 
     /**
@@ -2916,7 +2918,7 @@ public class Player extends FreeColGameObject implements 
Nameable {
                 vismap.setVisible(unit);
 
             // All the settlements.
-            for (Settlement settlement : getSettlementList())
+            for (Settlement settlement : getSettlements())
                 vismap.setVisible(settlement);
 
             if (isEuropean()) {
@@ -3381,7 +3383,7 @@ public class Player extends FreeColGameObject implements 
Nameable {
      * @return True if the player has no settlements (on the map) yet.
      */
     private boolean hasZeroSettlements() {
-        List<Settlement> settlements = getSettlementList();
+        List<Settlement> settlements = getSettlements();
         return settlements.isEmpty()
             || (settlements.size() == 1
                 && settlements.get(0).getTile().getSettlement() == null);
diff --git a/src/net/sf/freecol/common/model/Unit.java 
b/src/net/sf/freecol/common/model/Unit.java
index 5be31dd2bc9..e4e545a8559 100644
--- a/src/net/sf/freecol/common/model/Unit.java
+++ b/src/net/sf/freecol/common/model/Unit.java
@@ -2648,7 +2648,7 @@ public class Unit extends GoodsLocation
         final Player owner = getOwner();
         Settlement sett = minimize(owner.getSettlements(),
                                    settlementStartComparator);
-        if (sett == null) sett = first(owner.getSettlements());
+        if (sett == null) sett = owner.getFirstSettlement();
         if (sett != null) return sett;
 
         // Owner has no settlements.  If it is the REF, start from a
diff --git a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java 
b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
index ea707d51be6..61f71351dd8 100644
--- a/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
+++ b/src/net/sf/freecol/server/ai/EuropeanAIPlayer.java
@@ -1338,7 +1338,7 @@ public class EuropeanAIPlayer extends MissionAIPlayer {
         if (!player.canBuildColonies()) return 0;
 
         int nColonies = 0, nPorts = 0, nWorkers = 0, nEuropean = 0;
-        for (Settlement settlement : player.getSettlementList()) {
+        for (Settlement settlement : player.getSettlements()) {
             nColonies++;
             if (settlement.isConnectedPort()) nPorts++;
             nWorkers += count(settlement.getAllUnitsList(), Unit::isPerson);
diff --git a/src/net/sf/freecol/server/model/ServerPlayer.java 
b/src/net/sf/freecol/server/model/ServerPlayer.java
index d904f23ffe2..d1cd92e0666 100644
--- a/src/net/sf/freecol/server/model/ServerPlayer.java
+++ b/src/net/sf/freecol/server/model/ServerPlayer.java
@@ -645,7 +645,7 @@ public class ServerPlayer extends Player implements 
ServerModelObject {
         }
 
         // Remove settlements.  Update formerly owned tiles.
-        List<Settlement> settlements = getSettlementList();
+        List<Settlement> settlements = getSettlements();
         while (!settlements.isEmpty()) {
             csDisposeSettlement(settlements.remove(0), cs);
         }
@@ -950,7 +950,7 @@ public class ServerPlayer extends Player implements 
ServerModelObject {
         }
         invalidateCanSeeTiles();//+vis(this)
         if (!reveal) {
-            for (Settlement s : getSettlementList()) exploreForSettlement(s);
+            for (Settlement s : getSettlements()) exploreForSettlement(s);
             for (Unit u : getUnitList()) exploreForUnit(u);
         }
         return result;
@@ -4360,7 +4360,7 @@ outer:  for (Effect effect : effects) {
         final Game game = getGame();
 
         // Settlements
-        List<Settlement> settlements = getSettlementList();
+        List<Settlement> settlements = getSettlements();
         int newSoL = 0, newImmigration = getImmigration();
         for (Settlement settlement : settlements) {
             ((ServerModelObject)settlement).csNewTurn(random, lb, cs);
diff --git a/test/src/net/sf/freecol/common/model/ColonyTest.java 
b/test/src/net/sf/freecol/common/model/ColonyTest.java
index 71b1827cb34..fe2c1803eca 100644
--- a/test/src/net/sf/freecol/common/model/ColonyTest.java
+++ b/test/src/net/sf/freecol/common/model/ColonyTest.java
@@ -494,7 +494,7 @@ public class ColonyTest extends FreeColTestCase {
         assertEquals(colony.getName(), copied.getName());
         // Note: we can not check that player.hasSettlement(copied) is false
         // because it too will use FCGO.equals().
-        for (Settlement s : player.getSettlementList()) {
+        for (Settlement s : player.getSettlements()) {
             assertFalse(s == copied);
         }
 
-- 
2.11.0.rc0.7.gbe5a750


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Freecol-developers mailing list
Freecol-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freecol-developers

Reply via email to