From 848b6b82eb318abcf4eeb2054bcb79bb2dd51bab Mon Sep 17 00:00:00 2001 From: Eduardo Pedroni Date: Sun, 15 Nov 2015 14:36:19 +0100 Subject: Passing all tests, but it is nasty, need to refactor now --- src/eu/equalparts/cardbase/Cardbase.java | 28 +++++++++------- src/eu/equalparts/cardbase/cli/CardbaseCLI.java | 44 +++++++++++++++---------- 2 files changed, 43 insertions(+), 29 deletions(-) (limited to 'src/eu') diff --git a/src/eu/equalparts/cardbase/Cardbase.java b/src/eu/equalparts/cardbase/Cardbase.java index bdbdeb8..15e4860 100644 --- a/src/eu/equalparts/cardbase/Cardbase.java +++ b/src/eu/equalparts/cardbase/Cardbase.java @@ -85,12 +85,15 @@ public class Cardbase { * @param cardToAdd the card to be added. The count value * of this object is added to the existing count if the card * already exists. + *TODO fix comment */ - public void addCard(Card cardToAdd) { + public void addCard(Card cardToAdd, int count) { Card card = getCardByHash(cardToAdd.hashCode()); if (card != null) { - card.count += cardToAdd.count; + card.count += count; } else { + // TODO disgusting, refactor + cardToAdd.count = count; cards.put(cardToAdd.hashCode(), cardToAdd); } } @@ -110,9 +113,12 @@ public class Cardbase { * @param cardToRemove the card to be removed. * @param count the amount of the card to be removed. * @return the number of cards actually removed. + *TODO comment */ - public Integer removeCard(Card cardToRemove) { + public Integer removeCard(Card cardToRemove, int count) { Card card = getCardByHash(cardToRemove.hashCode()); + // TODO disgusting, refactor + cardToRemove.count = count; Integer removed = 0; if (card != null) { if (card.count <= cardToRemove.count) { @@ -126,14 +132,14 @@ public class Cardbase { return removed; } -// /** -// * Returns a card from the cardbase by set code and number. -// * If no such card is in the cardbase, returns null. -// * -// * @param setCode the set to which the requested card belongs. -// * @param number the requested card's set number. -// * @return the requested {@code Card} or null if no card is found. -// */ + /** + * Returns a card from the cardbase by set code and number. + * If no such card is in the cardbase, returns null. + * + * @param setCode the set to which the requested card belongs. + * @param number the requested card's set number. + * @return the requested {@code Card} or null if no card is found. + */ public Card getCard(String setCode, String number) { return cards.get(Card.makeHash(setCode, number)); } diff --git a/src/eu/equalparts/cardbase/cli/CardbaseCLI.java b/src/eu/equalparts/cardbase/cli/CardbaseCLI.java index b55b73d..d526e78 100644 --- a/src/eu/equalparts/cardbase/cli/CardbaseCLI.java +++ b/src/eu/equalparts/cardbase/cli/CardbaseCLI.java @@ -33,6 +33,7 @@ public final class CardbaseCLI { private enum Action { ADD, REMOVE; public Card card; + public int count; } /** @@ -385,8 +386,7 @@ public final class CardbaseCLI { if (count.matches("[-]?[0-9]+")) { Integer intCount = Integer.valueOf(count); if (intCount > 0) { - cardToRemove.count = intCount; - removeCard(cardToRemove); + removeCard(cardToRemove, intCount); } else { System.out.println("Cannot remove " + count + " cards."); } @@ -415,23 +415,27 @@ public final class CardbaseCLI { // a blank line after adding a card repeats the addition unlimitedly if (number.isEmpty()) { if (lastAction == Action.ADD) { - addCard(lastAction.card); + addCard(lastAction.card, lastAction.count); } else { System.out.println("Please enter a card number."); } } else { Card cardToAdd = selectedSet.getCardByNumber(number); if (cardToAdd != null) { - Integer count = 1; - if (args != null && args.length > 0 && args[0].matches("[0-9]+")) { - count = Integer.valueOf(args[0]); - if (count <= 0) { - System.out.println("Cannot add " + count + " cards."); - return; + String count = args != null && args.length > 0 ? args[0] : "1"; + + if (count.matches("[-]?[0-9]+")) { + + Integer intCount = Integer.valueOf(count); + + if (intCount > 0) { + addCard(cardToAdd, intCount); + } else { + System.out.println("Cannot add " + intCount + " cards."); } + } else { + System.out.println(count + " is not a valid number of cards."); } - cardToAdd.count = count; - addCard(cardToAdd); } else { System.out.println(number + " does not correspond to a card in " + selectedSet.name + "."); } @@ -447,9 +451,9 @@ public final class CardbaseCLI { private void undo() { if (lastAction != null) { if (lastAction == Action.ADD) { - removeCard(lastAction.card); + removeCard(lastAction.card, lastAction.count); } else if (lastAction == Action.REMOVE) { - addCard(lastAction.card); + addCard(lastAction.card, lastAction.count); } // can only undo once lastAction = null; @@ -464,13 +468,15 @@ public final class CardbaseCLI { * * @param card the card to add, set this object's * count field to determine the count to add. + * TODO comment */ - private void addCard(Card card) { - System.out.println("Added " + card.count + "x " + card.name + "."); - cardbase.addCard(card); + private void addCard(Card card, int count) { + System.out.println("Added " + count + "x " + card.name + "."); + cardbase.addCard(card, count); savePrompt = true; lastAction = Action.ADD; lastAction.card = card; + lastAction.count = count; } /** @@ -479,14 +485,16 @@ public final class CardbaseCLI { * * @param card the card to remove, set this object's count field * to determine how many of the card to remove. + * TODO comment */ - private void removeCard(Card card) { - Integer removed = cardbase.removeCard(card); + private void removeCard(Card card, int count) { + Integer removed = cardbase.removeCard(card, count); if (removed > 0) { System.out.println("Removed " + removed + "x " + card.name + "."); savePrompt = true; lastAction = Action.REMOVE; lastAction.card = card; + lastAction.count = removed; } else { System.out.println(card.name + " is not in the cardbase."); } -- cgit v1.2.3