diff --git a/src/main/java/forge/card/CardDb.java b/src/main/java/forge/card/CardDb.java
index e56236dda86..0180d4d960d 100644
--- a/src/main/java/forge/card/CardDb.java
+++ b/src/main/java/forge/card/CardDb.java
@@ -2,6 +2,7 @@ package forge.card;
import java.util.ArrayList;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
@@ -10,16 +11,13 @@ import java.util.Map.Entry;
import org.apache.commons.lang3.StringUtils;
import forge.Card;
-import forge.FileUtil;
-import forge.properties.ForgeProps;
-import forge.properties.NewConstants;
/**
- *
CardOracleDatabase class.
+ * CardDb class.
*
* @author Forge
- * @version $Id: CardOracleDatabase.java 9708 2011-08-09 19:34:12Z jendave $
+ * @version $Id: CardDb.java 9708 2011-08-09 19:34:12Z jendave $
*/
public final class CardDb {
private static volatile CardDb onlyInstance = null; // 'volatile' keyword makes this working
@@ -46,8 +44,10 @@ public final class CardDb {
private CardDb() {
- List mtgDataLines = FileUtil.readFile(ForgeProps.getFile(NewConstants.MTG_DATA));
- MtgDataParser parser = new MtgDataParser(mtgDataLines);
+ this(new MtgDataParser()); // I wish cardname.txt parser was be here.
+ }
+
+ private CardDb(final Iterator parser) {
while (parser.hasNext()) {
addNewCard(parser.next());
}
diff --git a/src/main/java/forge/card/CardManaCost.java b/src/main/java/forge/card/CardManaCost.java
index 6ccd1d527fd..e5953ac5638 100644
--- a/src/main/java/forge/card/CardManaCost.java
+++ b/src/main/java/forge/card/CardManaCost.java
@@ -4,10 +4,8 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-
import org.apache.commons.lang3.StringUtils;
-
/**
* CardManaCost class.
*
@@ -15,7 +13,6 @@ import org.apache.commons.lang3.StringUtils;
* @version $Id: CardManaCost.java 9708 2011-08-09 19:34:12Z jendave $
*/
-
public final class CardManaCost implements Comparable {
private final List shards = new ArrayList();
private final int genericCost;
@@ -35,7 +32,10 @@ public final class CardManaCost implements Comparable {
public static final CardManaCost empty = new CardManaCost();
public CardManaCost(final String cost) {
- ParserMtgData parser = new ParserMtgData(cost);
+ this(new ParserMtgData(cost));
+ }
+
+ public CardManaCost(final ManaParser parser) {
if (!parser.hasNext()) {
throw new RuntimeException("Empty manacost passed to parser (this should have been handled before)");
}
@@ -44,7 +44,7 @@ public final class CardManaCost implements Comparable {
CardManaCostShard shard = parser.next();
if (shard != null) { shards.add(shard); } // null is OK - that was generic mana
}
- genericCost = parser.getColorlessCost(); // collect generic mana here
+ genericCost = parser.getTotalColorlessCost(); // collect generic mana here
stringValue = getSimpleString();
}
@@ -93,7 +93,12 @@ public final class CardManaCost implements Comparable {
return stringValue;
}
- public class ParserMtgData implements Iterator {
+ public interface ManaParser extends Iterator
+ {
+ int getTotalColorlessCost();
+ }
+
+ public static class ParserMtgData implements ManaParser {
private final String cost;
private int nextBracket;
@@ -107,7 +112,7 @@ public final class CardManaCost implements Comparable {
colorlessCost = 0;
}
- public int getColorlessCost() {
+ public int getTotalColorlessCost() {
if ( hasNext() ) {
throw new RuntimeException("Colorless cost should be obtained after iteration is complete");
}
diff --git a/src/main/java/forge/card/MtgDataParser.java b/src/main/java/forge/card/MtgDataParser.java
index b18b5eb631f..a373ee2c03f 100644
--- a/src/main/java/forge/card/MtgDataParser.java
+++ b/src/main/java/forge/card/MtgDataParser.java
@@ -6,11 +6,17 @@ import java.util.List;
import org.apache.commons.lang3.StringUtils;
+import forge.FileUtil;
+import forge.properties.ForgeProps;
+import forge.properties.NewConstants;
+
public final class MtgDataParser implements Iterator {
private Iterator it;
- public MtgDataParser(final Iterable data) {
- it = data.iterator();
+ private final List mtgDataLines;
+ public MtgDataParser() {
+ mtgDataLines = FileUtil.readFile(ForgeProps.getFile(NewConstants.MTG_DATA));
+ it = mtgDataLines.iterator();
skipSetList();
}