From 48623d6008820704eaa71c70737db9fd4eda9cb6 Mon Sep 17 00:00:00 2001 From: Kishen271828 Date: Thu, 4 Apr 2024 16:23:18 +0800 Subject: [PATCH 1/4] Main working --- data/Bob.txt | 4 ++++ src/main/java/financeproject/Main.java | 7 ++++--- src/main/java/financeproject/data/data.txt | 5 ----- src/main/java/financialtransactions/TransactionList.java | 1 + 4 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 src/main/java/financeproject/data/data.txt diff --git a/data/Bob.txt b/data/Bob.txt index e69de29bb2..b1081d210c 100644 --- a/data/Bob.txt +++ b/data/Bob.txt @@ -0,0 +1,4 @@ +0.00 +Stocks|400.00|Oct 24 2024 12:00PM|INVESTMENT|I +Groceries|-150.00|Jun 23 2023 06:30PM|SHOPPING|O +Refund|100.00|Jun 23 2023 05:00PM|REFUND|I diff --git a/src/main/java/financeproject/Main.java b/src/main/java/financeproject/Main.java index 0b39251165..1e50d697a2 100644 --- a/src/main/java/financeproject/Main.java +++ b/src/main/java/financeproject/Main.java @@ -16,7 +16,7 @@ public class Main { public static void main(String[] args) throws SecurityException { Storage storage = new Storage("./data"); // Storage manager for jar file - + UI ui = new UI(); ui.printMessage("Welcome. Enter your username and password to login."); @@ -25,7 +25,7 @@ public static void main(String[] args) throws SecurityException { String response = ""; // Authenticating user - BaseUser user = null; + BaseUser user; InactivityTimer inactivityTimer = new InactivityTimer(); try { ui.printMessage("Username: "); @@ -42,6 +42,7 @@ public static void main(String[] args) throws SecurityException { return; } TransactionManager manager = storage.loadFile(user.getUsername()); + //TransactionManager manager = new TransactionManager(); ui.printMessage(manager.generateQuickReport()); // Main program flow @@ -84,4 +85,4 @@ public static void main(String[] args) throws SecurityException { } while (baseCommand == null || !baseCommand.isExit()); ui.closeScanner(); } -} +} \ No newline at end of file diff --git a/src/main/java/financeproject/data/data.txt b/src/main/java/financeproject/data/data.txt deleted file mode 100644 index 7460e56187..0000000000 --- a/src/main/java/financeproject/data/data.txt +++ /dev/null @@ -1,5 +0,0 @@ -Salary|400.00|May 23 2022 07:00PM|INCOME -Salara|400.00|May 23 2022 07:00PM|INCOME -Salarz|400.00|May 23 2022 07:00PM|INCOME -Rent|-1500.00|Jun 23 2023 06:00PM|RENT -Rent|-1500.00|Jun 23 2023 06:00PM|RENT diff --git a/src/main/java/financialtransactions/TransactionList.java b/src/main/java/financialtransactions/TransactionList.java index d9300b1b43..8003e4ca35 100644 --- a/src/main/java/financialtransactions/TransactionList.java +++ b/src/main/java/financialtransactions/TransactionList.java @@ -126,6 +126,7 @@ public void sortList() { public void sortListByDate() { this.transactionList.sort(new DateComparator<>()); } + //@@author chenhowy public double totalSpentInPastMonth() { double amount = 0; From f604d4bf3a731a4bba1bf57ff06b8c4e1facac4f Mon Sep 17 00:00:00 2001 From: Kishen271828 Date: Thu, 4 Apr 2024 18:13:37 +0800 Subject: [PATCH 2/4] Implement sorting of transactions by time --- .../financialtransactions/Transaction.java | 5 ++++ .../TransactionComparator.java | 11 ++++++++ .../TransactionList.java | 9 +++++++ .../TransactionManager.java | 26 ++++++++++++++----- src/main/java/template/BaseDate.java | 5 ++++ 5 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 src/main/java/financialtransactions/TransactionComparator.java diff --git a/src/main/java/financialtransactions/Transaction.java b/src/main/java/financialtransactions/Transaction.java index cd81958e80..e31a93e2e4 100644 --- a/src/main/java/financialtransactions/Transaction.java +++ b/src/main/java/financialtransactions/Transaction.java @@ -56,4 +56,9 @@ public String toSave() { public BaseDate getDate() { return date; } + + public int compareTo(Transaction otherTransaction) { + return this.date.compareTo(otherTransaction.getDate()); + } + } diff --git a/src/main/java/financialtransactions/TransactionComparator.java b/src/main/java/financialtransactions/TransactionComparator.java new file mode 100644 index 0000000000..1ec3e8eb79 --- /dev/null +++ b/src/main/java/financialtransactions/TransactionComparator.java @@ -0,0 +1,11 @@ +package financialtransactions; + +import java.util.Comparator; + +public class TransactionComparator implements Comparator> { + @Override + public int compare(Transaction t1, Transaction t2) { + // Compare the dates of the transactions + return t1.getDate().compareTo(t2.getDate()); + } +} diff --git a/src/main/java/financialtransactions/TransactionList.java b/src/main/java/financialtransactions/TransactionList.java index 8003e4ca35..2ac092d4b7 100644 --- a/src/main/java/financialtransactions/TransactionList.java +++ b/src/main/java/financialtransactions/TransactionList.java @@ -2,7 +2,9 @@ import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; +import java.util.List; public class TransactionList> { private ArrayList transactionList; @@ -73,6 +75,7 @@ public String toSave() { return baseString.toString(); } //@@author + protected void printTransactionsSafeInfo() { int index = 1; for (T transaction : transactionList) { @@ -97,6 +100,11 @@ public void setTransactionsType(String transactionsType) { } } + public void sortTransactions() { + transactionList.sort(new TransactionComparator()); + } + + public class NameComparator> implements Comparator { @Override public int compare(T o1, T o2) { @@ -149,6 +157,7 @@ public double getTotalSpentInMonth(int month, int year) { } return amount; } + public int getTransactionsAfterToday() { int numberOfTransactions = 0; LocalDateTime today = LocalDateTime.now(); diff --git a/src/main/java/financialtransactions/TransactionManager.java b/src/main/java/financialtransactions/TransactionManager.java index 05bf6fef85..b369befb12 100644 --- a/src/main/java/financialtransactions/TransactionManager.java +++ b/src/main/java/financialtransactions/TransactionManager.java @@ -26,7 +26,7 @@ public void setBudget(double budget) { public void addTransaction(Transaction transaction) { transactionList.addTransaction(transaction); - // transactionList.sortList(); + transactionList.sortTransactions(); if (transaction instanceof Inflow) { Inflow inflow = (Inflow) transaction; transactionList.setTransactionsType("Inflow"); @@ -76,7 +76,10 @@ public Inflow removeInflow(int index) throws Exception { int numOfInflows = inflows.getTransactionListSize(); Inflow transactionRemoved = (Inflow) inflows.getNthTransaction(numOfInflows - index); transactionList.removeTransactionIndex(transactionList.getIndexOfParticularTransaction(transactionRemoved)); + transactionList.sortTransactions(); + inflows.removeTransactionIndex(numOfInflows - index); + inflows.sortTransactions(); return transactionRemoved; } @@ -84,7 +87,10 @@ public Outflow removeOutflow(int index) throws Exception { int numOfOutflows = outflows.getTransactionListSize(); Outflow transactionRemoved = (Outflow) outflows.getNthTransaction(numOfOutflows - index); transactionList.removeTransactionIndex(transactionList.getIndexOfParticularTransaction(transactionRemoved)); + transactionList.sortTransactions(); + outflows.removeTransactionIndex(numOfOutflows - index); + outflows.sortTransactions(); return transactionRemoved; } @@ -96,20 +102,28 @@ public Reminder removeReminder(int index) throws Exception { return transactionRemoved; } - public boolean editInflow(int index, Transaction updatedTransaction) throws Exception { + public Inflow editInflow(int index, Transaction updatedTransaction) throws Exception { int numOfInflows = inflows.getTransactionListSize(); - Transaction transactionEdited = inflows.getNthTransaction(numOfInflows - index); + Inflow transactionEdited = (Inflow) inflows.getNthTransaction(numOfInflows - index); transactionList.editTransactionIndex(transactionList.getIndexOfParticularTransaction(transactionEdited), updatedTransaction); - return inflows.editTransactionIndex(numOfInflows - index, (Inflow) updatedTransaction); + transactionList.sortTransactions(); + + inflows.editTransactionIndex(numOfInflows - index, (Inflow) updatedTransaction); + inflows.sortTransactions(); + return (Inflow) transactionEdited; } - public boolean editOutflow(int index, Transaction updatedTransaction) throws Exception { + public Outflow editOutflow(int index, Transaction updatedTransaction) throws Exception { int numOfOutflows = outflows.getTransactionListSize(); Transaction transactionEdited = outflows.getNthTransaction(numOfOutflows - index); transactionList.editTransactionIndex(transactionList.getIndexOfParticularTransaction(transactionEdited), updatedTransaction); - return outflows.editTransactionIndex(numOfOutflows - index, (Outflow) updatedTransaction); + transactionList.sortTransactions(); + + outflows.editTransactionIndex(numOfOutflows - index, (Outflow) updatedTransaction); + outflows.sortTransactions(); + return (Outflow) transactionEdited; } public boolean editReminder(int index, Transaction updatedTransaction) throws Exception { diff --git a/src/main/java/template/BaseDate.java b/src/main/java/template/BaseDate.java index 010ccd98ab..f090f25a19 100644 --- a/src/main/java/template/BaseDate.java +++ b/src/main/java/template/BaseDate.java @@ -80,4 +80,9 @@ public boolean isBefore(BaseDate otherDate) { public LocalDateTime getDateTime() { return dateTime; } + + public int compareTo(BaseDate otherDate) { + return this.dateTime.compareTo(otherDate.dateTime); + } + } From c55a6c1d2e6b3a859e7c1c94a3258268af53f033 Mon Sep 17 00:00:00 2001 From: Kishen271828 Date: Thu, 4 Apr 2024 18:19:42 +0800 Subject: [PATCH 3/4] Remove unused imports --- src/main/java/financialtransactions/TransactionList.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/financialtransactions/TransactionList.java b/src/main/java/financialtransactions/TransactionList.java index 2ac092d4b7..8334e8fe46 100644 --- a/src/main/java/financialtransactions/TransactionList.java +++ b/src/main/java/financialtransactions/TransactionList.java @@ -2,9 +2,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Collections; import java.util.Comparator; -import java.util.List; public class TransactionList> { private ArrayList transactionList; From a84503a18ec20657401e0a9605a66f0ac4a35e47 Mon Sep 17 00:00:00 2001 From: Kishen271828 Date: Thu, 4 Apr 2024 18:34:48 +0800 Subject: [PATCH 4/4] Fix gradle checkstyle issues --- src/main/java/command/AddInflowCommand.java | 3 +++ src/main/java/command/AddOutflowCommand.java | 2 ++ src/main/java/financeproject/Main.java | 4 ++-- src/test/java/parser/ParserTest.java | 2 -- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/command/AddInflowCommand.java b/src/main/java/command/AddInflowCommand.java index a6a8f977a8..8492a39aa0 100644 --- a/src/main/java/command/AddInflowCommand.java +++ b/src/main/java/command/AddInflowCommand.java @@ -16,6 +16,7 @@ public AddInflowCommand(String[] commandParts) { } private void createInflow() throws CategoryNotFoundException { + //@@author Kishen271828 String inflowName = null; double inflowAmount = 0; String inflowDate = null; @@ -39,7 +40,9 @@ private void createInflow() throws CategoryNotFoundException { inflow = new Inflow(inflowName, inflowAmount, inflowDateTime); assert inflowCategory != null; inflow.setCategory(Inflow.Category.valueOf(inflowCategory.toUpperCase())); + //@@author } + public String execute(TransactionManager manager) { //@@author Kishen271828 manager.addTransaction(inflow); diff --git a/src/main/java/command/AddOutflowCommand.java b/src/main/java/command/AddOutflowCommand.java index d8c639bc5d..f91085f577 100644 --- a/src/main/java/command/AddOutflowCommand.java +++ b/src/main/java/command/AddOutflowCommand.java @@ -16,6 +16,7 @@ public AddOutflowCommand(String[] commandParts) { } private void createOutflow() throws CategoryNotFoundException { + //@@author Kishen271828 String outflowName = null; double outflowAmount = 0.0; String outflowDate = null; @@ -40,6 +41,7 @@ private void createOutflow() throws CategoryNotFoundException { outflow = new Outflow(outflowName, outflowAmount, outflowDateTime); assert outflowCategory != null; outflow.setCategory(Outflow.Category.valueOf(outflowCategory.toUpperCase())); + //@@author } public String execute(TransactionManager manager) { diff --git a/src/main/java/financeproject/Main.java b/src/main/java/financeproject/Main.java index 1e50d697a2..6b58c06dca 100644 --- a/src/main/java/financeproject/Main.java +++ b/src/main/java/financeproject/Main.java @@ -41,8 +41,8 @@ public static void main(String[] args) throws SecurityException { } else { return; } + TransactionManager manager = storage.loadFile(user.getUsername()); - //TransactionManager manager = new TransactionManager(); ui.printMessage(manager.generateQuickReport()); // Main program flow @@ -85,4 +85,4 @@ public static void main(String[] args) throws SecurityException { } while (baseCommand == null || !baseCommand.isExit()); ui.closeScanner(); } -} \ No newline at end of file +} diff --git a/src/test/java/parser/ParserTest.java b/src/test/java/parser/ParserTest.java index fdd713a44a..946de21983 100644 --- a/src/test/java/parser/ParserTest.java +++ b/src/test/java/parser/ParserTest.java @@ -31,8 +31,6 @@ public void addOutflow_success() throws Exception { @Test public void sampleTest() throws Exception{ - UI ui = new UI(); - Parser parser = new Parser(ui); String assert1 = "add-inflow n/Salary a/400.00 d/23/05/2022 t/1900 c/income"; String assert2 = "add-outflow n/Rent a/1500.00 d/23/06/2023 t/1800 c/rent\n"; assertInstanceOf(AddInflowCommand.class, parser.parseCommand(assert1));