diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 3ea48536d82..bc12359ba90 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -474,14 +474,11 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { 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"); - String path = useDefault.equals("true") ? null : PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_PATH, null); - beforeCall = System.currentTimeMillis(); - if (DownloadPictures.checkForNewCards(cards, path)) { + if (DownloadPictures.checkForNewCards(cards)) { logger.info("Card images checking time: " + ((System.currentTimeMillis() - beforeCall) / 1000 + " seconds")); if (JOptionPane.showConfirmDialog(null, "New cards are available. Do you want to download the images?", "New images available", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { - DownloadPictures.startDownload(null, cards, path); + DownloadPictures.startDownload(null, cards); } } } @@ -489,10 +486,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { public void btnImagesActionPerformed(java.awt.event.ActionEvent evt) { 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); - - DownloadPictures.startDownload(null, cards, path); + DownloadPictures.startDownload(null, cards); } public void btnSymbolsActionPerformed(java.awt.event.ActionEvent evt) { 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 a8ee8288688..156cfe17ad0 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 @@ -52,7 +52,6 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab private static boolean offlineMode = false; private JCheckBox checkBox; private final Object sync = new Object(); - private String imagesPath; private static CardImageSource cardImageSource; @@ -61,11 +60,11 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab private ExecutorService executor = Executors.newFixedThreadPool(10); public static void main(String[] args) { - startDownload(null, null, null); + startDownload(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) { + ArrayList cards = getNeededCards(allCards); /* * if (cards == null || cards.size() == 0) { @@ -73,7 +72,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab * "All card pictures have been downloaded."); return; } */ - DownloadPictures download = new DownloadPictures(cards, imagesPath); + DownloadPictures download = new DownloadPictures(cards); JDialog dlg = download.getDlg(frame); dlg.setVisible(true); dlg.dispose(); @@ -97,9 +96,8 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab this.cancel = cancel; } - public DownloadPictures(ArrayList cards, String imagesPath) { + public DownloadPictures(ArrayList cards) { this.cards = cards; - this.imagesPath = imagesPath; bar = new JProgressBar(this); @@ -186,12 +184,12 @@ 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) { TFile file; 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)); + CardDownloadData url = new CardDownloadData(card.getName(), card.getSetCode(), card.getCardNumber(), card.usesVariousArt(), 0, false, card.isDoubleFaced(), card.isNightCard()); + file = new TFile(CardImageUtils.generateImagePath(url)); if (!file.exists()) { return true; } @@ -200,17 +198,12 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab return false; } - private static boolean usesVariousArt(CardInfo card) { - String className = card.getClassName(); - return Character.isDigit(className.charAt(className.length() - 1)); - } - private static String createDownloadName(CardInfo card) { String className = card.getClassName(); return className.substring(className.lastIndexOf('.') + 1); } - private static ArrayList getNeededCards(List allCards, String imagesPath) { + private static ArrayList getNeededCards(List allCards) { ArrayList cardsToDownload = new ArrayList(); @@ -227,7 +220,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (card.getCardNumber() > 0 && !card.getSetCode().isEmpty() && !ignoreUrls.contains(card.getSetCode())) { String cardName = card.getName(); - CardDownloadData url = new CardDownloadData(cardName, card.getSetCode(), card.getCardNumber(), usesVariousArt(card), 0, false, card.isDoubleFaced(), card.isNightCard()); + CardDownloadData url = new CardDownloadData(cardName, card.getSetCode(), card.getCardNumber(), card.usesVariousArt(), 0, false, card.isDoubleFaced(), card.isNightCard()); if (url.getUsesVariousArt()) { url.setDownloadName(createDownloadName(card)); } @@ -240,14 +233,14 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (card.getSecondSideName() == null || card.getSecondSideName().trim().isEmpty()) { throw new IllegalStateException("Second side card can't have empty name."); } - url = new CardDownloadData(card.getSecondSideName(), card.getSetCode(), card.getCardNumber(), usesVariousArt(card), 0, false, card.isDoubleFaced(), true); + url = new CardDownloadData(card.getSecondSideName(), card.getSetCode(), card.getCardNumber(), card.usesVariousArt(), 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 CardDownloadData(card.getFlipCardName(), card.getSetCode(), card.getCardNumber(), usesVariousArt(card), 0, false, card.isDoubleFaced(), card.isNightCard()); + url = new CardDownloadData(card.getFlipCardName(), card.getSetCode(), card.getCardNumber(), card.usesVariousArt(), 0, false, card.isDoubleFaced(), card.isNightCard()); url.setFlipCard(true); url.setFlippedSide(true); allCardsUrls.add(url); @@ -274,7 +267,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab * check to see which cards we already have */ for (CardDownloadData card : allCardsUrls) { - file = new TFile(CardImageUtils.getImagePath(card, imagesPath)); + file = new TFile(CardImageUtils.generateImagePath(card)); if (!file.exists()) { cardsToDownload.add(card); } @@ -363,7 +356,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab @Override public void run() { - File base = new File(this.imagesPath != null ? imagesPath : Constants.IO.imageBaseDir); + File base = new File(Constants.IO.imageBaseDir); if (!base.exists()) { base.mkdir(); } @@ -458,7 +451,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab filePath.append(Constants.IO.imageBaseDir).append(File.separator); filePath.append(card.hashCode()).append(".").append(card.getName().replace(":", "").replace("//", "-")).append(".jpg"); File temporaryFile = new File(filePath.toString()); - String imagePath = CardImageUtils.getImagePath(card, imagesPath); + String imagePath = CardImageUtils.generateImagePath(card); TFile outputFile = new TFile(imagePath); if (!outputFile.exists()) { outputFile.getParentFile().mkdirs(); @@ -562,7 +555,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab Iterator cardsIterator = DownloadPictures.this.cards.iterator(); while (cardsIterator.hasNext()) { CardDownloadData cardDownloadData = cardsIterator.next(); - TFile file = new TFile(CardImageUtils.getImagePath(cardDownloadData, imagesPath)); + TFile file = new TFile(CardImageUtils.generateImagePath(cardDownloadData)); if (file.exists()) { cardsIterator.remove(); } 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 cb6d9e0dbeb..3c3ece92f8c 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 @@ -73,14 +73,21 @@ public class ImageCache { CardDownloadData info = new CardDownloadData(name, set, collectorId, usesVariousArt, type); + String path; if (collectorId == 0) { info.setToken(true); + path = CardImageUtils.generateTokenImagePath(info); + } else { + path = CardImageUtils.generateImagePath(info); } - String path = CardImageUtils.getImagePath(info); + if (path == null) { return null; } TFile file = new TFile(path); + if (!file.exists()) { + return null; + } if (thumbnail && path.endsWith(".jpg")) { String thumbnailPath = buildThumbnailPath(path); 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 75172f7c9d0..f893c9cff9b 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 @@ -12,22 +12,16 @@ public class CardImageUtils { private static HashMap pathCache = new HashMap(); /** - * Get path to image for specific card. - * - * @param card - * card to get path for + * * @return String if image exists, else null */ - public static String getImagePath(CardDownloadData card) { - String filePath; - - TFile file; + public static String generateTokenImagePath(CardDownloadData card) { if (card.isToken()) { if (pathCache.containsKey(card)) { return pathCache.get(card); } - filePath = getTokenImagePath(card); - file = new TFile(filePath); + String filePath = getTokenImagePath(card); + TFile file = new TFile(filePath); if (!file.exists()) { filePath = searchForCardImage(card); @@ -36,36 +30,26 @@ public class CardImageUtils { if (file.exists()) { pathCache.put(card, filePath); + return filePath; } - } else { - 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); - filePath = getImagePath(card, path); - file = new TFile(filePath); } - if (file.exists()) { - return filePath; - } else { - return null; - } + return null; } 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); + String filename = generateImagePath(card); TFile file = new TFile(filename); if (!file.exists()) { CardDownloadData updated = new CardDownloadData(card); updated.setName(card.getName() + " 1"); - filename = getImagePath(updated, path); + filename = generateImagePath(updated); file = new TFile(filename); if (!file.exists()) { updated = new CardDownloadData(card); updated.setName(card.getName() + " 2"); - filename = getImagePath(updated, path); + filename = generateImagePath(updated); } } @@ -129,7 +113,10 @@ public class CardImageUtils { } } - public static String getImagePath(CardDownloadData card, String imagesPath) { + public static String generateImagePath(CardDownloadData card) { + String useDefault = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_USE_DEFAULT, "true"); + String imagesPath = useDefault.equals("true") ? null : PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_PATH, null); + String imageDir = getImageDir(card, imagesPath); String imageName;