diff --git a/src/main/java/command/AddInflowCommand.java b/src/main/java/command/AddInflowCommand.java index 8492a39aa0..6177cd8c98 100644 --- a/src/main/java/command/AddInflowCommand.java +++ b/src/main/java/command/AddInflowCommand.java @@ -1,6 +1,7 @@ package command; import customexceptions.CategoryNotFoundException; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.Inflow; import financialtransactions.TransactionManager; @@ -10,12 +11,12 @@ public AddInflowCommand(String[] commandParts) { super(false, commandParts); try { createInflow(); - } catch (CategoryNotFoundException e) { + } catch (CategoryNotFoundException | IncorrectCommandSyntaxException e) { System.out.println(e.getMessage()); } } - private void createInflow() throws CategoryNotFoundException { + private void createInflow() throws CategoryNotFoundException, IncorrectCommandSyntaxException { //@@author Kishen271828 String inflowName = null; double inflowAmount = 0; @@ -23,7 +24,10 @@ private void createInflow() throws CategoryNotFoundException { String inflowTime = null; String inflowCategory = null; - for (String part : commandParts) { + /* Iterates through the parts of the original command string that checks and updates + relevant inflow information. */ + for (int i = 1; i < commandParts.length; i++) { + String part = commandParts[i]; if (part.startsWith("n/")) { inflowName = part.substring(2); } else if (part.startsWith("a/")) { @@ -34,6 +38,8 @@ private void createInflow() throws CategoryNotFoundException { inflowTime = part.substring(2); } else if (part.startsWith("c/")) { inflowCategory = part.substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } } String inflowDateTime = inflowDate + " " + inflowTime; diff --git a/src/main/java/command/AddOutflowCommand.java b/src/main/java/command/AddOutflowCommand.java index f91085f577..9cac783cec 100644 --- a/src/main/java/command/AddOutflowCommand.java +++ b/src/main/java/command/AddOutflowCommand.java @@ -1,6 +1,7 @@ package command; import customexceptions.CategoryNotFoundException; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.Outflow; import financialtransactions.TransactionManager; @@ -10,12 +11,12 @@ public AddOutflowCommand(String[] commandParts) { super(false, commandParts); try { createOutflow(); - } catch (CategoryNotFoundException e) { + } catch (CategoryNotFoundException | IncorrectCommandSyntaxException e) { System.out.println(e.getMessage()); } } - private void createOutflow() throws CategoryNotFoundException { + private void createOutflow() throws CategoryNotFoundException, IncorrectCommandSyntaxException { //@@author Kishen271828 String outflowName = null; double outflowAmount = 0.0; @@ -23,7 +24,10 @@ private void createOutflow() throws CategoryNotFoundException { String outflowTime = null; String outflowCategory = null; - for (String part : commandParts) { + /* Iterates through the parts of the original command string that checks and updates + relevant outflow information. */ + for (int i = 1 ; i < commandParts.length; i++) { + String part = commandParts[i]; if (part.startsWith("n/")) { outflowName = part.substring(2); } else if (part.startsWith("a/")) { @@ -34,6 +38,8 @@ private void createOutflow() throws CategoryNotFoundException { outflowTime = part.substring(2); } else if (part.startsWith("c/")) { outflowCategory = part.substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } } String outflowDateTime = outflowDate + " " + outflowTime; diff --git a/src/main/java/command/AddReminderCommand.java b/src/main/java/command/AddReminderCommand.java index 7daa2d596b..a411def310 100644 --- a/src/main/java/command/AddReminderCommand.java +++ b/src/main/java/command/AddReminderCommand.java @@ -1,6 +1,7 @@ package command; import customexceptions.CategoryNotFoundException; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.Reminder; import financialtransactions.TransactionManager; @@ -9,19 +10,22 @@ public AddReminderCommand(String[] commandParts) { super(false, commandParts); try { createReminder(); - } catch (CategoryNotFoundException e) { + } catch (CategoryNotFoundException | IncorrectCommandSyntaxException e) { System.out.println(e.getMessage()); } } - - private void createReminder() throws CategoryNotFoundException { + + private void createReminder() throws CategoryNotFoundException, IncorrectCommandSyntaxException { String reminderName = null; double reminderAmount = 0.0; String reminderDate = null; String reminderTime = null; String reminderCategory = null; - for (String part : commandParts) { + /* Iterates through the parts of the original command string that checks and updates + relevant reminder information. */ + for (int i = 1; i < commandParts.length; i++) { + String part = commandParts[i]; if (part.startsWith("n/")) { reminderName = part.substring(2); } else if (part.startsWith("a/")) { @@ -32,6 +36,8 @@ private void createReminder() throws CategoryNotFoundException { reminderTime = part.substring(2); } else if (part.startsWith("c/")) { reminderCategory = part.substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } } String reminderDateTime = reminderDate + " " + reminderTime; diff --git a/src/main/java/command/DeleteInflowCommand.java b/src/main/java/command/DeleteInflowCommand.java index 4215528cfc..acfbb25328 100644 --- a/src/main/java/command/DeleteInflowCommand.java +++ b/src/main/java/command/DeleteInflowCommand.java @@ -1,16 +1,19 @@ package command; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.TransactionManager; public class DeleteInflowCommand extends BaseCommand { - private String inflowIndex = null; public DeleteInflowCommand(String[] commandParts) { super(false, commandParts); } public String execute(TransactionManager manager) throws Exception { + String inflowIndex = null; if (commandParts[1].startsWith("i/")) { inflowIndex = commandParts[1].substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } assert inflowIndex != null : "inflowIndex should not be null"; int inflowIndexParsed = Integer.parseInt(inflowIndex); diff --git a/src/main/java/command/DeleteOutflowCommand.java b/src/main/java/command/DeleteOutflowCommand.java index cc79f7eaf6..7b841ed98e 100644 --- a/src/main/java/command/DeleteOutflowCommand.java +++ b/src/main/java/command/DeleteOutflowCommand.java @@ -1,5 +1,6 @@ package command; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.TransactionManager; public class DeleteOutflowCommand extends BaseCommand { @@ -11,6 +12,8 @@ public String execute(TransactionManager manager) throws Exception { String outflowIndex = null; if (commandParts[1].startsWith("i/")) { outflowIndex = commandParts[1].substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } assert outflowIndex != null : "outflowIndex should not be null"; int outflowIndexParsed = Integer.parseInt(outflowIndex); diff --git a/src/main/java/command/DeleteReminderCommand.java b/src/main/java/command/DeleteReminderCommand.java index 085ba2413f..73acb5bd10 100644 --- a/src/main/java/command/DeleteReminderCommand.java +++ b/src/main/java/command/DeleteReminderCommand.java @@ -1,5 +1,6 @@ package command; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.TransactionManager; public class DeleteReminderCommand extends BaseCommand { @@ -9,10 +10,10 @@ public DeleteReminderCommand(String[] commandParts) { public String execute(TransactionManager manager) throws Exception { String reminderIndex = null; - for (String part : commandParts) { - if (part.startsWith("i/")) { - reminderIndex = part.substring(2); - } + if (commandParts[1].startsWith("i/")) { + reminderIndex = commandParts[1].substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } assert reminderIndex != null : "reminderIndex should not be null"; reminder = manager.removeReminder(Integer.parseInt(reminderIndex)); diff --git a/src/main/java/command/EditInflowCommand.java b/src/main/java/command/EditInflowCommand.java index 860c4a4f59..845c072b42 100644 --- a/src/main/java/command/EditInflowCommand.java +++ b/src/main/java/command/EditInflowCommand.java @@ -1,5 +1,6 @@ package command; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.Inflow; import financialtransactions.TransactionManager; @@ -16,7 +17,10 @@ public String execute(TransactionManager manager) throws Exception { String inflowTime = null; String inflowCategory = null; - for (String part : commandParts) { + /* Iterates through the parts of the original command string that checks and updates + relevant inflow information. */ + for (int i = 1; i < commandParts.length; i++) { + String part = commandParts[i]; if (part.startsWith("i/")) { inflowIndex = Integer.parseInt(part.substring(2)); } else if (part.startsWith("n/")) { @@ -29,6 +33,8 @@ public String execute(TransactionManager manager) throws Exception { inflowTime = part.substring(2); } else if (part.startsWith("c/")) { inflowCategory = part.substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } } diff --git a/src/main/java/command/EditOutflowCommand.java b/src/main/java/command/EditOutflowCommand.java index 542f45d076..2e39f9447b 100644 --- a/src/main/java/command/EditOutflowCommand.java +++ b/src/main/java/command/EditOutflowCommand.java @@ -1,5 +1,6 @@ package command; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.Outflow; import financialtransactions.TransactionManager; @@ -16,7 +17,10 @@ public String execute(TransactionManager manager) throws Exception { String outflowTime = null; String outflowCategory = null; - for (String part : commandParts) { + /* Iterates through the parts of the original command string that checks and updates + relevant outflow information. */ + for (int i = 1; i < commandParts.length; i++) { + String part = commandParts[i]; if (part.startsWith("i/")) { outflowIndex = Integer.parseInt(part.substring(2)); } else if (part.startsWith("n/")) { @@ -29,6 +33,8 @@ public String execute(TransactionManager manager) throws Exception { outflowTime = part.substring(2); } else if (part.startsWith("c/")) { outflowCategory = part.substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } } diff --git a/src/main/java/command/EditReminderCommand.java b/src/main/java/command/EditReminderCommand.java index b35bb2516a..4ae7d80520 100644 --- a/src/main/java/command/EditReminderCommand.java +++ b/src/main/java/command/EditReminderCommand.java @@ -1,5 +1,6 @@ package command; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.Reminder; import financialtransactions.TransactionManager; @@ -16,7 +17,10 @@ public String execute(TransactionManager manager) throws Exception { String reminderTime = null; String reminderCategory = null; - for (String part : commandParts) { + /* Iterates through the parts of the original command string that checks and updates + relevant reminder information. */ + for (int i = 1; i < commandParts.length; i++) { + String part = commandParts[i]; if (part.startsWith("i/")) { reminderIndex = Integer.parseInt(part.substring(2)); } else if (part.startsWith("n/")) { @@ -29,6 +33,8 @@ public String execute(TransactionManager manager) throws Exception { reminderTime = part.substring(2); } else if (part.startsWith("c/")) { reminderCategory = part.substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); } } diff --git a/src/main/java/command/SetBudgetCommand.java b/src/main/java/command/SetBudgetCommand.java index 686290a3bd..fbf0daa956 100644 --- a/src/main/java/command/SetBudgetCommand.java +++ b/src/main/java/command/SetBudgetCommand.java @@ -1,5 +1,6 @@ package command; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.TransactionManager; public class SetBudgetCommand extends BaseCommand{ @@ -9,11 +10,11 @@ public SetBudgetCommand(String[] commandParts) { public String execute(TransactionManager manager) throws Exception{ String budgetString = null; - for (String part : commandParts) { - if (part.startsWith("a/")) { - budgetString = part.substring(2); - } - } + if (commandParts[1].startsWith("a/")) { + budgetString = commandParts[1].substring(2); + } else { + throw new IncorrectCommandSyntaxException(commandParts[0]); + } double budget = Double.parseDouble(budgetString); manager.setBudget(budget); return "Ok. Budget set."; diff --git a/src/main/java/command/ViewHistoryCommand.java b/src/main/java/command/ViewHistoryCommand.java index 880e341907..bb90f7fdd6 100644 --- a/src/main/java/command/ViewHistoryCommand.java +++ b/src/main/java/command/ViewHistoryCommand.java @@ -1,5 +1,6 @@ package command; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.TransactionManager; public class ViewHistoryCommand extends BaseCommand { @@ -18,7 +19,7 @@ public String execute(TransactionManager manager) throws Exception{ } else if (commandParts[1].equals("all")) { numTransactions = manager.getTransactionListSize(); } else { - return "Sorry, please use the correct syntax for view-history."; + throw new IncorrectCommandSyntaxException(commandParts[0]); } boolean isIncludeBarChart = commandParts.length == 3 && commandParts[2].equals("w/chart"); return manager.showLastNTransactions(numTransactions, isIncludeBarChart); diff --git a/src/main/java/customexceptions/IncorrectCommandSyntaxException.java b/src/main/java/customexceptions/IncorrectCommandSyntaxException.java new file mode 100644 index 0000000000..40a2c6215f --- /dev/null +++ b/src/main/java/customexceptions/IncorrectCommandSyntaxException.java @@ -0,0 +1,7 @@ +package customexceptions; + +public class IncorrectCommandSyntaxException extends Exception { + public IncorrectCommandSyntaxException(String command) { + super("Sorry, please use the correct syntax for " + command); + } +} diff --git a/src/main/java/financeproject/Main.java b/src/main/java/financeproject/Main.java index 6b58c06dca..1a39a126fd 100644 --- a/src/main/java/financeproject/Main.java +++ b/src/main/java/financeproject/Main.java @@ -5,6 +5,7 @@ import customexceptions.InactivityTimeoutException; import customexceptions.IncompletePromptException; import customexceptions.UserNotFoundException; +import customexceptions.IncorrectCommandSyntaxException; import financialtransactions.TransactionManager; import parser.Parser; import storage.Storage; @@ -53,7 +54,7 @@ public static void main(String[] args) throws SecurityException { response = baseCommand.execute(manager); ui.printMessage(response); inactivityTimer.resetTimer(); - } catch (IncompletePromptException e) { + } catch (IncompletePromptException | IncorrectCommandSyntaxException e) { ui.printMessage(e.getMessage()); } catch (Exception e) { ui.printMessage("Uh-oh, something went wrong: " + e.getMessage()); diff --git a/src/main/java/financeproject/data/Bob.txt b/src/main/java/financeproject/data/Bob.txt index 1cc11e2cd4..420644bb63 100644 --- a/src/main/java/financeproject/data/Bob.txt +++ b/src/main/java/financeproject/data/Bob.txt @@ -1,6 +1,8 @@ -0.00 +100.00 Stocks|400.00|Oct 24 2024 12:00PM|INVESTMENT|I Refund|100.00|Jun 23 2023 05:00PM|REFUND|I Salary|400.00|May 23 2022 07:00PM|INCOME|I +Salary|400.00|May 23 2022 07:00PM|INCOME|I Groceries|-150.00|Jun 23 2023 06:30PM|SHOPPING|O Rent|-1500.00|Jun 23 2023 06:00PM|RENT|O +Rent|-1500.00|Jun 23 2023 06:00PM|RENT|O