mtg-decks-downloader

Tool to download Magic: The Gathering decklists from the Internet
git clone https://kevincorvisier.fr/git/mtg-decks-downloader.git
Log | Files | Refs | README

commit bcb57bfbaf1e434f6fda05b91198c1db0b1904d0
parent 2c54fa0ec80428c1af8bac0e04bfefd9d96e4f19
Author: Kevin Corvisier <git@kevincorvisier.fr>
Date:   Sat, 14 Jun 2025 19:00:12 +0900

Include sideboard section in deck validation
Diffstat:
Msrc/main/java/fr/kevincorvisier/mtg/dd/validation/DeckValidator.java | 29++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/src/main/java/fr/kevincorvisier/mtg/dd/validation/DeckValidator.java b/src/main/java/fr/kevincorvisier/mtg/dd/validation/DeckValidator.java @@ -5,7 +5,8 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.Collection; import java.util.HashSet; -import java.util.Map.Entry; +import java.util.Optional; +import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -41,24 +42,26 @@ public class DeckValidator public boolean validate(final Deck deck) { - int cardCount = 0; + final Collection<MagicOnlineDeckCard> cards = new HashSet<>(); + cards.addAll(deck.getContent().getMain().keySet()); + cards.addAll(deck.getContent().getSideboard().keySet()); - for (final Entry<MagicOnlineDeckCard, Integer> card : deck.getContent().getMain().entrySet()) + final Optional<MagicOnlineDeckCard> invalidCard = cards.stream().filter(c -> !validateCard(c.getName())).findAny(); + if (invalidCard.isPresent()) { - final String cardName = card.getKey().getName(); - - if (!validateCard(cardName)) - { - log.debug("validate: {} is not valid: {}", cardName, deck); - return false; - } + log.debug("validate: {} is not valid: {}", invalidCard.get().getName(), deck); + return false; + } - cardCount += card.getValue(); + if (deck.getContent().getMain().values().stream().collect(Collectors.summingInt(i -> i)) < 60) + { + log.debug("validate: invalid deck: less than 60 cards in main: {}", deck); + return false; } - if (cardCount < 60) + if (deck.getContent().getSideboard().values().stream().collect(Collectors.summingInt(i -> i)) > 15) { - log.debug("validate: invalid deck: less than 60 cards: {}", deck); + log.debug("validate: invalid deck: more than 15 cards in sideboard: {}", deck); return false; }