From cea45c8044c9cfbd28ce3012a70c3d7f40da19b5 Mon Sep 17 00:00:00 2001
From: Andreas <andreksv@ntnu.no>
Date: Mon, 17 Apr 2023 13:54:28 +0200
Subject: [PATCH] Implemented GeneralBudget budgetPeriod set to amount days
 left in month

---
 .../demo/controller/BudgetController.java     |  2 +-
 .../controller/IncomeExpenseController.java   |  2 +-
 .../idatt1002/demo/controller/MainMenu.java   |  2 +-
 .../demo/data/Budget/FileHandlingBudget.java  | 17 ++------
 .../demo/data/Budget/GeneralBudget.java       | 39 ++++++++-----------
 .../data/Budget/FileHandlingBudgetTest.java   |  4 +-
 .../demo/data/Budget/GeneralBudgetTest.java   | 26 +++++--------
 7 files changed, 34 insertions(+), 58 deletions(-)

diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java
index 3d33f030..514a9f1f 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java
@@ -304,7 +304,7 @@ public class BudgetController implements FinanceController {
         FileHandlingBudget fileHandlingBudget = new FileHandlingBudget();
         //Instantiate new budget
         if (fileHandlingBudget.isEmpty(fileName)) {
-            general = new GeneralBudget(31, 1000);
+            general = new GeneralBudget(1000);
             //throws new IOException("Not valid budget")
         } else { //Load previous budget
             try {
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
index 27996dca..95e4519a 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
@@ -565,7 +565,7 @@ public class IncomeExpenseController implements FinanceController {
     //Instantiate new budget
     try {
       if (fileHandling.isEmpty(fileName)) {
-        generalBudget = new GeneralBudget(31, 1000);
+        generalBudget = new GeneralBudget(1000);
       } else { //Load previous income register
         generalBudget = fileHandlingBudget.readGeneralBudgetFromFile(fileName);
       }
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
index b8230ee0..0bb5d1d0 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
@@ -210,7 +210,7 @@ public class MainMenu {
     FileHandlingBudget fileHandlingBudget = new FileHandlingBudget();
     //Instantiate new budget
     if (fileHandlingBudget.isEmpty(fileName)) {
-      generalBudget = new GeneralBudget(31, 1000);
+      generalBudget = new GeneralBudget(1000);
     } else { //Load previous budget
       try {
         generalBudget = fileHandlingBudget.readGeneralBudgetFromFile(fileName);
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudget.java b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudget.java
index c3932186..002b796a 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudget.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudget.java
@@ -3,8 +3,6 @@ package no.ntnu.idatt1002.demo.data.Budget;
 import no.ntnu.idatt1002.demo.data.Economics.*;
 
 import java.io.*;
-import java.time.LocalDate;
-import java.util.ArrayList;
 
 /**
  * FileHandling is a class for writing and reading
@@ -15,7 +13,6 @@ import java.util.ArrayList;
 public class FileHandlingBudget {
     private static final String filePath = "src/main/resources/Budget/";
     private static final String fileType = ".budget";
-    private static final String budgetPeriod = "budgetPeriod=";
     private static final String maxAmount = "maxAmount=";
     private static final String budgetAmount = "budgetAmount=";
     private static final String budgetCategory = "budgetCategory=";
@@ -45,11 +42,7 @@ public class FileHandlingBudget {
      */
     public boolean isEmpty(String fileTitle) throws IOException {
         try (BufferedReader br = new BufferedReader(new FileReader(filePath + fileTitle + fileType))) {
-            if (br.readLine() == null) {
-                return true;
-            } else {
-                return false;
-            }
+            return br.readLine() == null;
         }
     }
 
@@ -62,9 +55,7 @@ public class FileHandlingBudget {
      */
     public GeneralBudget readGeneralBudgetFromFile(String fileTitle) throws IOException {
         GeneralBudget generalBudget = null;
-        int budgetPeriod = 0;
         double maxAmount = 0;
-        ArrayList<BudgetItem> budgetItems = new ArrayList<>();
         double budgetAmount = 0;
         ExpenseCategory expenseCategory = null;
         String budgetDescription = null;
@@ -74,9 +65,7 @@ public class FileHandlingBudget {
             String nextLine = br.readLine();
             while ((line = nextLine) != null) {
                 nextLine = br.readLine();
-                if(line.startsWith(FileHandlingBudget.budgetPeriod)) {
-                    budgetPeriod = Integer.parseInt(line.replace(FileHandlingBudget.budgetPeriod, ""));
-                } else if (line.startsWith(FileHandlingBudget.maxAmount)) {
+                if (line.startsWith(FileHandlingBudget.maxAmount)) {
                     maxAmount = Double.parseDouble(line.replace(FileHandlingBudget.maxAmount,""));
                 } else if (line.startsWith(FileHandlingBudget.budgetAmount)) {
                     budgetAmount = Double.parseDouble(line.replace(FileHandlingBudget.budgetAmount,""));
@@ -93,7 +82,7 @@ public class FileHandlingBudget {
                 }
                 if (line.isEmpty() || (nextLine == null)) {
                     if(generalBudget == null){
-                        generalBudget = new GeneralBudget(budgetPeriod,maxAmount);
+                        generalBudget = new GeneralBudget(maxAmount);
                     } else{
                         generalBudget.addToBudget(budgetAmount,budgetDescription,expenseCategory);
                     }
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
index 3a51dc78..04fb19f7 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
@@ -3,15 +3,9 @@ package no.ntnu.idatt1002.demo.data.Budget;
 import java.util.Arrays;
 import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory;
 
-import java.sql.Date;
-import java.time.Duration;
 import java.time.LocalDate;
 import java.time.Month;
-import java.time.ZoneId;
-import java.time.temporal.ChronoUnit;
-import java.time.temporal.Temporal;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.List;
 import java.util.Objects;
 
@@ -22,25 +16,31 @@ import java.util.Objects;
  */
 public class GeneralBudget {
 
-    private final int budgetPeriod;
+    /**
+     * The period the budget is going to last for.
+     * Is always the amount of days left in the current month.
+     */
+    private final int budgetPeriod = getDaysLeftOfBudgetPeriod();
+    /**
+     * A List of BudgetItems.
+     */
     private final List<BudgetItem> budgetItems;
+    /**
+     * The max amount of the budget.
+     */
     private final double maxAmount;
 
     /**
      * Class constructor.
      *
-     * @param budgetPeriod the period the budget is going to last for.
      * @param budgetItems a List of BudgetItems.
      * @param maxAmount the max amount of the budget.
      *
      */
-    public GeneralBudget(int budgetPeriod, List<BudgetItem> budgetItems, double maxAmount) {
-        if (budgetPeriod <= 0) {
-            throw new IllegalArgumentException("The period can´t be under zero days");
-        } else if (maxAmount < 0) {
+    public GeneralBudget(List<BudgetItem> budgetItems, double maxAmount) {
+        if (maxAmount < 0) {
             throw new IllegalArgumentException("The max amount of the budget cant be less than zero");
         } else {
-            this.budgetPeriod = budgetPeriod;
             this.maxAmount = maxAmount;
             this.budgetItems = budgetItems;
         }
@@ -50,17 +50,12 @@ public class GeneralBudget {
      * Class constructor that creates an empty
      * ArrayList for storing BudgetItems
      *
-     * @param budgetPeriod the period the budget is going to last for.
      * @param maxAmount the max amount of the budget.
      */
-    public GeneralBudget(int budgetPeriod, double maxAmount) {
-        if (budgetPeriod <= 0) {
-            throw new IllegalArgumentException("The period can´t be under zero days");
-        }
+    public GeneralBudget(double maxAmount) {
         if (maxAmount < 0) {
             throw new IllegalArgumentException("The max amount of the budget cant be less than zero");
         } else {
-            this.budgetPeriod = budgetPeriod;
             this.maxAmount = maxAmount;
             this.budgetItems = new ArrayList<>();
         }
@@ -117,7 +112,7 @@ public class GeneralBudget {
      * @return the amount of days left in the budget period
      *
      */
-    public long getDaysLeftOfBudgetPeriod() {
+    public int getDaysLeftOfBudgetPeriod() {
         Month thisMonth = LocalDate.now().getMonth();
         int dayOfTheMonth = LocalDate.now().getDayOfMonth();
 
@@ -224,9 +219,9 @@ public class GeneralBudget {
             budgetItemsString.append(budgetItem+"\n\n");
         }
         if(budgetItemsString.isEmpty()) {
-            return "budgetPeriod="+getBudgetPeriod()+"\nmaxAmount="+getMaxAmount()+"\n\n";
+            return "maxAmount="+getMaxAmount()+"\n\n";
         } else {
-            return "budgetPeriod="+getBudgetPeriod()+"\nmaxAmount="+getMaxAmount()+"\n\n"+budgetItemsString;
+            return "maxAmount="+getMaxAmount()+"\n\n"+budgetItemsString;
         }
     }
 
diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudgetTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudgetTest.java
index 21e78490..b03b20a8 100644
--- a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudgetTest.java
+++ b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudgetTest.java
@@ -26,7 +26,7 @@ class FileHandlingBudgetTest {
     @Nested
     @DisplayName("FileHandling budget with one BudgetItem does not throw exception")
     class fileHandlingBudgetWithOneBudgetItemDoesNotThrowException{
-        GeneralBudget generalBudget = new GeneralBudget(12, 1200);
+        GeneralBudget generalBudget = new GeneralBudget(1200);
         String fileTitle = "oneBudgetItemTest";
 
         @BeforeEach
@@ -50,7 +50,7 @@ class FileHandlingBudgetTest {
     @Nested
     @DisplayName("FileHandling budget with multiple BudgetItems does not throw exception")
     class FileHandlingBudgetWithMultipleBudgetItemsDoesNotThrowException{
-        GeneralBudget generalBudget = new GeneralBudget(12, 1200);
+        GeneralBudget generalBudget = new GeneralBudget(1200);
         String fileTitle = "multipleBudgetItem";
         @BeforeEach
         void createGeneralBudget(){
diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java
index e13fadab..55ea6e9f 100644
--- a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java
+++ b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java
@@ -11,27 +11,19 @@ import java.util.List;
 import static org.junit.jupiter.api.Assertions.*;
 
 class GeneralBudgetTest {
-    @Test
-    @DisplayName("Constructor throws exception when the periodAmount is under zero")
-    void constructor_throws_exception_when_periodAmount_under_zero(){
-        List<BudgetItem> list = new ArrayList<>();
-
-        assertThrows(IllegalArgumentException.class, () -> new GeneralBudget(-1, list, 1200));
-    }
-
     @Test
     @DisplayName("Constructor throws exception when maxAmount is under zero")
     void constructor_throws_exception_when_maxAmount_under_zero(){
         List<BudgetItem> list = new ArrayList<>();
 
-        assertThrows(IllegalArgumentException.class, () -> new GeneralBudget(10, list, -12));
+        assertThrows(IllegalArgumentException.class, () -> new GeneralBudget(list, -12));
     }
 
     @Test
     @DisplayName("AddToBudget throws when totalSum is higher than maxAmount ")
     void add_to_budget_throws_when_totalSum_is_over_maxAmount(){
         List<BudgetItem> list = new ArrayList<>();
-        GeneralBudget budget1 = new GeneralBudget(12, list, 1200);
+        GeneralBudget budget1 = new GeneralBudget(list, 1200);
         BudgetItem foodItem = new BudgetItem(1300, "Food", ExpenseCategory.FOOD);
 
         assertThrows(IllegalArgumentException.class, () ->  budget1.addToBudgetBudgetItem(foodItem));
@@ -41,7 +33,7 @@ class GeneralBudgetTest {
     @DisplayName("addToBudget throws when a budget with same category already exists")
     void add_to_budget_throws_when_a_budget_with_same_category_already_exists(){
         List<BudgetItem> list = new ArrayList<>();
-        GeneralBudget budget1 = new GeneralBudget(12, list, 1200);
+        GeneralBudget budget1 = new GeneralBudget(list, 1200);
         BudgetItem foodItem = new BudgetItem(500, "Food", ExpenseCategory.FOOD);
         budget1.addToBudgetBudgetItem(foodItem);
         BudgetItem alsoFoodItem = new BudgetItem(200, "Food", ExpenseCategory.FOOD);
@@ -53,7 +45,7 @@ class GeneralBudgetTest {
     @DisplayName("Adds a budget to generalBudget")
     void add_budget_to_generalBudget(){
         List<BudgetItem> list = new ArrayList<>();
-        GeneralBudget budget1 = new GeneralBudget(12, list, 1200);
+        GeneralBudget budget1 = new GeneralBudget(list, 1200);
         BudgetItem foodItem = new BudgetItem(500, "Food", ExpenseCategory.FOOD);
         budget1.addToBudgetBudgetItem(foodItem);
 
@@ -64,7 +56,7 @@ class GeneralBudgetTest {
     @DisplayName("Checks if the list contains a item with a given category")
     void checks_if_the_list_contains_an_item_with_this_category_true(){
         List<BudgetItem> list = new ArrayList<>();
-        GeneralBudget budget1 = new GeneralBudget(12, list, 1200);
+        GeneralBudget budget1 = new GeneralBudget(list, 1200);
         BudgetItem foodItem = new BudgetItem(500, "Food", ExpenseCategory.FOOD);
         budget1.addToBudgetBudgetItem(foodItem);
 
@@ -75,7 +67,7 @@ class GeneralBudgetTest {
     @DisplayName("checks that the list does not contain an item with the given category")
     void checks_if_the_list_contains_an_item_with_this_category_false(){
         List<BudgetItem> list = new ArrayList<>();
-        GeneralBudget budget1 = new GeneralBudget(12, list, 1200);
+        GeneralBudget budget1 = new GeneralBudget(list, 1200);
         BudgetItem bookItem = new BudgetItem(500, "Books", ExpenseCategory.BOOKS);
         budget1.addToBudgetBudgetItem(bookItem);
 
@@ -86,7 +78,7 @@ class GeneralBudgetTest {
     @DisplayName("Checks that the getTotalSum gives the correct number")
     void get_total_sum_of_all_budgetItems_in_the_budget(){
         List<BudgetItem> list = new ArrayList<>();
-        GeneralBudget budget1 = new GeneralBudget(12, list, 1200);
+        GeneralBudget budget1 = new GeneralBudget(list, 1200);
         BudgetItem bookItem = new BudgetItem(500, "Books", ExpenseCategory.BOOKS);
         BudgetItem foodItem = new BudgetItem(300, "Food", ExpenseCategory.FOOD);
         budget1.addToBudgetBudgetItem(bookItem);
@@ -99,7 +91,7 @@ class GeneralBudgetTest {
     @DisplayName("Checks that an item gets deleted from the budget")
     void delete_from_budget(){
         List<BudgetItem> list = new ArrayList<>();
-        GeneralBudget budget1 = new GeneralBudget(12, list, 1200);
+        GeneralBudget budget1 = new GeneralBudget(list, 1200);
         BudgetItem bookItem = new BudgetItem(500, "Books", ExpenseCategory.BOOKS);
         budget1.addToBudgetBudgetItem(bookItem);
         budget1.deleteItemFromBudget(ExpenseCategory.BOOKS);
@@ -115,7 +107,7 @@ class GeneralBudgetTest {
         @BeforeEach
         void setUp() {
             list = new ArrayList<>();
-            budget = new GeneralBudget(12, list, 1200);
+            budget = new GeneralBudget(list, 1200);
             budget.addToBudget(10, "Books", ExpenseCategory.BOOKS);
         }
 
-- 
GitLab