diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 55569236281..ba37acad848 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -37,7 +37,6 @@ package mage.client; import de.schlichtherle.truezip.file.TArchiveDetector; import de.schlichtherle.truezip.file.TConfig; import de.schlichtherle.truezip.fs.FsOutputOption; -import mage.cards.Card; import mage.cards.decks.Deck; import mage.cards.repository.CardInfo; import mage.cards.repository.CardRepository; @@ -479,19 +478,9 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { menu.show(component, 0, component.getHeight()); } - private List getAllCards() { - List cards = new ArrayList(); - List allCards = CardRepository.instance.getAllCards(); - for (CardInfo cardInfo : allCards) { - cards.add(cardInfo.getCard()); - } - - return cards; - } - private void checkForNewImages() { long beforeCall = System.currentTimeMillis(); - List cards = getAllCards(); + List cards = CardRepository.instance.getAllCards(); logger.info("Card pool load time: " + ((System.currentTimeMillis() - beforeCall) / 1000 + " seconds")); String useDefault = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_USE_DEFAULT, "true"); @@ -507,7 +496,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { } public void btnImagesActionPerformed(java.awt.event.ActionEvent evt) { - List cards = getAllCards(); + List cards = CardRepository.instance.getAllCards(); String useDefault = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_USE_DEFAULT, "true"); String path = useDefault.equals("true") ? null : PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_PATH, null); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/CardImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/CardImageSource.java index dac76f4ed1a..fa6c54aa947 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/CardImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/CardImageSource.java @@ -1,12 +1,14 @@ package org.mage.plugins.card.dl.sources; +import org.mage.plugins.card.images.CardDownloadData; + /** * * @author North */ public interface CardImageSource { - String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondFace, boolean isFlipCard, boolean isSplitCard, boolean flippedView) throws Exception; - String generateTokenUrl(String name, String set); + String generateURL(CardDownloadData card) throws Exception; + String generateTokenUrl(CardDownloadData card); Float getAverageSize(); } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagicCardsImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagicCardsImageSource.java index 192e8c0fcd1..5f340657f90 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagicCardsImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagicCardsImageSource.java @@ -1,5 +1,6 @@ package org.mage.plugins.card.dl.sources; +import org.mage.plugins.card.images.CardDownloadData; import org.mage.plugins.card.utils.CardImageUtils; import java.util.HashMap; @@ -64,7 +65,9 @@ public class MagicCardsImageSource implements CardImageSource { } @Override - public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide, boolean isFlipCard, boolean isSplitCard, boolean flippedView) throws Exception { + public String generateURL(CardDownloadData card) throws Exception { + Integer collectorId = card.getCollectorId(); + String cardSet = card.getSet(); if (collectorId == null || cardSet == null) { throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet); } @@ -72,14 +75,14 @@ public class MagicCardsImageSource implements CardImageSource { StringBuilder url = new StringBuilder("http://magiccards.info/scans/en/"); url.append(set.toLowerCase()).append("/").append(collectorId); - if (twoFacedCard) { - url.append(secondSide ? "b" : "a"); + if (card.isTwoFacedCard()) { + url.append(card.isSecondSide() ? "b" : "a"); } - if (isSplitCard) { + if (card.isSplitCard()) { url.append("a"); } - if (isFlipCard) { - if (flippedView) { // download rotated by 180 degree image + if (card.isFlipCard()) { + if (card.isFlippedSide()) { // download rotated by 180 degree image url.append("b"); } else { url.append("a"); @@ -91,17 +94,15 @@ public class MagicCardsImageSource implements CardImageSource { } @Override - public String generateTokenUrl(String name, String set) { - String _name = name.replaceAll(" ", "-").replace(",", "").toLowerCase(); - String _set = "not-supported-set"; - if (setNameReplacement.containsKey(set)) { - _set = setNameReplacement.get(set); + public String generateTokenUrl(CardDownloadData card) { + String name = card.getName().replaceAll(" ", "-").replace(",", "").toLowerCase(); + String set = "not-supported-set"; + if (setNameReplacement.containsKey(card.getSet())) { + set = setNameReplacement.get(card.getSet()); } else { - _set += "-" + set; + set += "-" + card.getSet(); } - String url = "http://magiccards.info/extras/token/" + _set + "/" + _name + ".jpg"; - return url; - + return "http://magiccards.info/extras/token/" + set + "/" + name + ".jpg"; } @Override diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java index d849cbc8ae1..aa597c8deeb 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java @@ -3,6 +3,7 @@ package org.mage.plugins.card.dl.sources; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; +import org.mage.plugins.card.images.CardDownloadData; import java.io.IOException; import java.util.HashMap; @@ -15,8 +16,8 @@ import java.util.Map; public class WizardCardsImageSource implements CardImageSource { private static CardImageSource instance; - private static Map setsAliases; - private Map sets; + private static Map setsAliases; + private Map> sets; public static CardImageSource getInstance() { if (instance == null) { @@ -26,8 +27,8 @@ public class WizardCardsImageSource implements CardImageSource { } public WizardCardsImageSource() { - sets = new HashMap(); - setsAliases = new HashMap(); + sets = new HashMap>(); + setsAliases = new HashMap(); setsAliases.put("MMA", "modernmasters/cig"); setsAliases.put("DGM", "dragonsmaze/cig"); setsAliases.put("GTC", "gatecrash/cig"); @@ -56,7 +57,7 @@ public class WizardCardsImageSource implements CardImageSource { private Map getSetLinks(String cardSet) { Map setLinks = new HashMap(); try { - Document doc = Jsoup.connect("http://www.wizards.com/magic/tcg/article.aspx?x=mtg/tcg/" + (String) setsAliases.get(cardSet)).get(); + Document doc = Jsoup.connect("http://www.wizards.com/magic/tcg/article.aspx?x=mtg/tcg/" + setsAliases.get(cardSet)).get(); Elements cardsImages = doc.select("img[height$=370]"); for (int i = 0; i < cardsImages.size(); i++) { String cardName = cardsImages.get(i).attr("title").replace("\u00C6", "AE").replace("\u2019", "'"); @@ -94,20 +95,22 @@ public class WizardCardsImageSource implements CardImageSource { } @Override - public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide, boolean isFlipCard, boolean isSplitCard, boolean flippedView) throws Exception { + public String generateURL(CardDownloadData card) throws Exception { + Integer collectorId = card.getCollectorId(); + String cardSet = card.getSet(); if (collectorId == null || cardSet == null) { throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet); } - if (flippedView) { //doesn't support rotated images + if (card.isFlippedSide()) { //doesn't support rotated images return null; } if (setsAliases.get(cardSet) != null) { - Map setLinks = (Map) sets.get(cardSet); + Map setLinks = sets.get(cardSet); if (setLinks == null) { setLinks = getSetLinks(cardSet); sets.put(cardSet, setLinks); } - String link = setLinks.get(cardName); + String link = setLinks.get(card.getDownloadName()); if (link == null) { if (setLinks.size() >= collectorId) { link = setLinks.get(Integer.toString(collectorId - 1)); @@ -127,7 +130,7 @@ public class WizardCardsImageSource implements CardImageSource { } @Override - public String generateTokenUrl(String name, String set) { + public String generateTokenUrl(CardDownloadData card) { return null; } @@ -135,4 +138,4 @@ public class WizardCardsImageSource implements CardImageSource { public Float getAverageSize() { return 60.0f; } -} \ No newline at end of file +} diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java similarity index 82% rename from Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java rename to Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java index 4c76ccd8e6e..9bfb9ada0b3 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardInfo.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java @@ -4,7 +4,7 @@ package org.mage.plugins.card.images; * * @author North */ -public class CardInfo { +public class CardDownloadData { private String name; private String downloadName; @@ -19,15 +19,15 @@ public class CardInfo { private boolean splitCard; private boolean usesVariousArt; - public CardInfo(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type) { + public CardDownloadData(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type) { this(name, set, collectorId, usesVariousArt, type, false); } - public CardInfo(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type, boolean token) { + public CardDownloadData(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type, boolean token) { this(name, set, collectorId, usesVariousArt, type, token, false, false); } - public CardInfo(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type, boolean token, boolean twoFacedCard, boolean secondSide) { + public CardDownloadData(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type, boolean token, boolean twoFacedCard, boolean secondSide) { this.name = name; this.set = set; this.collectorId = collectorId; @@ -38,7 +38,7 @@ public class CardInfo { this.secondSide = secondSide; } - public CardInfo(final CardInfo card) { + public CardDownloadData(final CardDownloadData card) { this.name = card.name; this.set = card.set; this.collectorId = card.collectorId; @@ -57,7 +57,7 @@ public class CardInfo { if (getClass() != obj.getClass()) { return false; } - final CardInfo other = (CardInfo) obj; + final CardDownloadData other = (CardDownloadData) obj; if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) { return false; } @@ -96,10 +96,6 @@ public class CardInfo { return collectorId; } - public void setCollectorId(Integer collectorId) { - this.collectorId = collectorId; - } - public String getName() { return name; } @@ -160,10 +156,6 @@ public class CardInfo { return type; } - public void setType(Integer type) { - this.type = type; - } - public boolean getUsesVariousArt() { return usesVariousArt; } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java index 3b0c602ee08..bcf918db432 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java @@ -4,7 +4,7 @@ import de.schlichtherle.truezip.file.TFile; import de.schlichtherle.truezip.file.TFileOutputStream; import de.schlichtherle.truezip.file.TVFS; import de.schlichtherle.truezip.fs.FsSyncException; -import mage.cards.Card; +import mage.cards.repository.CardInfo; import mage.client.dialog.PreferencesDialog; import mage.remote.Connection; import org.apache.log4j.Logger; @@ -46,7 +46,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab private JButton closeButton; private JButton startDownloadButton; private int cardIndex; - private ArrayList cards; + private ArrayList cards; private JComboBox jComboBox1; private JLabel jLabel1; private static boolean offlineMode = false; @@ -60,14 +60,12 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab private ExecutorService executor = Executors.newFixedThreadPool(10); - public static final Proxy.Type[] types = Proxy.Type.values(); - public static void main(String[] args) { startDownload(null, null, null); } - public static void startDownload(JFrame frame, List allCards, String imagesPath) { - ArrayList cards = getNeededCards(allCards, imagesPath); + public static void startDownload(JFrame frame, List allCards, String imagesPath) { + ArrayList cards = getNeededCards(allCards, imagesPath); /* * if (cards == null || cards.size() == 0) { @@ -99,33 +97,15 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab this.cancel = cancel; } - public DownloadPictures(ArrayList cards, String imagesPath) { + public DownloadPictures(ArrayList cards, String imagesPath) { this.cards = cards; this.imagesPath = imagesPath; - //addr = new JTextField("Proxy Address"); - //port = new JTextField("Proxy Port"); bar = new JProgressBar(this); JPanel p0 = new JPanel(); p0.setLayout(new BoxLayout(p0, BoxLayout.Y_AXIS)); - // Proxy Choice - /*ButtonGroup bg = new ButtonGroup(); - String[] labels = { "No Proxy", "HTTP Proxy", "SOCKS Proxy" }; - for (int i = 0; i < types.length; i++) { - JRadioButton rb = new JRadioButton(labels[i]); - rb.addChangeListener(new ProxyHandler(i)); - bg.add(rb); - p0.add(rb); - if (i == 0) - rb.setSelected(true); - }*/ - - // Proxy config - //p0.add(addr); - //p0.add(port); - p0.add(Box.createVerticalStrut(5)); jLabel1 = new JLabel(); jLabel1.setText("Please select server:"); @@ -206,11 +186,11 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab dlg = new JOptionPane(p0, JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[1]); } - public static boolean checkForNewCards(List allCards, String imagesPath) { + public static boolean checkForNewCards(List allCards, String imagesPath) { TFile file; - for (Card card : allCards) { - if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty()) { - CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(),card.getUsesVariousArt(),0 , false, card.canTransform(), card.isNightCard()); + for (CardInfo card : allCards) { + if (card.getCardNumber() > 0 && !card.getSetCode().isEmpty()) { + CardDownloadData url = new CardDownloadData(card.getName(), card.getSetCode(), card.getCardNumber(), usesVariousArt(card), 0, false, card.isDoubleFaced(), card.isNightCard()); file = new TFile(CardImageUtils.getImagePath(url, imagesPath)); if (!file.exists()) { return true; @@ -220,47 +200,54 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab return false; } - private static ArrayList getNeededCards(List allCards, String imagesPath) { + private static boolean usesVariousArt(CardInfo card) { + String className = card.getClassName(); + return Character.isDigit(className.charAt(className.length() - 1)); + } - ArrayList cardsToDownload = new ArrayList(); + private static String createDownloadName(CardInfo card) { + String className = card.getClassName(); + return className.substring(className.lastIndexOf('.') + 1); + } + + private static ArrayList getNeededCards(List allCards, String imagesPath) { + + ArrayList cardsToDownload = new ArrayList(); /** * read all card names and urls */ - ArrayList allCardsUrls = new ArrayList(); + ArrayList allCardsUrls = new ArrayList(); HashSet ignoreUrls = SettingsManager.getIntance().getIgnoreUrls(); try { offlineMode = true; - for (Card card : allCards) { - if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty() - && !ignoreUrls.contains(card.getExpansionSetCode())) { + for (CardInfo card : allCards) { + if (card.getCardNumber() > 0 && !card.getSetCode().isEmpty() + && !ignoreUrls.contains(card.getSetCode())) { String cardName = card.getName(); - CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), 0, false, card.canTransform(), card.isNightCard()); + CardDownloadData url = new CardDownloadData(cardName, card.getSetCode(), card.getCardNumber(), usesVariousArt(card), 0, false, card.isDoubleFaced(), card.isNightCard()); if (url.getUsesVariousArt()) { - url.setDownloadName(card.getClass().getName().replace(card.getClass().getPackage().getName() + ".", "")); - } - if (card.isFlipCard()) { - url.setFlipCard(true); - } - if (card.isSplitCard()) { - url.setSplitCard(true); + url.setDownloadName(createDownloadName(card)); } + + url.setFlipCard(card.isFlipCard()); + url.setSplitCard(card.isSplitCard()); + allCardsUrls.add(url); - if (card.canTransform()) { + if (card.isDoubleFaced()) { // add second side for downloading // it has the same expansion set code and card number as original one // second side = true; - Card secondSide = card.getSecondCardFace(); - url = new CardInfo(secondSide.getName(), card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), 0, false, card.canTransform(), true); + url = new CardDownloadData(card.getSecondSideName(), card.getSetCode(), card.getCardNumber(), usesVariousArt(card), 0, false, card.isDoubleFaced(), true); allCardsUrls.add(url); } if (card.isFlipCard()) { if (card.getFlipCardName() == null || card.getFlipCardName().trim().isEmpty()) { throw new IllegalStateException("Flipped card can't have empty name."); } - url = new CardInfo(card.getFlipCardName(), card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), 0, false, card.canTransform(), card.isNightCard()); + url = new CardDownloadData(card.getFlipCardName(), card.getSetCode(), card.getCardNumber(), usesVariousArt(card), 0, false, card.isDoubleFaced(), card.isNightCard()); url.setFlipCard(true); url.setFlippedSide(true); allCardsUrls.add(url); @@ -269,7 +256,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (card.getCardNumber() < 1) { System.err.println("There was a critical error!"); log.error("Card has no collector ID and won't be sent to client: " + card); - } else if (card.getExpansionSetCode().isEmpty()) { + } else if (card.getSetCode().isEmpty()) { System.err.println("There was a critical error!"); log.error("Card has no set name and won't be sent to client:" + card); } @@ -286,14 +273,14 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab /** * check to see which cards we already have */ - for (CardInfo card : allCardsUrls) { + for (CardDownloadData card : allCardsUrls) { file = new TFile(CardImageUtils.getImagePath(card, imagesPath)); if (!file.exists()) { cardsToDownload.add(card); } } - for (CardInfo card : cardsToDownload) { + for (CardDownloadData card : cardsToDownload) { if (card.isToken()) { log.info("Card to download: " + card.getName() + " (Token) "); } else { @@ -308,8 +295,8 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab return cardsToDownload; } - private static ArrayList getTokenCardUrls() throws RuntimeException { - ArrayList list = new ArrayList(); + private static ArrayList getTokenCardUrls() throws RuntimeException { + ArrayList list = new ArrayList(); InputStream in = DownloadPictures.class.getClassLoader().getResourceAsStream("card-pictures-tok.txt"); if (in == null) { @@ -332,15 +319,15 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (params.length >= 4) { if (params[1].toLowerCase().equals("generate") && params[2].startsWith("TOK:")) { String set = params[2].substring(4); - CardInfo card = new CardInfo(params[3], set, 0, false, 0, true); + CardDownloadData card = new CardDownloadData(params[3], set, 0, false, 0, true); list.add(card); } else if (params[1].toLowerCase().equals("generate") && params[2].startsWith("EMBLEM:")) { String set = params[2].substring(7); - CardInfo card = new CardInfo("Emblem " + params[3], set, 0, false,0, true); + CardDownloadData card = new CardDownloadData("Emblem " + params[3], set, 0, false,0, true); list.add(card); } else if (params[1].toLowerCase().equals("generate") && params[2].startsWith("EMBLEM-:")) { String set = params[2].substring(8); - CardInfo card = new CardInfo(params[3] + " Emblem", set, 0, false, 0, true); + CardDownloadData card = new CardDownloadData(params[3] + " Emblem", set, 0, false, 0, true); list.add(card); } } else { @@ -408,7 +395,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab for (int i = 0; i < cards.size() && !cancel; i++) { try { - CardInfo card = cards.get(i); + CardDownloadData card = cards.get(i); log.info("Downloading card: " + card.getName() + " (" + card.getSet() + ")"); @@ -417,10 +404,9 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (card.getCollectorId() != 0) { continue; } - url = cardImageSource.generateTokenUrl(card.getName(), card.getSet()); + url = cardImageSource.generateTokenUrl(card); } else { - url = cardImageSource.generateURL(card.getCollectorId(), card.getDownloadName(), card.getSet(), - card.isTwoFacedCard(), card.isSecondSide(), card.isFlipCard(), card.isSplitCard(), card.isFlippedSide()); + url = cardImageSource.generateURL(card); } if (url != null) { @@ -457,10 +443,10 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab private final class DownloadTask implements Runnable { - private CardInfo card; + private CardDownloadData card; private URL url; - public DownloadTask(CardInfo card, URL url) { + public DownloadTask(CardDownloadData card, URL url) { this.card = card; this.url = url; } @@ -573,10 +559,10 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab bar.setString(String.format("%d of %d cards finished! Please wait! [%.1f Mb]", card, count, mb)); } else { - Iterator cardsIterator = DownloadPictures.this.cards.iterator(); + Iterator cardsIterator = DownloadPictures.this.cards.iterator(); while (cardsIterator.hasNext()) { - CardInfo cardInfo = cardsIterator.next(); - TFile file = new TFile(CardImageUtils.getImagePath(cardInfo, imagesPath)); + CardDownloadData cardDownloadData = cardsIterator.next(); + TFile file = new TFile(CardImageUtils.getImagePath(cardDownloadData, imagesPath)); if (file.exists()) { cardsIterator.remove(); } @@ -584,7 +570,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab count = DownloadPictures.this.cards.size(); if (count == 0) { - bar.setString(String.format("0 cards remaining! Please close!", count)); + bar.setString("0 cards remaining! Please close!"); } else { bar.setString(String.format("%d cards remaining! Please choose another source!", count)); //executor = Executors.newFixedThreadPool(10); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java index e59c2deac5e..cb6d9e0dbeb 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java @@ -71,7 +71,7 @@ public class ImageCache { Integer type = Integer.parseInt(m.group(3)); Integer collectorId = Integer.parseInt(m.group(4)); - CardInfo info = new CardInfo(name, set, collectorId, usesVariousArt, type); + CardDownloadData info = new CardDownloadData(name, set, collectorId, usesVariousArt, type); if (collectorId == 0) { info.setToken(true); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java index 9634efb0770..75172f7c9d0 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java @@ -4,12 +4,12 @@ import de.schlichtherle.truezip.file.TFile; import java.util.HashMap; import mage.client.constants.Constants; import mage.client.dialog.PreferencesDialog; -import org.mage.plugins.card.images.CardInfo; +import org.mage.plugins.card.images.CardDownloadData; import org.mage.plugins.card.properties.SettingsManager; public class CardImageUtils { - private static HashMap pathCache = new HashMap(); + private static HashMap pathCache = new HashMap(); /** * Get path to image for specific card. @@ -18,7 +18,7 @@ public class CardImageUtils { * card to get path for * @return String if image exists, else null */ - public static String getImagePath(CardInfo card) { + public static String getImagePath(CardDownloadData card) { String filePath; TFile file; @@ -51,19 +51,19 @@ public class CardImageUtils { } } - private static String getTokenImagePath(CardInfo card) { + private static String getTokenImagePath(CardDownloadData card) { String useDefault = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_USE_DEFAULT, "true"); String path = useDefault.equals("true") ? null : PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_PATH, null); String filename = getImagePath(card, path); TFile file = new TFile(filename); if (!file.exists()) { - CardInfo updated = new CardInfo(card); + CardDownloadData updated = new CardDownloadData(card); updated.setName(card.getName() + " 1"); filename = getImagePath(updated, path); file = new TFile(filename); if (!file.exists()) { - updated = new CardInfo(card); + updated = new CardDownloadData(card); updated.setName(card.getName() + " 2"); filename = getImagePath(updated, path); } @@ -72,10 +72,10 @@ public class CardImageUtils { return filename; } - private static String searchForCardImage(CardInfo card) { + private static String searchForCardImage(CardDownloadData card) { TFile file; String path; - CardInfo c = new CardInfo(card); + CardDownloadData c = new CardDownloadData(card); for (String set : SettingsManager.getIntance().getTokenLookupOrder()) { c.setSet(set); @@ -100,7 +100,7 @@ public class CardImageUtils { return set; } - private static String getImageDir(CardInfo card, String imagesPath) { + private static String getImageDir(CardDownloadData card, String imagesPath) { if (card.getSet() == null) { return ""; } @@ -129,7 +129,7 @@ public class CardImageUtils { } } - public static String getImagePath(CardInfo card, String imagesPath) { + public static String getImagePath(CardDownloadData card, String imagesPath) { String imageDir = getImageDir(card, imagesPath); String imageName; diff --git a/Mage/src/mage/cards/repository/CardInfo.java b/Mage/src/mage/cards/repository/CardInfo.java index e95b0575d72..d3a5ded4453 100644 --- a/Mage/src/mage/cards/repository/CardInfo.java +++ b/Mage/src/mage/cards/repository/CardInfo.java @@ -30,9 +30,11 @@ package mage.cards.repository; import com.j256.ormlite.field.DataType; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; + import mage.constants.CardType; import mage.constants.Rarity; import mage.ObjectColor; @@ -84,7 +86,17 @@ public class CardInfo { @DatabaseField protected boolean white; @DatabaseField + protected boolean splitCard; + @DatabaseField + protected boolean flipCard; + @DatabaseField protected boolean doubleFaced; + @DatabaseField + protected boolean nightCard; + @DatabaseField + protected String flipCardName; + @DatabaseField + protected String secondSideName; public CardInfo() { } @@ -98,7 +110,17 @@ public class CardInfo { this.toughness = card.getToughness().toString(); this.convertedManaCost = card.getManaCost().convertedManaCost(); this.rarity = card.getRarity(); + this.splitCard = card.isSplitCard(); + + this.flipCard = card.isFlipCard(); + this.flipCardName = card.getFlipCardName(); + this.doubleFaced = card.canTransform(); + this.nightCard = card.isNightCard(); + Card secondSide = card.getSecondCardFace(); + if (secondSide != null) { + this.secondSideName = secondSide.getName(); + } this.blue = card.getColor().isBlue(); this.black = card.getColor().isBlack(); @@ -144,7 +166,7 @@ public class CardInfo { for (String type : this.types.split(SEPARATOR)) { try { list.add(CardType.valueOf(type)); - } catch (Exception e) { + } catch (IllegalArgumentException e) { } } return list; @@ -217,4 +239,32 @@ public class CardInfo { public String getClassName() { return className; } + + public int getCardNumber() { + return cardNumber; + } + + public boolean isSplitCard() { + return splitCard; + } + + public boolean isFlipCard() { + return flipCard; + } + + public String getFlipCardName() { + return flipCardName; + } + + public boolean isDoubleFaced() { + return doubleFaced; + } + + public boolean isNightCard() { + return nightCard; + } + + public String getSecondSideName() { + return secondSideName; + } } diff --git a/Mage/src/mage/cards/repository/CardRepository.java b/Mage/src/mage/cards/repository/CardRepository.java index cbcbc6926cd..feb74c07090 100644 --- a/Mage/src/mage/cards/repository/CardRepository.java +++ b/Mage/src/mage/cards/repository/CardRepository.java @@ -54,7 +54,7 @@ public enum CardRepository { instance; private static final String JDBC_URL = "jdbc:sqlite:db/cards.db"; - private static final long DB_VERSION = 6; + private static final long DB_VERSION = 7; private Random random = new Random(); private Dao cardDao;