diff --git a/src/main/java/forge/game/limited/ReadDraftRankings.java b/src/main/java/forge/game/limited/ReadDraftRankings.java index 3b76a01f079..c8ac6d86621 100644 --- a/src/main/java/forge/game/limited/ReadDraftRankings.java +++ b/src/main/java/forge/game/limited/ReadDraftRankings.java @@ -3,11 +3,11 @@ package forge.game.limited; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; +import com.esotericsoftware.minlog.Log; + import forge.error.ErrorViewer; import forge.properties.ForgeProps; import forge.properties.NewConstants; @@ -21,7 +21,7 @@ public class ReadDraftRankings { /** Constant comment="//". */ private static final String COMMENT = "//"; - private Map> draftRankings; + private Map> draftRankings; /** *

@@ -50,9 +50,9 @@ public class ReadDraftRankings { * a {@link java.io.File} object. * @return a {@link java.util.Map} object. */ - private Map> readFile(final File file) { + private Map> readFile(final File file) { BufferedReader in; - final Map> map = new HashMap>(); + final Map> map = new HashMap>(); try { in = new BufferedReader(new FileReader(file)); @@ -62,15 +62,20 @@ public class ReadDraftRankings { while ((line != null) && (line.trim().length() != 0)) { if (!line.startsWith(ReadDraftRankings.COMMENT)) { final String[] s = line.split(","); - //final String rank = s[0].trim().substring(1); + final String rankStr = s[0].trim().substring(1); final String name = s[1].trim(); - //final String rarity = s[2].trim(); + // final String rarity = s[2].trim(); final String edition = s[3].trim(); - if (!map.containsKey(edition)) { - map.put(edition, new ArrayList()); + try { + final int rank = Integer.parseInt(rankStr); + if (!map.containsKey(edition)) { + map.put(edition, new HashMap()); + } + map.get(edition).put(name, rank); + } catch (NumberFormatException nfe) { + Log.warn("NumberFormatException: " + nfe.getMessage()); } - map.get(edition).add(name); } line = in.readLine(); } // if @@ -83,14 +88,12 @@ public class ReadDraftRankings { return map; } // readFile() - /** - *

- * getDraftRankings. - *

- * - * @return a {@link java.util.Map} object. - */ - public final Map> getDraftRankings() { - return this.draftRankings; + public Integer getRanking(String cardName, String edition) { + Integer rank = null; + if (draftRankings.containsKey(edition)) { + String safeName = cardName.replaceAll("[^A-Za-z ]", ""); + rank = draftRankings.get(edition).get(safeName); + } + return rank; } } diff --git a/src/test/java/forge/ReadDraftRankingsTest.java b/src/test/java/forge/ReadDraftRankingsTest.java index dc0ec598eb5..31e725d6fdb 100644 --- a/src/test/java/forge/ReadDraftRankingsTest.java +++ b/src/test/java/forge/ReadDraftRankingsTest.java @@ -1,13 +1,16 @@ package forge; +import java.io.File; import java.util.List; -import java.util.Map; import junit.framework.Assert; import org.testng.annotations.Test; import forge.game.limited.ReadDraftRankings; +import forge.properties.ForgeProps; +import forge.properties.NewConstants; +import forge.util.FileUtil; /** * Tests for DeckWants. @@ -23,10 +26,20 @@ public class ReadDraftRankingsTest { void test() { ReadDraftRankings rdr = new ReadDraftRankings(); Assert.assertNotNull(rdr); - Map> rankings = rdr.getDraftRankings(); - Assert.assertNotNull(rankings); - Assert.assertEquals("Garruk Primal Hunter", rankings.get("M13").get(0)); - Assert.assertEquals("Clone", rankings.get("M13").get(37)); - Assert.assertEquals("Tamiyo the Moon Sage", rankings.get("AVR").get(0)); + + List cardLines = FileUtil + .readFile(new File(ForgeProps.getFile(NewConstants.CARDSFOLDER) + "/g", "garruk_primal_hunter.txt")); + Card c = CardReader.readCard(cardLines); + Assert.assertEquals(1, rdr.getRanking(c.getName(), "M13").intValue()); + + cardLines = FileUtil + .readFile(new File(ForgeProps.getFile(NewConstants.CARDSFOLDER) + "/c", "clone.txt")); + c = CardReader.readCard(cardLines); + Assert.assertEquals(38, rdr.getRanking(c.getName(), "M13").intValue()); + + cardLines = FileUtil + .readFile(new File(ForgeProps.getFile(NewConstants.CARDSFOLDER) + "/t", "tamiyo_the_moon_sage.txt")); + c = CardReader.readCard(cardLines); + Assert.assertEquals(1, rdr.getRanking(c.getName(), "AVR").intValue()); } }