From d91813b08ad30317dd28b3693c55caf865f25626 Mon Sep 17 00:00:00 2001 From: North Date: Sun, 16 Jun 2013 18:13:51 +0300 Subject: [PATCH] removed Card dependency for image downloading --- .../src/main/java/mage/client/MageFrame.java | 15 +----- .../plugins/card/images/DownloadPictures.java | 53 +++++++++++-------- Mage/src/mage/cards/repository/CardInfo.java | 52 +++++++++++++++++- .../mage/cards/repository/CardRepository.java | 2 +- 4 files changed, 84 insertions(+), 38 deletions(-) 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/images/DownloadPictures.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java index 36e73d4a36a..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; @@ -64,7 +64,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab startDownload(null, null, null); } - public static void startDownload(JFrame frame, List allCards, String imagesPath) { + public static void startDownload(JFrame frame, List allCards, String imagesPath) { ArrayList cards = getNeededCards(allCards, imagesPath); /* @@ -186,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()) { - CardDownloadData url = new CardDownloadData(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; @@ -200,7 +200,17 @@ 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)); + } + + 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(); @@ -213,34 +223,31 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab 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(); - CardDownloadData url = new CardDownloadData(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 CardDownloadData(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 CardDownloadData(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); @@ -249,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); } 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;