Skip to content

Commit

Permalink
Error Handling for [buy] command
Browse files Browse the repository at this point in the history
  • Loading branch information
weishuangtan committed Oct 17, 2020
1 parent 4a85501 commit a604d83
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 32 deletions.
13 changes: 7 additions & 6 deletions src/main/java/seedu/trippie/Expense.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

public class Expense {
private final String expenseName;
private final String expenseCost;
private final String expenseDayBought;
private final Float expenseCost;
private final int expenseDayBought;

public Expense(String expenseName, String expenseCost, String expenseDayBought) {
public Expense(String expenseName, Float expenseCost, int expenseDayBought) {
this.expenseName = expenseName;
this.expenseCost = expenseCost;
this.expenseDayBought = expenseDayBought;
Expand All @@ -15,15 +15,16 @@ public String getExpenseName() {
return expenseName;
}

public String getExpenseCost() {
public Float getExpenseCost() {
return expenseCost;
}

public String getExpenseDayBought() {
public int getExpenseDayBought() {
return expenseDayBought;
}

public String getExpense() {
return "Day " + getExpenseDayBought() + ": " + getExpenseName() + " - $" + getExpenseCost();
return "Day " + getExpenseDayBought() + ": " + getExpenseName() + " - $"
+ String.format("%.2f",getExpenseCost());
}
}
2 changes: 1 addition & 1 deletion src/main/java/seedu/trippie/Parser.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public static Command parse(String userInput) {
try {
if (userInput.equals("exit")) {
return new ExitCommand();
} else if (userInput.startsWith("buy ")) {
} else if (userInput.startsWith("buy")) {
return new AddExpenseCommand(userInput);
} else if (userInput.startsWith("delete /e ")) {
return new DeleteExpenditureCommand(userInput);
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/seedu/trippie/Storage.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ private void saveExpenseList(ExpenseList expenseList, FileWriter fileWriter, Lis
fileWriter.write("Day | Item | Cost" + System.lineSeparator());
for (Expense expense : expenses) {
fileWriter.write(expense.getExpenseDayBought() + " | " + expense.getExpenseName()
+ " | $" + expense.getExpenseCost() + System.lineSeparator());
+ " | $" + String.format("%.2f", expense.getExpenseCost()) + System.lineSeparator());
}
}

Expand Down Expand Up @@ -111,8 +111,8 @@ public static void loadList(Scanner readFile, PlaceList placeList, ExpenseList e
input = readFile.nextLine();
do {
String[] expenseParameters = input.split(" \\| ");
expenses.add(new Expense(expenseParameters[1], expenseParameters[2].substring(1),
expenseParameters[0]));
expenses.add(new Expense(expenseParameters[1], Float.parseFloat(expenseParameters[2].substring(1)) ,
Integer.parseInt(expenseParameters[0])));
input = readFile.nextLine();
} while (!input.equals(""));
} else if (line.contains("Total budget: $")) {
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/seedu/trippie/TrippieException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package seedu.trippie;

public class TrippieException extends Exception{
}
43 changes: 21 additions & 22 deletions src/main/java/seedu/trippie/command/AddExpenseCommand.java
Original file line number Diff line number Diff line change
@@ -1,42 +1,36 @@
package seedu.trippie.command;

import seedu.trippie.Expense;
import seedu.trippie.ExpenseList;
import seedu.trippie.PlaceList;
import seedu.trippie.Ui;
import seedu.trippie.*;

import java.util.List;


public class AddExpenseCommand extends Command {

private final String expenseName;
private final String expenseCost;
private final String expenseDayBought;
private final String userInput;

public AddExpenseCommand(String userInput) {
this.expenseName = extractExpenseName(userInput);
this.expenseCost = extractExpenseCost(userInput);
this.expenseDayBought = extractDayBought(userInput);
this.userInput = userInput;
}

public String extractExpenseName(String userInput) {
String withoutCost = userInput.split(" /c ")[0];
return withoutCost.split(" /i ")[1];
}

public String extractExpenseCost(String userInput) {
public Float extractExpenseCost(String userInput) {
String withoutDay = userInput.split(" /d ")[0];
String expenseCost = withoutDay.split(" /c ")[1];
if (expenseCost.contains("$")) {
expenseCost = expenseCost.replace("$", "");
}
return expenseCost;
return Float.parseFloat(expenseCost);

}

public String extractDayBought(String userInput) {
public int extractDayBought(String userInput) {
String onlyDay = userInput.split(" /d ")[1];
return onlyDay.replaceAll("[^0-9]","").trim();
return Integer.parseInt(onlyDay);
}

@Override
Expand All @@ -46,13 +40,18 @@ public boolean isExit() {

@Override
public void execute(Ui ui, PlaceList place, ExpenseList expenseList) {
List<Expense> expenses = expenseList.getExpenseList();
ui.printLine();
Expense expenseEntry = new Expense(expenseName, expenseCost, expenseDayBought);
expenses.add(expenseEntry);
System.out.println("Got it! I've added the following item: " + expenseEntry.getExpense());
System.out.println("There are " + expenses.size() + " items in the list.");
ui.printLine();
expenseList.setExpenseList(expenses);
try {
List<Expense> expenses = expenseList.getExpenseList();
Expense expenseEntry = new Expense(extractExpenseName(userInput), extractExpenseCost(userInput),
extractDayBought(userInput));
expenses.add(expenseEntry);
System.out.println("Got it! I've added the following item: " + expenseEntry.getExpense());
System.out.println("There are " + expenses.size() + " items in the list.");
expenseList.setExpenseList(expenses);
} catch (IndexOutOfBoundsException | NumberFormatException e) {
System.out.println("Incorrect format for [buy] command! Please try the following: ");
System.out.println("Format: buy /i ITEM_NAME /c FINAL_COST /d DAY_NUMBER");
System.out.println("Example: buy /i R&B Brown Sugar /c 3.00 /d 2");
}
}
}

0 comments on commit a604d83

Please sign in to comment.