From 84fe04b92d91e842c09d36bb1b433c634c3c2eff Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 1 Sep 2017 20:05:26 +0200 Subject: [PATCH] Replaced exception handling of invalid deck submitting by a user message. --- .../main/java/mage/remote/SessionImpl.java | 8 --- .../java/mage/server/TableController.java | 13 +++- .../cards/decks/InvalidDeckException.java | 61 ------------------- 3 files changed, 11 insertions(+), 71 deletions(-) delete mode 100644 Mage/src/main/java/mage/cards/decks/InvalidDeckException.java diff --git a/Mage.Common/src/main/java/mage/remote/SessionImpl.java b/Mage.Common/src/main/java/mage/remote/SessionImpl.java index 86e598c04b..187b8179c1 100644 --- a/Mage.Common/src/main/java/mage/remote/SessionImpl.java +++ b/Mage.Common/src/main/java/mage/remote/SessionImpl.java @@ -35,7 +35,6 @@ import java.util.concurrent.TimeUnit; import javax.swing.*; import mage.MageException; import mage.cards.decks.DeckCardLists; -import mage.cards.decks.InvalidDeckException; import mage.cards.repository.CardInfo; import mage.cards.repository.CardRepository; import mage.cards.repository.ExpansionInfo; @@ -691,8 +690,6 @@ public class SessionImpl implements Session { } return server.joinTable(sessionId, roomId, tableId, playerName, playerType, skill, deckList, password); } - } catch (InvalidDeckException iex) { - handleInvalidDeckException(iex); } catch (GameException ex) { handleGameException(ex); } catch (MageException ex) { @@ -1547,11 +1544,6 @@ public class SessionImpl implements Session { client.showError(ex.getMessage()); } - private void handleInvalidDeckException(InvalidDeckException iex) { - logger.warn(iex.getMessage() + '\n' + iex.getInvalid()); - client.showError(iex.getMessage() + '\n' + iex.getInvalid()); - } - private void handleGameException(GameException ex) { logger.warn(ex.getMessage()); client.showError(ex.getMessage()); diff --git a/Mage.Server/src/main/java/mage/server/TableController.java b/Mage.Server/src/main/java/mage/server/TableController.java index 000c51126c..b22b2f49c1 100644 --- a/Mage.Server/src/main/java/mage/server/TableController.java +++ b/Mage.Server/src/main/java/mage/server/TableController.java @@ -38,7 +38,6 @@ import java.util.concurrent.TimeUnit; import mage.MageException; import mage.cards.decks.Deck; import mage.cards.decks.DeckCardLists; -import mage.cards.decks.InvalidDeckException; import mage.constants.RangeOfInfluence; import mage.constants.TableState; import mage.game.*; @@ -414,7 +413,17 @@ public class TableController { } } if (!Main.isTestMode() && !table.getValidator().validate(deck)) { - throw new InvalidDeckException("Invalid deck for this format", table.getValidator().getInvalid()); + Optional _user = UserManager.instance.getUser(userId); + if (!_user.isPresent()) { + return false; + } + StringBuilder sb = new StringBuilder("Invalid deck for the selected ").append(table.getValidator().getName()).append(" format. \n\n"); + for (Map.Entry entry : table.getValidator().getInvalid().entrySet()) { + sb.append(entry.getKey()).append(": ").append(entry.getValue()).append('\n'); + } + sb.append("\n\nAdd enough cards and try again!"); + _user.get().showUserMessage("Submit deck", sb.toString()); + return false; } submitDeck(userId, playerId, deck); return true; diff --git a/Mage/src/main/java/mage/cards/decks/InvalidDeckException.java b/Mage/src/main/java/mage/cards/decks/InvalidDeckException.java deleted file mode 100644 index c4e70bcb68..0000000000 --- a/Mage/src/main/java/mage/cards/decks/InvalidDeckException.java +++ /dev/null @@ -1,61 +0,0 @@ -/* -* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved. -* -* Redistribution and use in source and binary forms, with or without modification, are -* permitted provided that the following conditions are met: -* -* 1. Redistributions of source code must retain the above copyright notice, this list of -* conditions and the following disclaimer. -* -* 2. Redistributions in binary form must reproduce the above copyright notice, this list -* of conditions and the following disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED -* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -* The views and conclusions contained in the software and documentation are those of the -* authors and should not be interpreted as representing official policies, either expressed -* or implied, of BetaSteward_at_googlemail.com. -*/ - -package mage.cards.decks; - -import java.util.Map; -import java.util.Map.Entry; -import mage.game.GameException; - -/** - * - * @author BetaSteward_at_googlemail.com - */ -public class InvalidDeckException extends GameException { - - Map invalid; - - public InvalidDeckException (String message, Map invalid) { - super(message); - this.invalid = invalid; - } - - public Map getInvalid() { - return invalid; - } - - @Override - public String getMessage() { - StringBuilder sb = new StringBuilder(); - sb.append(super.getMessage()).append('\n'); - for (Entry entry: invalid.entrySet()) { - sb.append(entry.getKey()).append(' ').append(entry.getValue()).append('\n'); - } - return sb.toString(); - } -}