Ability to import draft logs as decks.

This commit is contained in:
John Hitchings 2019-04-11 22:23:56 -07:00
parent 35f705e07b
commit 61d40902ab
6 changed files with 593 additions and 3 deletions

View file

@ -34,6 +34,8 @@ public abstract class DeckImporter {
return new CodDeckImporter();
} else if (file.toLowerCase(Locale.ENGLISH).endsWith("o8d")) {
return new O8dDeckImporter();
} else if (file.toLowerCase(Locale.ENGLISH).endsWith("draft")) {
return new DraftLogImporter();
} else {
return null;
}

View file

@ -0,0 +1,46 @@
package mage.cards.decks.importer;
import mage.cards.decks.DeckCardInfo;
import mage.cards.decks.DeckCardLists;
import mage.cards.repository.CardCriteria;
import mage.cards.repository.CardInfo;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DraftLogImporter extends PlainTextDeckImporter {
private static Pattern SET_PATTERN = Pattern.compile("------ (\\p{Alnum}+) ------$");
private static Pattern PICK_PATTERN = Pattern.compile("--> (.+)$");
private String currentSet = null;
@Override
protected void readLine(String line, DeckCardLists deckList) {
Matcher setMatcher = SET_PATTERN.matcher(line);
if (setMatcher.matches()) {
currentSet = setMatcher.group(1);
return;
}
Matcher pickMatcher = PICK_PATTERN.matcher(line);
if (pickMatcher.matches()) {
String name = pickMatcher.group(1);
List<CardInfo> cards = getCardLookup().lookupCardInfo(new CardCriteria().setCodes(currentSet).name(name));
CardInfo card = null;
if (!cards.isEmpty()) {
card = cards.get(0);
} else {
card = getCardLookup().lookupCardInfo(name).orElse(null);
}
if (card != null) {
deckList.getCards().add(new DeckCardInfo(card.getName(), card.getCardNumber(), card.getSetCode()));
} else {
sbMessage.append("couldn't find: \"").append(name).append("\"\n");
}
}
}
}