|
From: Stefan F. <ste...@us...> - 2012-07-27 05:08:23
|
junit/rails/game/state/OwnableItemImpl.java | 2
junit/rails/game/state/PortfolioHolderImpl.java | 17 +
junit/rails/game/state/PortfolioHolderTest.java | 51 +++
junit/rails/game/state/PortfolioListTest.java | 114 --------
junit/rails/game/state/PortfolioManagerTest.java | 6
junit/rails/game/state/PortfolioMapTest.java | 148 +++++++++++
junit/rails/game/state/PortfolioSetTest.java | 122 +++++++++
junit/rails/game/state/TypeOwnableItemImpl.java | 19 +
src/rails/game/Company.java | 12
src/rails/game/GameManager.java | 2
src/rails/game/MapHex.java | 12
src/rails/game/OperatingRound.java | 8
src/rails/game/PublicCertificate.java | 8
src/rails/game/PublicCompany.java | 10
src/rails/game/Stop.java | 8
src/rails/game/Train.java | 5
src/rails/game/TrainManager.java | 6
src/rails/game/action/BuyTrain.java | 23 -
src/rails/game/action/DiscardTrain.java | 26 -
src/rails/game/model/BaseTokensModel.java | 14 -
src/rails/game/model/CertificatesModel.java | 10
src/rails/game/model/PortfolioModel.java | 27 +-
src/rails/game/model/PrivatesModel.java | 4
src/rails/game/model/TrainsModel.java | 9
src/rails/game/specific/_1835/OperatingRound_1835.java | 8
src/rails/game/specific/_1835/PrussianFormationRound.java | 16 -
src/rails/game/specific/_1856/CGRFormationRound.java | 8
src/rails/game/specific/_1856/OperatingRound_1856.java | 4
src/rails/game/specific/_1856/PublicCompany_1856.java | 4
src/rails/game/specific/_1889/OperatingRound_1889.java | 8
src/rails/game/specific/_18AL/AssignNamedTrains.java | 2
src/rails/game/specific/_18AL/OperatingRound_18AL.java | 3
src/rails/game/specific/_18EU/OperatingRound_18EU.java | 3
src/rails/game/specific/_18TN/OperatingRound_18TN.java | 4
src/rails/game/state/HashMapState.java | 34 +-
src/rails/game/state/Portfolio.java | 5
src/rails/game/state/PortfolioList.java | 72 -----
src/rails/game/state/PortfolioManager.java | 6
src/rails/game/state/PortfolioMap.java | 57 ++--
src/rails/game/state/PortfolioSet.java | 77 +++++
src/rails/game/state/Typable.java | 12
src/rails/ui/swing/GameUIManager.java | 9
src/rails/ui/swing/ORUIManager.java | 13
src/rails/ui/swing/gamespecific/_1835/StatusWindow_1835.java | 4
src/rails/ui/swing/gamespecific/_18EU/StatusWindow_18EU.java | 10
src/rails/ui/swing/hexmap/GUIHex.java | 14 -
46 files changed, 670 insertions(+), 366 deletions(-)
New commits:
commit 778be678fa5313cc552b4b801f4ead17b1991a21
Author: Stefan Frey <ste...@we...>
Date: Fri Jul 27 07:07:39 2012 +0200
added PortfolioHolderTest
diff --git a/junit/rails/game/state/PortfolioHolderImpl.java b/junit/rails/game/state/PortfolioHolderImpl.java
new file mode 100644
index 0000000..4a7cb1a
--- /dev/null
+++ b/junit/rails/game/state/PortfolioHolderImpl.java
@@ -0,0 +1,17 @@
+package rails.game.state;
+
+class PortfolioHolderImpl extends AbstractItem implements PortfolioHolder {
+
+ private PortfolioHolderImpl(Owner parent, String id) {
+ super (parent, id);
+ }
+
+ static PortfolioHolderImpl create(Owner parent, String id) {
+ return new PortfolioHolderImpl(parent, id);
+ }
+
+ public Owner getParent() {
+ return (Owner)super.getParent();
+ }
+}
+
diff --git a/junit/rails/game/state/PortfolioHolderTest.java b/junit/rails/game/state/PortfolioHolderTest.java
new file mode 100644
index 0000000..8f1fec5
--- /dev/null
+++ b/junit/rails/game/state/PortfolioHolderTest.java
@@ -0,0 +1,51 @@
+package rails.game.state;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class PortfolioHolderTest {
+
+ private final static String PORTFOLIO_MAP_ID = "PortfolioMap";
+ private final static String PORTFOLIO_SET_ID = "PortfolioSet";
+ private final static String OWNER_ID = "Owner";
+ private final static String HOLDER_ID = "Holder";
+
+ private final static String ITEM_ID = "Item";
+ private final static String TYPE_ID = "Type";
+
+ private Root root;
+ private Owner owner;
+ private PortfolioHolder holder;
+ private TypeOwnableItemImpl item;
+
+
+ @Before
+ public void setUp() {
+ root = StateTestUtils.setUpRoot();
+ owner = OwnerImpl.create(root, OWNER_ID);
+ holder = PortfolioHolderImpl.create(owner, HOLDER_ID);
+
+ item = TypeOwnableItemImpl.create(root, ITEM_ID, TYPE_ID);
+ StateTestUtils.startActionChangeSet(root);
+ }
+
+ @Test
+ public void testPortfolioMap() {
+ PortfolioMap<String, TypeOwnableItemImpl> portfolio =
+ PortfolioMap.create(holder, PORTFOLIO_MAP_ID , TypeOwnableItemImpl.class);
+ item.moveTo(owner);
+ assertTrue(portfolio.containsItem(item));
+ assertSame(owner, item.getOwner());
+ }
+
+ @Test
+ public void testPortfolioSet() {
+ PortfolioSet<TypeOwnableItemImpl> portfolio =
+ PortfolioSet.create(holder, PORTFOLIO_SET_ID , TypeOwnableItemImpl.class);
+ item.moveTo(owner);
+ assertTrue(portfolio.containsItem(item));
+ assertSame(owner, item.getOwner());
+ }
+}
diff --git a/src/rails/game/state/HashMapState.java b/src/rails/game/state/HashMapState.java
index b14a845..4fe22db 100644
--- a/src/rails/game/state/HashMapState.java
+++ b/src/rails/game/state/HashMapState.java
@@ -160,23 +160,23 @@ public final class HashMapState<K,V> extends State {
return ImmutableList.copyOf(map.values());
}
- public String getData() {
-
- if (map == null) return "";
-
- StringBuilder buf = new StringBuilder("<html>");
- for (K name : map.keySet()) {
- if (buf.length() > 6) buf.append("<br>");
- buf.append(name.toString());
- Object value = map.get(name);
- if (value != null && rails.util.Util.hasValue(value.toString())) buf.append("=").append(value.toString());
- }
- if (buf.length() > 6) {
- buf.append("</html>");
- }
- return buf.toString();
-
- }
+// public String getData() {
+//
+// if (map == null) return "";
+//
+// StringBuilder buf = new StringBuilder("<html>");
+// for (K name : map.keySet()) {
+// if (buf.length() > 6) buf.append("<br>");
+// buf.append(name.toString());
+// Object value = map.get(name);
+// if (value != null && rails.util.Util.hasValue(value.toString())) buf.append("=").append(value.toString());
+// }
+// if (buf.length() > 6) {
+// buf.append("</html>");
+// }
+// return buf.toString();
+//
+// }
@Override
public String observerText() {
commit 90a08542c1f46895322f86f440dc2b16209841d3
Author: Stefan Frey <ste...@we...>
Date: Thu Jul 26 15:13:31 2012 +0200
refactored PortfolioMap and added Tests, introduced Typable interface
diff --git a/junit/rails/game/state/OwnableItemImpl.java b/junit/rails/game/state/OwnableItemImpl.java
index ca1d844..c095d66 100644
--- a/junit/rails/game/state/OwnableItemImpl.java
+++ b/junit/rails/game/state/OwnableItemImpl.java
@@ -5,7 +5,7 @@ package rails.game.state;
*/
class OwnableItemImpl extends OwnableItem<Ownable> {
- private OwnableItemImpl(Item parent, String id) {
+ protected OwnableItemImpl(Item parent, String id) {
super(parent, id, Ownable.class);
}
diff --git a/junit/rails/game/state/PortfolioListTest.java b/junit/rails/game/state/PortfolioListTest.java
deleted file mode 100644
index b7c676f..0000000
--- a/junit/rails/game/state/PortfolioListTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package rails.game.state;
-
-import static org.fest.assertions.api.Assertions.assertThat;
-import static org.junit.Assert.*;
-
-import java.util.Iterator;
-import java.util.Set;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.common.collect.Sets;
-
-public class PortfolioListTest {
-
- private final static String PORTFOLIO_A_ID = "PortfolioA";
- private final static String PORTFOLIO_B_ID = "PortfolioB";
- private final static String OWNER_A_ID = "OwnerA";
- private final static String OWNER_B_ID = "OwnerB";
- private final static String ITEM_ID = "Item";
- private final static String ANOTHER_ITEM_ID = "AnotherItem";
-
- private Root root;
- private PortfolioList<Ownable> portfolioA;
- private PortfolioList<Ownable> portfolioB;
- private Owner ownerA;
- private Owner ownerB;
- private Ownable item;
- private Ownable anotherItem;
-
- @Before
- public void setUp() {
- root = StateTestUtils.setUpRoot();
- ownerA = OwnerImpl.create(root, OWNER_A_ID);
- ownerB = OwnerImpl.create(root, OWNER_B_ID);
- portfolioA = PortfolioList.create(ownerA, PORTFOLIO_A_ID , Ownable.class);
- portfolioB = PortfolioList.create(ownerB, PORTFOLIO_B_ID , Ownable.class);
- item = OwnableItemImpl.create(root, ITEM_ID);
- anotherItem = OwnableItemImpl.create(root, ANOTHER_ITEM_ID);
- portfolioA.moveInto(item);
- StateTestUtils.startActionChangeSet(root);
- }
-
- // helper function to check the initial state after undo
- // includes redo, so after returning the state should be unchanged
- private void assertInitialStateAfterUndo() {
- StateTestUtils.closeAndUndo(root);
- assertTrue(portfolioA.containsItem(item));
- assertSame(ownerA, item.getOwner());
- StateTestUtils.redo(root);
- }
-
- @Test
- public void testMoveInto() {
- // move item to B
- item.moveTo(ownerB);
- assertTrue(portfolioB.containsItem(item));
- assertSame(ownerB, item.getOwner());
-
- // undo check
- assertInitialStateAfterUndo();
-
- // redo check
- assertTrue(portfolioB.containsItem(item));
- assertSame(ownerB, item.getOwner());
- }
-
- @Test
- public void testContainsItem() {
- assertTrue(portfolioA.containsItem(item));
- assertFalse(portfolioB.containsItem(item));
- }
-
- @Test
- public void testItems() {
- assertThat(portfolioA.items()).containsOnly(item);
- anotherItem.moveTo(ownerA);
- assertThat(portfolioA.items()).containsOnly(item, anotherItem);
- }
-
- @Test
- public void testSize() {
- assertEquals(1, portfolioA.size());
- assertEquals(0, portfolioB.size());
- anotherItem.moveTo(ownerA);
- assertEquals(2, portfolioA.size());
- item.moveTo(ownerB);
- assertEquals(1, portfolioA.size());
- assertEquals(1, portfolioB.size());
- }
-
- @Test
- public void testIsEmpty() {
- assertFalse(portfolioA.isEmpty());
- assertTrue(portfolioB.isEmpty());
- }
-
- @Test
- public void testIterator() {
- anotherItem.moveTo(ownerA);
-
- // no order is defined, so store them
- Set<Ownable> iterated = Sets.newHashSet();
-
- Iterator<Ownable> it = portfolioA.iterator();
- iterated.add(it.next());
- iterated.add(it.next());
-
- assertThat(iterated).containsOnly(item, anotherItem);
- // iterator is finished
- assertFalse(it.hasNext());
- }
-
-}
diff --git a/junit/rails/game/state/PortfolioManagerTest.java b/junit/rails/game/state/PortfolioManagerTest.java
index 2a9e52d..7a4a889 100644
--- a/junit/rails/game/state/PortfolioManagerTest.java
+++ b/junit/rails/game/state/PortfolioManagerTest.java
@@ -15,7 +15,7 @@ public class PortfolioManagerTest {
private Root root;
private PortfolioManager pm;
- private PortfolioList<Ownable> portfolioA, portfolioB;
+ private PortfolioSet<Ownable> portfolioA, portfolioB;
private Owner ownerA, ownerB, ownerC;
@Before
@@ -25,8 +25,8 @@ public class PortfolioManagerTest {
ownerA = OwnerImpl.create(root, OWNER_A_ID);
ownerB = OwnerImpl.create(root, OWNER_B_ID);
ownerC = OwnerImpl.create(root, OWNER_C_ID);
- portfolioA = PortfolioList.create(ownerA, PORTFOLIO_A_ID , Ownable.class);
- portfolioB = PortfolioList.create(ownerB, PORTFOLIO_B_ID , Ownable.class);
+ portfolioA = PortfolioSet.create(ownerA, PORTFOLIO_A_ID , Ownable.class);
+ portfolioB = PortfolioSet.create(ownerB, PORTFOLIO_B_ID , Ownable.class);
StateTestUtils.startActionChangeSet(root);
}
diff --git a/junit/rails/game/state/PortfolioMapTest.java b/junit/rails/game/state/PortfolioMapTest.java
new file mode 100644
index 0000000..40bcf8f
--- /dev/null
+++ b/junit/rails/game/state/PortfolioMapTest.java
@@ -0,0 +1,148 @@
+package rails.game.state;
+
+import static org.fest.assertions.api.Assertions.assertThat;
+import static org.junit.Assert.*;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.SetMultimap;
+import com.google.common.collect.Sets;
+
+public class PortfolioMapTest {
+
+ private final static String PORTFOLIO_MAP_ID = "PortfolioMap";
+ private final static String PORTFOLIO_SET_ID = "PortfolioSet";
+ private final static String OWNER_MAP_ID = "OwnerMap";
+ private final static String OWNER_SET_ID = "OwnerSet";
+ private final static String ITEM_ID = "Item";
+ private final static String ANOTHER_ITEM_ID = "AnotherItem";
+ private final static String TYPE_ID = "Type";
+ private final static String ANOTHER_TYPE_ID = "AnotherType";
+
+ private Root root;
+ private PortfolioMap<String, TypeOwnableItemImpl> portfolioMap;
+ private PortfolioSet<TypeOwnableItemImpl> portfolioSet;
+ private Owner ownerMap;
+ private Owner ownerSet;
+ private TypeOwnableItemImpl item;
+ private TypeOwnableItemImpl anotherItem;
+
+ @Before
+ public void setUp() {
+ root = StateTestUtils.setUpRoot();
+ ownerMap = OwnerImpl.create(root, OWNER_MAP_ID);
+ ownerSet = OwnerImpl.create(root, OWNER_SET_ID);
+ portfolioMap = PortfolioMap.create(ownerMap, PORTFOLIO_MAP_ID , TypeOwnableItemImpl.class);
+ portfolioSet = PortfolioSet.create(ownerSet, PORTFOLIO_SET_ID , TypeOwnableItemImpl.class);
+ item = TypeOwnableItemImpl.create(root, ITEM_ID, TYPE_ID);
+ anotherItem = TypeOwnableItemImpl.create(root, ANOTHER_ITEM_ID, ANOTHER_TYPE_ID);
+ portfolioSet.moveInto(item);
+ StateTestUtils.startActionChangeSet(root);
+ }
+
+ // helper function to check the initial state after undo
+ // includes redo, so after returning the state should be unchanged
+ private void assertInitialStateAfterUndo() {
+ StateTestUtils.closeAndUndo(root);
+ assertTrue(portfolioSet.containsItem(item));
+ assertSame(ownerSet, item.getOwner());
+ StateTestUtils.redo(root);
+ }
+
+ @Test
+ public void testMoveInto() {
+ portfolioMap.moveInto(item);
+ assertSame(ownerMap, item.getOwner());
+ assertTrue(portfolioMap.containsItem(item));
+ assertFalse(portfolioSet.containsItem(item));
+ // check undo
+ assertInitialStateAfterUndo();
+ // and redo
+ assertTrue(portfolioMap.containsItem(item));
+ }
+
+ @Test
+ public void testContainsItem() {
+ assertFalse(portfolioMap.containsItem(item));
+ item.moveTo(ownerMap);
+ assertTrue(portfolioMap.containsItem(item));
+ }
+
+ @Test
+ public void testItems() {
+ assertThat(portfolioMap.items()).isEmpty();
+ item.moveTo(ownerMap);
+ assertThat(portfolioMap.items()).containsOnly(item);
+ anotherItem.moveTo(ownerMap);
+ assertThat(portfolioMap.items()).containsOnly(item, anotherItem);
+ }
+
+ @Test
+ public void testSize() {
+ assertEquals(0, portfolioMap.size());
+ item.moveTo(ownerMap);
+ assertEquals(1, portfolioMap.size());
+ anotherItem.moveTo(ownerMap);
+ assertEquals(2, portfolioMap.size());
+ }
+
+ @Test
+ public void testIsEmpty() {
+ assertTrue(portfolioMap.isEmpty());
+ item.moveTo(ownerMap);
+ assertFalse(portfolioMap.isEmpty());
+ }
+
+ @Test
+ public void testContainsKey() {
+ assertFalse(portfolioMap.containsKey(TYPE_ID));
+ item.moveTo(ownerMap);
+ assertTrue(portfolioMap.containsKey(TYPE_ID));
+ item.moveTo(ownerSet);
+ assertFalse(portfolioMap.containsKey(TYPE_ID));
+ }
+
+ @Test
+ public void testGetItems() {
+ assertThat(portfolioMap.getItems(TYPE_ID)).isEmpty();
+ item.moveTo(ownerMap);
+ assertThat(portfolioMap.getItems(TYPE_ID)).containsOnly(item);
+ }
+
+ @Test
+ public void testView() {
+ item.moveTo(ownerMap);
+ SetMultimap<String, TypeOwnableItemImpl> view = portfolioMap.view();
+ assertTrue(view.containsValue(item));
+ // still holds true after removing item
+ item.moveTo(ownerSet);
+ assertTrue(view.containsValue(item));
+ assertFalse(portfolioMap.containsItem(item));
+ }
+
+ @Test
+ public void testIterator() {
+ item.moveTo(ownerMap);
+ anotherItem.moveTo(ownerMap);
+
+ // no order is defined, so store them
+ Set<Ownable> iterated = Sets.newHashSet();
+
+
+ Iterator<TypeOwnableItemImpl> it = portfolioMap.iterator();
+ // and it still works even after removing items
+ item.moveTo(ownerSet);
+
+ iterated.add(it.next());
+ iterated.add(it.next());
+
+ assertThat(iterated).containsOnly(item, anotherItem);
+ // iterator is finished
+ assertFalse(it.hasNext());
+ }
+
+}
diff --git a/junit/rails/game/state/PortfolioSetTest.java b/junit/rails/game/state/PortfolioSetTest.java
new file mode 100644
index 0000000..9954576
--- /dev/null
+++ b/junit/rails/game/state/PortfolioSetTest.java
@@ -0,0 +1,122 @@
+package rails.game.state;
+
+import static org.fest.assertions.api.Assertions.assertThat;
+import static org.junit.Assert.*;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.Sets;
+
+public class PortfolioSetTest {
+
+ private final static String PORTFOLIO_A_ID = "PortfolioA";
+ private final static String PORTFOLIO_B_ID = "PortfolioB";
+ private final static String OWNER_A_ID = "OwnerA";
+ private final static String OWNER_B_ID = "OwnerB";
+ private final static String ITEM_ID = "Item";
+ private final static String ANOTHER_ITEM_ID = "AnotherItem";
+
+ private Root root;
+ private PortfolioSet<Ownable> portfolioA;
+ private PortfolioSet<Ownable> portfolioB;
+ private Owner ownerA;
+ private Owner ownerB;
+ private Ownable item;
+ private Ownable anotherItem;
+
+ @Before
+ public void setUp() {
+ root = StateTestUtils.setUpRoot();
+ ownerA = OwnerImpl.create(root, OWNER_A_ID);
+ ownerB = OwnerImpl.create(root, OWNER_B_ID);
+ portfolioA = PortfolioSet.create(ownerA, PORTFOLIO_A_ID , Ownable.class);
+ portfolioB = PortfolioSet.create(ownerB, PORTFOLIO_B_ID , Ownable.class);
+ item = OwnableItemImpl.create(root, ITEM_ID);
+ anotherItem = OwnableItemImpl.create(root, ANOTHER_ITEM_ID);
+ portfolioA.moveInto(item);
+ StateTestUtils.startActionChangeSet(root);
+ }
+
+ // helper function to check the initial state after undo
+ // includes redo, so after returning the state should be unchanged
+ private void assertInitialStateAfterUndo() {
+ StateTestUtils.closeAndUndo(root);
+ assertTrue(portfolioA.containsItem(item));
+ assertSame(ownerA, item.getOwner());
+ StateTestUtils.redo(root);
+ }
+
+ @Test
+ public void testMoveInto() {
+ // move item to B
+ item.moveTo(ownerB);
+ assertTrue(portfolioB.containsItem(item));
+ assertSame(ownerB, item.getOwner());
+
+ // undo check
+ assertInitialStateAfterUndo();
+
+ // redo check
+ assertTrue(portfolioB.containsItem(item));
+ assertSame(ownerB, item.getOwner());
+ }
+
+ @Test
+ public void testContainsItem() {
+ assertTrue(portfolioA.containsItem(item));
+ assertFalse(portfolioB.containsItem(item));
+ }
+
+ @Test
+ public void testItems() {
+ assertThat(portfolioA.items()).containsOnly(item);
+ anotherItem.moveTo(ownerA);
+ Set<Ownable> items = portfolioA.items();
+ assertThat(items).containsOnly(item, anotherItem);
+ // and the view is unchanged after changing the portfolio
+ anotherItem.moveTo(ownerB);
+ assertTrue(items.contains(anotherItem));
+ assertFalse(portfolioA.containsItem(anotherItem));
+ }
+
+ @Test
+ public void testSize() {
+ assertEquals(1, portfolioA.size());
+ assertEquals(0, portfolioB.size());
+ anotherItem.moveTo(ownerA);
+ assertEquals(2, portfolioA.size());
+ item.moveTo(ownerB);
+ assertEquals(1, portfolioA.size());
+ assertEquals(1, portfolioB.size());
+ }
+
+ @Test
+ public void testIsEmpty() {
+ assertFalse(portfolioA.isEmpty());
+ assertTrue(portfolioB.isEmpty());
+ }
+
+ @Test
+ public void testIterator() {
+ anotherItem.moveTo(ownerA);
+
+ // no order is defined, so store them
+ Set<Ownable> iterated = Sets.newHashSet();
+
+ Iterator<Ownable> it = portfolioA.iterator();
+ // and it still works even after removing items
+ anotherItem.moveTo(ownerB);
+
+ iterated.add(it.next());
+ iterated.add(it.next());
+
+ assertThat(iterated).containsOnly(item, anotherItem);
+ // iterator is finished
+ assertFalse(it.hasNext());
+ }
+
+}
diff --git a/junit/rails/game/state/TypeOwnableItemImpl.java b/junit/rails/game/state/TypeOwnableItemImpl.java
new file mode 100644
index 0000000..7ba4b7d
--- /dev/null
+++ b/junit/rails/game/state/TypeOwnableItemImpl.java
@@ -0,0 +1,19 @@
+package rails.game.state;
+
+// Implementation of a typed OwnableItem
+class TypeOwnableItemImpl extends OwnableItem<TypeOwnableItemImpl> implements Typable<String> {
+ private final String type;
+
+ private TypeOwnableItemImpl(Item parent, String id, String type) {
+ super(parent, id, TypeOwnableItemImpl.class);
+ this.type = type;
+ }
+
+ static TypeOwnableItemImpl create(Item parent, String id, String type) {
+ return new TypeOwnableItemImpl(parent, id, type);
+ }
+
+ public String getType() {
+ return type;
+ }
+}
diff --git a/src/rails/game/Company.java b/src/rails/game/Company.java
index 4d5ad04..4815807 100644
--- a/src/rails/game/Company.java
+++ b/src/rails/game/Company.java
@@ -5,7 +5,7 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import rails.common.parser.ConfigurableComponent;
import rails.common.parser.ConfigurationException;
@@ -15,7 +15,7 @@ import rails.game.state.BooleanState;
import rails.game.state.AbstractItem;
import rails.game.state.Item;
import rails.game.state.Owner;
-import rails.game.state.PortfolioList;
+import rails.game.state.PortfolioSet;
import rails.util.Util;
public abstract class Company extends AbstractItem implements Owner, ConfigurableComponent,
@@ -53,8 +53,8 @@ Cloneable, Comparable<Company> {
protected final BooleanState closedObject = BooleanState.create(this, "closed", false);
// Moved here from PrivayeCOmpany on behalf of 1835
- protected final PortfolioList<SpecialProperty> specialProperties =
- PortfolioList.create(this, "specialProperties", SpecialProperty.class);
+ protected final PortfolioSet<SpecialProperty> specialProperties =
+ PortfolioSet.create(this, "specialProperties", SpecialProperty.class);
protected static Logger log =
LoggerFactory.getLogger(Company.class.getPackage().getName());
@@ -96,9 +96,9 @@ Cloneable, Comparable<Company> {
}
/**
- * @return ArrayList of all special properties we have.
+ * @return Set of all special properties we have.
*/
- public ImmutableList<SpecialProperty> getSpecialProperties() {
+ public ImmutableSet<SpecialProperty> getSpecialProperties() {
return specialProperties.items();
}
diff --git a/src/rails/game/GameManager.java b/src/rails/game/GameManager.java
index 5f9d4f0..b196d46 100644
--- a/src/rails/game/GameManager.java
+++ b/src/rails/game/GameManager.java
@@ -1703,7 +1703,7 @@ public class GameManager extends AbstractItem implements ConfigurableComponent,
public boolean addSpecialProperty(SpecialProperty property) {
if (commonSpecialProperties == null) {
- commonSpecialProperties = PortfolioList.create(this,
+ commonSpecialProperties = PortfolioSet.create(this,
"CommonSpecialProperties", SpecialProperty.class);
}
return commonSpecialProperties.moveInto(property);
diff --git a/src/rails/game/MapHex.java b/src/rails/game/MapHex.java
index 1c9f497..17e3c65 100644
--- a/src/rails/game/MapHex.java
+++ b/src/rails/game/MapHex.java
@@ -7,7 +7,7 @@ import java.util.regex.Pattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import rails.algorithms.RevenueBonusTemplate;
import rails.common.LocalText;
@@ -25,7 +25,7 @@ import rails.game.state.BooleanState;
import rails.game.state.Observer;
import rails.game.state.Owner;
import rails.game.state.Portfolio;
-import rails.game.state.PortfolioList;
+import rails.game.state.PortfolioSet;
import rails.game.state.AbstractItem;
import rails.util.*;
@@ -126,7 +126,7 @@ StationHolder {
protected List<PublicCompany> destinations;
/** Tokens that are not bound to a Station (City), such as Bonus tokens */
- protected final PortfolioList<Token> offStationTokens = PortfolioList.create(this,
+ protected final PortfolioSet<Token> offStationTokens = PortfolioSet.create(this,
"offStationTokens", Token.class);
/** Storage of revenueBonus that are bound to the hex */
@@ -979,7 +979,7 @@ StationHolder {
return tokens;
}
- public PortfolioList<Token> getTokens() {
+ public PortfolioSet<Token> getTokens() {
return offStationTokens;
}
@@ -1015,11 +1015,11 @@ StationHolder {
return false;
}
- public ImmutableList<Token> getTokens(int cityNumber) {
+ public ImmutableSet<Token> getTokens(int cityNumber) {
if (stops.size() > 0 && mStops.get(cityNumber) != null) {
return (mStops.get(cityNumber)).getTokens().items();
} else {
- return ImmutableList.of(); // empty List
+ return ImmutableSet.of(); // empty List
}
}
diff --git a/src/rails/game/OperatingRound.java b/src/rails/game/OperatingRound.java
index 3c02255..27a5377 100644
--- a/src/rails/game/OperatingRound.java
+++ b/src/rails/game/OperatingRound.java
@@ -10,6 +10,8 @@ import java.util.SortedMap;
import java.util.TreeMap;
import java.util.TreeSet;
+import com.google.common.collect.Iterables;
+
import rails.common.*;
import rails.common.parser.GameOption;
import rails.game.action.*;
@@ -2811,7 +2813,7 @@ public class OperatingRound extends Round implements Observer {
int cash = operatingCompany.value().getCash();
int cost = 0;
- List<Train> trains;
+ Set<Train> trains;
boolean hasTrains =
operatingCompany.value().getPortfolioModel().getNumberOfTrains() > 0;
@@ -2862,7 +2864,7 @@ public class OperatingRound extends Round implements Observer {
if (train.canBeExchanged() && hasTrains) {
cost = train.getCertType().getExchangeCost();
if (cost <= cash) {
- List<Train> exchangeableTrains =
+ Set<Train> exchangeableTrains =
operatingCompany.value().getPortfolioModel().getUniqueTrains();
BuyTrain action = new BuyTrain(train, ipo.getParent(), cost);
action.setTrainsForExchange(exchangeableTrains);
@@ -3031,7 +3033,7 @@ public class OperatingRound extends Round implements Observer {
public void checkForeignSales() {
if (getGameParameterAsBoolean(GameDef.Parm.REMOVE_TRAIN_BEFORE_SR)
&& trainManager.isAnyTrainBought()) {
- Train train = trainManager.getAvailableNewTrains().get(0);
+ Train train = Iterables.get(trainManager.getAvailableNewTrains(), 0);
if (train.getCertType().hasInfiniteQuantity()) return;
scrapHeap.addTrain(train);
ReportBuffer.add(LocalText.getText("RemoveTrain", train.getId()));
diff --git a/src/rails/game/PublicCertificate.java b/src/rails/game/PublicCertificate.java
index f6e2cd1..e72b973 100644
--- a/src/rails/game/PublicCertificate.java
+++ b/src/rails/game/PublicCertificate.java
@@ -10,8 +10,9 @@ import...
[truncated message content] |