From 434361cacba85b667296c67b548593cc34f53125 Mon Sep 17 00:00:00 2001
From: Harry Linrui XU <xulr0820@hotmail.com>
Date: Thu, 20 Apr 2023 12:22:27 +0200
Subject: [PATCH] Fixed filepath, such that tests can be run

---
 .../demo/controller/BudgetController.java     | 10 +++---
 .../controller/IncomeExpenseController.java   | 26 +++++++++-----
 .../idatt1002/demo/controller/MainMenu.java   | 34 +++++++++++--------
 .../demo/data/Budget/FileHandlingBudget.java  | 12 +++----
 .../Budget/FileHandlingBudgetArchive.java     |  4 +--
 .../demo/data/Economics/FileHandling.java     | 11 +++---
 6 files changed, 55 insertions(+), 42 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 9d4a9064..aa40ea6f 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/BudgetController.java
@@ -103,7 +103,8 @@ public class BudgetController extends FinanceController {
 
         try {
             System.out.println("Just in budget try");
-            general = loadBudgetDataFromFile("Budget");
+            general = loadBudgetDataFromFile(
+                "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Budget");
             budgetList = FXCollections.observableArrayList(general.getBudgetItems());
             budgetTableView.setItems(budgetList);
             System.out.println("After loading general");
@@ -113,8 +114,8 @@ public class BudgetController extends FinanceController {
             } else {
                 budgetRegister = FileHandlingBudgetArchive.readBudgetArchive("");
             }
-
-            if (FileHandlingBudget.isNewBudget("Budget")) {
+            if (FileHandlingBudget.isNewBudget(
+                "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Budget")) {
                 returnToMainMenuBtn.setOpacity(0);
                 returnToMainMenuBtn.setDisable(true);
                 daysLeftLbl.setOpacity(0);
@@ -280,7 +281,8 @@ public class BudgetController extends FinanceController {
      */
     @Override
     public void saveDataToFile() throws IOException {
-        FileHandlingBudget.writeGeneralBudgetToFile("Budget", general);
+        FileHandlingBudget.writeGeneralBudgetToFile(
+            "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Budget", general);
     }
 
     public void updateBudgetRegister(String budgetFolderName) {
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 4b0beeba..2f0c5bb7 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/IncomeExpenseController.java
@@ -155,18 +155,23 @@ public class IncomeExpenseController extends FinanceController {
     //Initialize columns
     setColumns();
 
-    //Initialize registers and tableview
-    incomeRegister = loadIncomeDataFromFile("Income");
+    try {
+      //Initialize registers and tableview
+      incomeRegister = loadIncomeDataFromFile(
+          "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Income");
+      expenseRegister = loadExpenseDataFromFile(
+          "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Expense");
+    } catch(IOException ioe) {
+      showErrorDialogBox("File reading error", "Could not read register", "");
+    }
+
+
     income = FXCollections.observableArrayList(incomeRegister.getItems());
     incomeTableView.setItems(income);
 
-    System.out.println("After income rgister ");
-    expenseRegister = loadExpenseDataFromFile("Expense");
     expenses = FXCollections.observableArrayList(expenseRegister.getItems());
     expenseTableView.setItems(expenses);
 
-    System.out.println("Afte expense register");
-
     //Setting pie chart values to correspond with the registers
     incomePieChart.setLegendSide(Side.RIGHT);
     incomePieChart.setLabelLineLength(10);
@@ -474,13 +479,16 @@ public class IncomeExpenseController extends FinanceController {
    */
   @Override
   public void saveDataToFile() throws IOException {
-    FileHandling.writeItemRegisterToFile(incomeRegister, "Income");
-    FileHandling.writeItemRegisterToFile(expenseRegister, "Expense");
+    FileHandling.writeItemRegisterToFile(incomeRegister,
+        "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Income");
+    FileHandling.writeItemRegisterToFile(expenseRegister,
+        "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Expense");
   }
 
   public void saveDisposableIncomeToFile() throws IOException {
     String disposableIncomeAsString = String.valueOf(incomeRegister.getTotalSum() - expenseRegister.getTotalSum());
-    FileHandlingBudget.writeMaxAmountToFile(FileHandlingSelectedBudget.readSelectedBudget(), disposableIncomeAsString);
+    FileHandlingBudget.writeMaxAmountToFile(
+        "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Budget", disposableIncomeAsString);
   }
   /**
    * Switches scenes back to main menu, by loading a new FXML file and setting the scene to this location.
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 554f8199..71a7f39b 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/MainMenu.java
@@ -24,6 +24,7 @@ import javafx.scene.paint.Color;
 import javafx.stage.Screen;
 import javafx.stage.Stage;
 import no.ntnu.idatt1002.demo.data.Budget.FileHandlingBudget;
+import no.ntnu.idatt1002.demo.data.Budget.FileHandlingSelectedBudget;
 import no.ntnu.idatt1002.demo.data.Budget.GeneralBudget;
 import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory;
 import no.ntnu.idatt1002.demo.data.Economics.ExpenseRegister;
@@ -104,9 +105,12 @@ public class MainMenu {
   public void initialize() {
     //Initialize all registers + overview
     try {
-      incomeRegister = loadIncomeDataFromFile("Income");
-      expenseRegister = loadExpenseDataFromFile("Expense");
-      generalBudget = loadBudgetDataFromFile("Budget");
+      incomeRegister = loadIncomeDataFromFile(
+          "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Income");
+      expenseRegister = loadExpenseDataFromFile(
+          "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Expense");
+      generalBudget = loadBudgetDataFromFile(
+          "budgets/" + FileHandlingSelectedBudget.readSelectedBudget() + "/Budget");
     } catch (IOException ioe) {
       Alert alert = new Alert(AlertType.ERROR);
       alert.setTitle("Could not load register data");
@@ -164,17 +168,17 @@ public class MainMenu {
 
   /**
    * Method that either reads data from a file with which it fills an income register, if older changes exist, or instantiates an income register if the file is empty.
-   * @param fileName The name of the file that is being read from.
+   * @param fileDestination The name of the file that is being read from.
    * @return An object of type IncomeRegister.
    * @throws IOException If an error occurs while reading from the file.
    */
-  public IncomeRegister loadIncomeDataFromFile(String fileName) throws IOException {
+  public IncomeRegister loadIncomeDataFromFile(String fileDestination) throws IOException {
     //Instantiate incomeRegister
-    if (FileHandling.isEmpty(fileName)) {
+    if (FileHandling.isEmpty(fileDestination)) {
       incomeRegister = new IncomeRegister();
     } else { //Load previous income register
       try {
-        incomeRegister = FileHandling.readIncomeRegisterFromFile(fileName);
+        incomeRegister = FileHandling.readIncomeRegisterFromFile(fileDestination);
       } catch (IOException e) {
         e.printStackTrace();
       }
@@ -184,17 +188,17 @@ public class MainMenu {
 
   /**
    * Method that either reads data from a file with which it fills an expense register, if older changes exist, or instantiates an expense register if the file is empty.
-   * @param fileName The name of the file that is being read from.
+   * @param fileDestination The name of the file that is being read from.
    * @return An object of type IncomeRegister.
    * @throws IOException If an error occurs while reading from the file.
    */
-  public ExpenseRegister loadExpenseDataFromFile(String fileName) throws IOException {
+  public ExpenseRegister loadExpenseDataFromFile(String fileDestination) throws IOException {
     //Instantiate expense register
-    if (FileHandling.isEmpty(fileName)) {
+    if (FileHandling.isEmpty(fileDestination)) {
       expenseRegister = new ExpenseRegister();
     } else {
       try {
-        expenseRegister = FileHandling.readExpenseRegisterFromFile(fileName);
+        expenseRegister = FileHandling.readExpenseRegisterFromFile(fileDestination);
       } catch (IOException e) {
         e.printStackTrace();
       }
@@ -204,18 +208,18 @@ public class MainMenu {
 
   /**
    * Method that either reads data from a file with which it fills a budget register, if this is an old budget, or instantiates a budget register if this is a new budget.
-   * @param fileName The name of the file that is being read from.
+   * @param fileDestination The name of the file that is being read from.
    * @return An object of type GeneralBudget.
    * @throws IOException If an error occurs while reading from the file.
    */
-  public GeneralBudget loadBudgetDataFromFile(String fileName) throws IOException {
+  public GeneralBudget loadBudgetDataFromFile(String fileDestination) throws IOException {
     //Instantiate new budget
-    if (FileHandlingBudget.isEmpty(fileName)) {
+    if (FileHandlingBudget.isEmpty(fileDestination)) {
       System.out.println("hey");
       generalBudget = new GeneralBudget(1000);
     } else { //Load previous budget
       try {
-        generalBudget = FileHandlingBudget.readGeneralBudgetFromFile(fileName);
+        generalBudget = FileHandlingBudget.readGeneralBudgetFromFile(fileDestination);
       } catch (IOException e) {
         e.printStackTrace();
       }
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 2017bfea..938ae9c7 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
@@ -15,7 +15,7 @@ public class FileHandlingBudget {
     private static final String filePath = "src/main/resources/budgets/Budget/";
     private static final String fileType = ".budget";
 
-    private static final String path = "src/main/resources/budgets/";
+    private static final String path = "src/main/resources/";
     private static final String type = ".register";
     private static final String maxAmount = "maxAmount=";
     private static final String budgetAmount = "budgetAmount=";
@@ -31,7 +31,7 @@ public class FileHandlingBudget {
      * @throws IOException if an input or output exception occurred.
      */
     public static void writeGeneralBudgetToFile(String fileTitle, GeneralBudget generalBudget) throws IOException {
-        try (BufferedWriter bw = new BufferedWriter(new FileWriter(path + FileHandlingSelectedBudget.readSelectedBudget() + "/" + fileTitle + fileType))) {
+        try (BufferedWriter bw = new BufferedWriter(new FileWriter(path + fileTitle + fileType))) {
         //try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath + fileTitle + fileType))) {
             bw.write(generalBudget.toString());
         } catch (IOException ex) {
@@ -51,7 +51,7 @@ public class FileHandlingBudget {
         /*try (BufferedReader br = new BufferedReader(new FileReader(filePath + fileTitle + fileType))) {
             return br.readLine() == null;
         }*/
-        try (BufferedReader br = new BufferedReader(new FileReader(path + FileHandlingSelectedBudget.readSelectedBudget() + "/" + fileTitle + fileType))) {
+        try (BufferedReader br = new BufferedReader(new FileReader(path + fileTitle + fileType))) {
             System.out.println("Trying budget isEmpty in: " + path + FileHandlingSelectedBudget.readSelectedBudget() + "/" + fileTitle + fileType);
             return br.readLine() == null;
         }
@@ -67,7 +67,7 @@ public class FileHandlingBudget {
      */
     public static boolean isNewBudget(String fileTitle) throws IOException {
         try (BufferedReader br = new BufferedReader(
-            new FileReader(path + FileHandlingSelectedBudget.readSelectedBudget() + "/" + fileTitle + fileType))) {
+            new FileReader(path + fileTitle + fileType))) {
             //new FileReader(filePath + fileTitle + fileType))) {
 
             for (int i = 0; i < 2; ++i) {
@@ -85,7 +85,7 @@ public class FileHandlingBudget {
     
     public static void writeMaxAmountToFile(String fileDestination, String maxAmount) throws IOException {
         try (BufferedWriter bw = new BufferedWriter(new FileWriter(path
-            + fileDestination + "/Budget" + fileType))) {
+            + fileDestination + fileType))) {
             bw.write("maxAmount=" + maxAmount);
             System.out.println("Max amount is...");
         } catch (IOException ex) {
@@ -107,7 +107,7 @@ public class FileHandlingBudget {
         ExpenseCategory expenseCategory = null;
         String budgetDescription = null;
 
-        try (BufferedReader br = new BufferedReader(new FileReader( System.getProperty("user.dir") + "/" + path + FileHandlingSelectedBudget.readSelectedBudget() + "/" + fileTitle + fileType))) {
+        try (BufferedReader br = new BufferedReader(new FileReader(path + fileTitle + fileType))) {
             String line;
             String nextLine = br.readLine();
             while ((line = nextLine) != null) {
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudgetArchive.java b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudgetArchive.java
index a5fe1c05..5d0541c2 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudgetArchive.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FileHandlingBudgetArchive.java
@@ -8,6 +8,7 @@ import java.io.FileWriter;
 import java.io.IOException;
 
 //Disable next i dualList før income har blitt lagt til. Kanksje filter som prevneter negativ max amount (if balance < 1)
+//MÅTE Å FIKSE TESTER PÅ: LA SELECTEDBUDGET.CURRENT VÆRE EN PARAMETER I METODENE
 //Disable next i newBudgetbert til maxamount har blitt burkt opp
 //Sette label til total balance i dualList
 //HVIS CONTINUE I BUDGET PRESSES, SHOWCONFIRMATION
@@ -34,11 +35,10 @@ public class FileHandlingBudgetArchive {
 
   public static void writeBudgetRegisterToArchive(BudgetRegister budgetNames) throws IOException {
     try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath + "Archive" + fileType))) {
-      System.out.println(filePath + "Archive.archive");
       bw.write(budgetNames.toString());
     } catch (IOException ioe) {
       ioe.printStackTrace();
-      throw new IOException("Could not write to file: Archive.archive", ioe);
+      throw new IOException("Could not write to file: Archive", ioe);
     }
   }
 
diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/FileHandling.java b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/FileHandling.java
index a9568b98..27a47003 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Economics/FileHandling.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Economics/FileHandling.java
@@ -18,7 +18,7 @@ import no.ntnu.idatt1002.demo.data.Budget.FileHandlingSelectedBudget;
 public class FileHandling{
     private static final String filePath = "src/main/resources/budgets/Economics/";
 
-    private static final String path = "src/main/resources/budgets/";
+    private static final String path = "src/main/resources/";
     private static final String fileType = ".register";
     private static final String date = "date=";
     private static final String description = "description=";
@@ -35,7 +35,7 @@ public class FileHandling{
      */
     public static <T extends Item>void writeItemRegisterToFile(final ItemRegister<T> itemRegister, String fileTitle) throws IOException {
         //try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath + fileTitle + fileType))) {
-        try (BufferedWriter bw = new BufferedWriter(new FileWriter(path + FileHandlingSelectedBudget.readSelectedBudget() + "/" + fileTitle + fileType))) {
+        try (BufferedWriter bw = new BufferedWriter(new FileWriter(path + fileTitle + fileType))) {
             if (itemRegister.isEmpty()){
                 bw.write("");
             } else{
@@ -61,8 +61,7 @@ public class FileHandling{
                 return false;
             }
         }*/
-
-        try (BufferedReader br = new BufferedReader(new FileReader(path + FileHandlingSelectedBudget.readSelectedBudget() + "/" +  fileTitle + fileType))) {
+        try (BufferedReader br = new BufferedReader(new FileReader(path + fileTitle + fileType))) {
             return br.readLine() == null;
         }
     }
@@ -81,7 +80,7 @@ public class FileHandling{
         double amount = 0;
         boolean reoccuring = false;
         IncomeCategory incomeCategory = null;
-        try (BufferedReader br = new BufferedReader(new FileReader(path + FileHandlingSelectedBudget.readSelectedBudget() + "/" + fileTitle + fileType))) {
+        try (BufferedReader br = new BufferedReader(new FileReader(path + fileTitle + fileType))) {
         //try (BufferedReader br = new BufferedReader(new FileReader(filePath + fileTitle + fileType))) {
             String line;
             String nextLine = br.readLine();
@@ -129,7 +128,7 @@ public class FileHandling{
         double amount = 0;
         boolean reoccuring = false;
         ExpenseCategory expenseCategory = null;
-        try (BufferedReader br = new BufferedReader(new FileReader(path + FileHandlingSelectedBudget.readSelectedBudget() + "/" + fileTitle + fileType))) {
+        try (BufferedReader br = new BufferedReader(new FileReader(path + fileTitle + fileType))) {
             //try (BufferedReader br = new BufferedReader(new FileReader(filePath + fileTitle + fileType))) {
             String line;
             String nextLine = br.readLine();
-- 
GitLab