package madcow.magic.model.support; import java.util.logging.Logger; import madcow.magic.collection.CardCondition; import madcow.magic.collection.CardInstance; import madcow.magic.collection.Collection; import madcow.magic.collection.CollectionElement; import madcow.magic.collection.CollectionFactory; import madcow.magic.collection.Container; import madcow.magic.collection.Deck; import madcow.magic.database.card.Card; import madcow.magic.database.card.CardPackage; import madcow.magic.database.core.Database; import org.eclipse.emf.common.util.EList; public final class MagicCollectionHelper { public static int initializeCollElementFromCSV(CollectionElement element, EList<EList<String>> values, int index) { EList<String> line = values.get(index); //setId(line.get(1).trim()); if(1 < line.size()){ element.setName(line.get(1).trim()); } if(2 < line.size()){ element.setOwner(line.get(2).trim()); } if(3 < line.size()){ element.setDescription(line.get(3).trim()); } return index; } public static int initializeCollFromCSV(Collection collection, EList<EList<String>> values, int index) { index = initializeCollElementFromCSV(collection, values, index); index++; while(index < values.size() && 0 < values.get(index).size()){ EList<String> nextline = values.get(index); if(nextline.get(0).equals("CONT")){ Container c = CollectionFactory.eINSTANCE.createContainer(); c.setCollection(collection); index = MagicCollectionHelper.initializeContainerFromCSV(c, values, index); } else if(nextline.get(0).equals("DECK")){ Deck d = CollectionFactory.eINSTANCE.createDeck(); d.setCollection(collection); index = MagicCollectionHelper.initializeDeckFromCSV(d, values, index); } else break; } return index; } public static int initializeContainerFromCSV(Container container, EList<EList<String>> values, int index) { index = initializeCollElementFromCSV(container, values, index); Database db = container.getCollection().getDatabase(); EList<String> line = values.get(index); if(4 < line.size()){ container.setPlace(line.get(4).trim()); } index++; while(index < values.size() && 0 < values.get(index).size()){ EList<String> nextline = values.get(index); if(0 < nextline.size()){ String string = nextline.get(0); if(string.equals("DECK") || string.equals("CONT") || string.equals("COLL")) return index; } if(1 < nextline.size()){ String setId = nextline.get(0).trim(); String card = nextline.get(1).trim(); CardInstance ci = CollectionFactory.eINSTANCE.createCardInstance(); try { int number = Integer.parseInt(card); Card c = MagicDatabaseHelper.findCardByNumberAndSetId(db, number, setId); ci.setCard(c); ci.setName(c.getName()); container.getCards().add(ci); } catch (NumberFormatException e) { // TODO alter logging to internal logger Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).warning("Card is not identified by number, rying as name"); Card c = MagicDatabaseHelper.findCardByNameAndSetId(db, card, setId); ci.setCard(c); ci.setName(c.getName()); container.getCards().add(ci); } if(2 < nextline.size()){ String condition = nextline.get(2).trim(); if(CardCondition.get(condition) != null) ci.setCondition(CardCondition.get(condition)); else ci.setCondition(CardCondition.EXCELLENT); } if(3 < nextline.size()){ String foil = nextline.get(3).trim(); if(foil.equals("1")) ci.setFoil(true); else ci.setFoil(false); } if(4 < nextline.size()){ String proxy = nextline.get(4).trim(); if(proxy.equals("1")) ci.setProxy(true); else ci.setProxy(false); } } index++; } return index; } public static int initializeDeckFromCSV(Deck deck, EList<EList<String>> values, int index) { index = initializeContainerFromCSV(deck, values, index); return index; } }