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:
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;
}