aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/equalparts/cardbase
diff options
context:
space:
mode:
Diffstat (limited to 'src/eu/equalparts/cardbase')
-rw-r--r--src/eu/equalparts/cardbase/Cardbase.java28
-rw-r--r--src/eu/equalparts/cardbase/cli/CardbaseCLI.java44
2 files changed, 43 insertions, 29 deletions
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.");
}