diff --git a/Mage.Verify/src/main/java/mage/verify/mtgjson/MtgJsonSet.java b/Mage.Verify/src/main/java/mage/verify/mtgjson/MtgJsonSet.java index 4f287f9266..f302ec8e02 100644 --- a/Mage.Verify/src/main/java/mage/verify/mtgjson/MtgJsonSet.java +++ b/Mage.Verify/src/main/java/mage/verify/mtgjson/MtgJsonSet.java @@ -13,6 +13,10 @@ public final class MtgJsonSet { public String releaseDate; public int totalSetSize; + public String block; + + public String parentCode; + @Override public String toString() { return code + " - " + name; diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 8c2103193c..a0023ca8f4 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -942,6 +942,50 @@ public class VerifyCardDataTest { } } + // CHECK: parent and block info + for (ExpansionSet set : sets) { + if (true) continue; // TODO: comments it and run to find a problems + MtgJsonSet jsonSet = MtgJsonService.sets().getOrDefault(set.getCode().toUpperCase(Locale.ENGLISH), null); + if (jsonSet == null) { + continue; + } + + // parent set + MtgJsonSet jsonParentSet = jsonSet.parentCode == null ? null : MtgJsonService.sets().getOrDefault(jsonSet.parentCode, null); + ExpansionSet mageParentSet = set.getParentSet(); + String jsonParentCode = jsonParentSet == null ? "null" : jsonParentSet.code; + String mageParentCode = mageParentSet == null ? "null" : mageParentSet.getCode(); + + String needMageClass = ""; + if (!jsonParentCode.equals("null")) { + needMageClass = sets + .stream() + .filter(exp -> exp.getCode().equals(jsonParentCode)) + .map(exp -> " - " + exp.getClass().getSimpleName() + ".getInstance()") + .findFirst() + .orElse("- error, can't find class"); + } + + if (!Objects.equals(jsonParentCode, mageParentCode)) { + errorsList.add(String.format("Error: set with wrong parentSet settings: %s (parentSet = %s, but must be %s%s)", + set.getCode() + " - " + set.getName(), + mageParentCode, + jsonParentCode, + needMageClass + )); + } + + // block info + if (!Objects.equals(set.getBlockName(), jsonSet.block)) { + if (true) continue; // TODO: comments it and run to find a problems + errorsList.add(String.format("Error: set with wrong blockName settings: %s (blockName = %s, but must be %s)", + set.getCode() + " - " + set.getName(), + set.getBlockName(), + jsonSet.block + )); + } + } + // TODO: add test to check num cards for rarity (rarityStats > 0 and numRarity > 0) printMessages(warningsList); printMessages(errorsList); diff --git a/Mage/src/main/java/mage/cards/ExpansionSet.java b/Mage/src/main/java/mage/cards/ExpansionSet.java index 9de582dd2f..58091373de 100644 --- a/Mage/src/main/java/mage/cards/ExpansionSet.java +++ b/Mage/src/main/java/mage/cards/ExpansionSet.java @@ -104,13 +104,13 @@ public abstract class ExpansionSet implements Serializable { protected String name; protected String code; protected Date releaseDate; - protected ExpansionSet parentSet; + protected ExpansionSet parentSet; // used to search additional lands and reprints for booster protected SetType setType; // TODO: 03.10.2018, hasBasicLands can be removed someday -- it's uses to optimize lands search in deck generation and lands adding (search all available lands from sets) protected boolean hasBasicLands = true; - protected String blockName; + protected String blockName; // used to group sets in some GUI dialogs like choose set dialog protected boolean hasBoosters = false; protected int numBoosterSpecial; @@ -539,6 +539,7 @@ public abstract class ExpansionSet implements Serializable { List<String> needSets = new ArrayList<>(); needSets.add(this.code); if (this.parentSet != null) { + // TODO: is it ok to put all parent's cards to booster instead lands only? needSets.add(this.parentSet.code); } List<CardInfo> cardInfos = CardRepository.instance.findCards(new CardCriteria() diff --git a/Mage/src/main/java/mage/cards/repository/CardScanner.java b/Mage/src/main/java/mage/cards/repository/CardScanner.java index b9e3b62118..40ec2ab472 100644 --- a/Mage/src/main/java/mage/cards/repository/CardScanner.java +++ b/Mage/src/main/java/mage/cards/repository/CardScanner.java @@ -6,6 +6,7 @@ import org.apache.log4j.Logger; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Objects; /** * @author North @@ -38,7 +39,7 @@ public final class CardScanner { setsToAdd.add(new ExpansionInfo(set)); } else if (!expansionInfo.name.equals(set.getName()) || !expansionInfo.code.equals(set.getCode()) - || (expansionInfo.blockName == null ? set.getBlockName() != null : !expansionInfo.blockName.equals(set.getBlockName())) + || !(Objects.equals(expansionInfo.blockName, set.getBlockName())) || !expansionInfo.releaseDate.equals(set.getReleaseDate()) || expansionInfo.type != set.getSetType() || expansionInfo.boosters != set.hasBoosters()