- Changes to reading in draft rankings.

This commit is contained in:
mcrawford620
2012-07-27 23:37:30 +00:00
parent 12df2b7e5f
commit 33cef1c783
2 changed files with 41 additions and 25 deletions

View File

@@ -3,11 +3,11 @@ package forge.game.limited;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import com.esotericsoftware.minlog.Log;
import forge.error.ErrorViewer; import forge.error.ErrorViewer;
import forge.properties.ForgeProps; import forge.properties.ForgeProps;
import forge.properties.NewConstants; import forge.properties.NewConstants;
@@ -21,7 +21,7 @@ public class ReadDraftRankings {
/** Constant <code>comment="//"</code>. */ /** Constant <code>comment="//"</code>. */
private static final String COMMENT = "//"; private static final String COMMENT = "//";
private Map<String, List<String>> draftRankings; private Map<String, Map<String, Integer>> draftRankings;
/** /**
* <p> * <p>
@@ -50,9 +50,9 @@ public class ReadDraftRankings {
* a {@link java.io.File} object. * a {@link java.io.File} object.
* @return a {@link java.util.Map} object. * @return a {@link java.util.Map} object.
*/ */
private Map<String, List<String>> readFile(final File file) { private Map<String, Map<String, Integer>> readFile(final File file) {
BufferedReader in; BufferedReader in;
final Map<String, List<String>> map = new HashMap<String, List<String>>(); final Map<String, Map<String, Integer>> map = new HashMap<String, Map<String, Integer>>();
try { try {
in = new BufferedReader(new FileReader(file)); in = new BufferedReader(new FileReader(file));
@@ -62,15 +62,20 @@ public class ReadDraftRankings {
while ((line != null) && (line.trim().length() != 0)) { while ((line != null) && (line.trim().length() != 0)) {
if (!line.startsWith(ReadDraftRankings.COMMENT)) { if (!line.startsWith(ReadDraftRankings.COMMENT)) {
final String[] s = line.split(","); 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 name = s[1].trim();
//final String rarity = s[2].trim(); // final String rarity = s[2].trim();
final String edition = s[3].trim(); final String edition = s[3].trim();
try {
final int rank = Integer.parseInt(rankStr);
if (!map.containsKey(edition)) { if (!map.containsKey(edition)) {
map.put(edition, new ArrayList<String>()); map.put(edition, new HashMap<String, Integer>());
}
map.get(edition).put(name, rank);
} catch (NumberFormatException nfe) {
Log.warn("NumberFormatException: " + nfe.getMessage());
} }
map.get(edition).add(name);
} }
line = in.readLine(); line = in.readLine();
} // if } // if
@@ -83,14 +88,12 @@ public class ReadDraftRankings {
return map; return map;
} // readFile() } // readFile()
/** public Integer getRanking(String cardName, String edition) {
* <p> Integer rank = null;
* getDraftRankings. if (draftRankings.containsKey(edition)) {
* </p> String safeName = cardName.replaceAll("[^A-Za-z ]", "");
* rank = draftRankings.get(edition).get(safeName);
* @return a {@link java.util.Map} object. }
*/ return rank;
public final Map<String, List<String>> getDraftRankings() {
return this.draftRankings;
} }
} }

View File

@@ -1,13 +1,16 @@
package forge; package forge;
import java.io.File;
import java.util.List; import java.util.List;
import java.util.Map;
import junit.framework.Assert; import junit.framework.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import forge.game.limited.ReadDraftRankings; import forge.game.limited.ReadDraftRankings;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import forge.util.FileUtil;
/** /**
* Tests for DeckWants. * Tests for DeckWants.
@@ -23,10 +26,20 @@ public class ReadDraftRankingsTest {
void test() { void test() {
ReadDraftRankings rdr = new ReadDraftRankings(); ReadDraftRankings rdr = new ReadDraftRankings();
Assert.assertNotNull(rdr); Assert.assertNotNull(rdr);
Map<String, List<String>> rankings = rdr.getDraftRankings();
Assert.assertNotNull(rankings); List<String> cardLines = FileUtil
Assert.assertEquals("Garruk Primal Hunter", rankings.get("M13").get(0)); .readFile(new File(ForgeProps.getFile(NewConstants.CARDSFOLDER) + "/g", "garruk_primal_hunter.txt"));
Assert.assertEquals("Clone", rankings.get("M13").get(37)); Card c = CardReader.readCard(cardLines);
Assert.assertEquals("Tamiyo the Moon Sage", rankings.get("AVR").get(0)); 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());
} }
} }