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 77f3ebc9fdd..41702396069 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 @@ -6,7 +6,7 @@ package org.mage.plugins.card.dl.sources; */ public interface CardImageSource { - String generateURL(Integer collectorId, String cardName, String cardSet) throws Exception; + String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondFace) throws Exception; String generateTokenUrl(String name, String set); 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 4c33ee9bd75..25b6fcf9295 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 @@ -50,15 +50,20 @@ public class MagicCardsImageSource implements CardImageSource { } @Override - public String generateURL(Integer collectorId, String cardName, String cardSet) throws Exception { + public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide) throws Exception { if (collectorId == null || cardSet == null) { throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet); } String set = CardImageUtils.updateSet(cardSet, true); - String url = "http://magiccards.info/scans/en/"; - url += set.toLowerCase() + "/" + collectorId + ".jpg"; + StringBuilder url = new StringBuilder("http://magiccards.info/scans/en/"); + url.append(set.toLowerCase()).append("/").append(collectorId); - return url; + if (twoFacedCard) { + url.append(secondSide ? "b" : "a"); + } + url.append(".jpg"); + + return url.toString(); } @Override diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MtgatheringRuImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MtgatheringRuImageSource.java index b1ebf06df01..e9214c9ed5b 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MtgatheringRuImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MtgatheringRuImageSource.java @@ -51,7 +51,7 @@ public class MtgatheringRuImageSource implements CardImageSource { } @Override - public String generateURL(Integer collectorId, String cardName, String cardSet) throws Exception { + public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide) throws Exception { if (collectorId == null || cardSet == null) { throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet); } 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 1e1483b0205..d60042500b7 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 @@ -70,7 +70,7 @@ public class WizardCardsImageSource implements CardImageSource { } @Override - public String generateURL(Integer collectorId, String cardName, String cardSet) throws Exception { + public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide) throws Exception { if (collectorId == null || cardSet == null) { throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet); } 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/CardInfo.java index 8f527850f60..254755c5317 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/CardInfo.java @@ -10,6 +10,8 @@ public class CardInfo { private String set; private Integer collectorId; private boolean token; + private boolean twoFacedCard; + private boolean secondSide; public CardInfo(String name, String set, Integer collectorId) { this.name = name; @@ -25,11 +27,22 @@ public class CardInfo { this.token = token; } + public CardInfo(String name, String set, Integer collectorId, boolean token, boolean twoFacedCard, boolean secondSide) { + this.name = name; + this.set = set; + this.collectorId = collectorId; + this.token = token; + this.twoFacedCard = twoFacedCard; + this.secondSide = secondSide; + } + public CardInfo(final CardInfo card) { this.name = card.name; this.set = card.set; this.collectorId = card.collectorId; this.token = card.token; + this.twoFacedCard = card.twoFacedCard; + this.secondSide = card.secondSide; } @Override @@ -53,6 +66,12 @@ public class CardInfo { if (this.token != other.token) { return false; } + if (this.twoFacedCard != other.twoFacedCard) { + return false; + } + if (this.secondSide != other.secondSide) { + return false; + } return true; } @@ -63,6 +82,8 @@ public class CardInfo { hash = 47 * hash + (this.set != null ? this.set.hashCode() : 0); hash = 47 * hash + (this.collectorId != null ? this.collectorId.hashCode() : 0); hash = 47 * hash + (this.token ? 1 : 0); + hash = 47 * hash + (this.twoFacedCard ? 1 : 0); + hash = 47 * hash + (this.secondSide ? 1 : 0); return hash; } @@ -97,4 +118,12 @@ public class CardInfo { public void setToken(boolean token) { this.token = token; } + + public boolean isTwoFacedCard() { + return twoFacedCard; + } + + public boolean isSecondSide() { + return secondSide; + } } 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 bf6ffcceb18..81fd1e29d69 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 @@ -71,7 +71,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab private static CardImageSource cardImageSource; - private Proxy p; + private Proxy p = Proxy.NO_PROXY;; private ExecutorService executor = Executors.newFixedThreadPool(10); @@ -234,7 +234,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab File file; for (Card card : allCards) { if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty()) { - CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(), false); + CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(), false, card.canTransform(), card.isNightCard()); boolean withCollectorId = false; if (card.getName().equals("Forest") || card.getName().equals("Mountain") || card.getName().equals("Swamp") || card.getName().equals("Island") || card.getName().equals("Plains")) { withCollectorId = true; @@ -265,8 +265,16 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (cardName.equals("Forest") || cardName.equals("Swamp") || cardName.equals("Mountain") || cardName.equals("Island") || cardName.equals("Plains")) { cardName = card.getClass().getName().replace(card.getClass().getPackage().getName() + ".", ""); } - CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(), card.getCardNumber(), false); + CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(), card.getCardNumber(), false, card.canTransform(), card.isNightCard()); allCardsUrls.add(url); + if (card.canTransform()) { + // 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(), false, card.canTransform(), true); + allCardsUrls.add(url); + } } else { if (card.getCardNumber() < 1) { System.err.println("There was a critical error!"); @@ -439,7 +447,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab } url = cardImageSource.generateTokenUrl(card.getName(), card.getSet()); } else { - url = cardImageSource.generateURL(card.getCollectorId(), card.getName(), card.getSet()); + url = cardImageSource.generateURL(card.getCollectorId(), card.getName(), card.getSet(), card.isTwoFacedCard(), card.isSecondSide()); } if (url != null) {