Cards that were missing setInfo will be listed in a good errorviewer window.

This commit is contained in:
Maxmtg
2011-09-04 20:39:59 +00:00
parent aefb076f23
commit 61ba486d8d
2 changed files with 33 additions and 4 deletions

View File

@@ -39,6 +39,8 @@ public final class CardDb {
} }
} }
} }
private static List<String> skippedCards = new ArrayList<String>();
public static List<String> getSkippedCards() { return skippedCards; }
// Here oracle cards // Here oracle cards
private final Map<String, CardRules> cards = new Hashtable<String, CardRules>(); private final Map<String, CardRules> cards = new Hashtable<String, CardRules>();
@@ -61,13 +63,17 @@ public final class CardDb {
private CardDb(final Iterator<CardRules> parser) { private CardDb(final Iterator<CardRules> parser) {
while (parser.hasNext()) { while (parser.hasNext()) {
addNewCard(parser.next()); CardRules nextCard = parser.next();
boolean wasAdded = addNewCard(nextCard);
if (!wasAdded) {
skippedCards.add(nextCard.getName());
}
} }
// TODO: consider using Collections.unmodifiableList wherever possible // TODO: consider using Collections.unmodifiableList wherever possible
} }
public void addNewCard(final CardRules card) { public boolean addNewCard(final CardRules card) {
if (null == card) { return; } if (null == card) { return true; } // consider that a success
//System.out.println(card.getName()); //System.out.println(card.getName());
String cardName = card.getName().toLowerCase(); String cardName = card.getName().toLowerCase();
@@ -95,7 +101,12 @@ public final class CardDb {
cardCopies[i] = lastAdded; cardCopies[i] = lastAdded;
} }
} }
uniqueCards.put(cardName, lastAdded);
if (null != lastAdded) {
uniqueCards.put(cardName, lastAdded);
return true;
}
return false;
} }
// Single fetch // Single fetch
@@ -159,4 +170,14 @@ public final class CardDb {
public List<CardPrinted> getAllCards() { return allCardsFlat; } public List<CardPrinted> getAllCards() { return allCardsFlat; }
public class NoSetsException extends RuntimeException
{
private static final long serialVersionUID = -8962691656197179214L;
public final String cardName;
public NoSetsException(String cardName) { this.cardName = cardName; }
@Override public String toString() {
return String.format("%s: The card '%s' was not assigned any set, it won't be loaded into game", this.getClass().getName(), cardName);
}
}
} }

View File

@@ -6,6 +6,8 @@ import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils;
import forge.AllZone; import forge.AllZone;
import forge.Card; import forge.Card;
import forge.CardReader; import forge.CardReader;
@@ -79,6 +81,12 @@ public class PreloadingCardFactory extends AbstractCardFactory {
// this fills in our map of card names to Card instances. // this fills in our map of card names to Card instances.
read.run(); read.run();
CardDb.setup(listCardRules.iterator()); CardDb.setup(listCardRules.iterator());
List<String> skipped = CardDb.getSkippedCards();
if (!skipped.isEmpty()) {
String message = String.format("The following cards are lacking of correct SetInfo: %s", StringUtils.join(skipped, ", "));
ErrorViewer.showError(message);
}
} // readCard() } // readCard()
} //end class PreloadingCardFactory } //end class PreloadingCardFactory