Skip to content
Snippets Groups Projects
Commit cea45c80 authored by Andreas's avatar Andreas
Browse files

Implemented GeneralBudget budgetPeriod set to amount days left in month

parent 981200ef
No related branches found
No related tags found
2 merge requests!43Merging frontend-testing into master,!39GeneralBudget set BudgetPeriod to be days left of month, and made FileHandling methods static.
Pipeline #215938 passed
...@@ -304,7 +304,7 @@ public class BudgetController implements FinanceController { ...@@ -304,7 +304,7 @@ public class BudgetController implements FinanceController {
FileHandlingBudget fileHandlingBudget = new FileHandlingBudget(); FileHandlingBudget fileHandlingBudget = new FileHandlingBudget();
//Instantiate new budget //Instantiate new budget
if (fileHandlingBudget.isEmpty(fileName)) { if (fileHandlingBudget.isEmpty(fileName)) {
general = new GeneralBudget(31, 1000); general = new GeneralBudget(1000);
//throws new IOException("Not valid budget") //throws new IOException("Not valid budget")
} else { //Load previous budget } else { //Load previous budget
try { try {
......
...@@ -565,7 +565,7 @@ public class IncomeExpenseController implements FinanceController { ...@@ -565,7 +565,7 @@ public class IncomeExpenseController implements FinanceController {
//Instantiate new budget //Instantiate new budget
try { try {
if (fileHandling.isEmpty(fileName)) { if (fileHandling.isEmpty(fileName)) {
generalBudget = new GeneralBudget(31, 1000); generalBudget = new GeneralBudget(1000);
} else { //Load previous income register } else { //Load previous income register
generalBudget = fileHandlingBudget.readGeneralBudgetFromFile(fileName); generalBudget = fileHandlingBudget.readGeneralBudgetFromFile(fileName);
} }
......
...@@ -210,7 +210,7 @@ public class MainMenu { ...@@ -210,7 +210,7 @@ public class MainMenu {
FileHandlingBudget fileHandlingBudget = new FileHandlingBudget(); FileHandlingBudget fileHandlingBudget = new FileHandlingBudget();
//Instantiate new budget //Instantiate new budget
if (fileHandlingBudget.isEmpty(fileName)) { if (fileHandlingBudget.isEmpty(fileName)) {
generalBudget = new GeneralBudget(31, 1000); generalBudget = new GeneralBudget(1000);
} else { //Load previous budget } else { //Load previous budget
try { try {
generalBudget = fileHandlingBudget.readGeneralBudgetFromFile(fileName); generalBudget = fileHandlingBudget.readGeneralBudgetFromFile(fileName);
......
...@@ -3,8 +3,6 @@ package no.ntnu.idatt1002.demo.data.Budget; ...@@ -3,8 +3,6 @@ package no.ntnu.idatt1002.demo.data.Budget;
import no.ntnu.idatt1002.demo.data.Economics.*; import no.ntnu.idatt1002.demo.data.Economics.*;
import java.io.*; import java.io.*;
import java.time.LocalDate;
import java.util.ArrayList;
/** /**
* FileHandling is a class for writing and reading * FileHandling is a class for writing and reading
...@@ -15,7 +13,6 @@ import java.util.ArrayList; ...@@ -15,7 +13,6 @@ import java.util.ArrayList;
public class FileHandlingBudget { public class FileHandlingBudget {
private static final String filePath = "src/main/resources/Budget/"; private static final String filePath = "src/main/resources/Budget/";
private static final String fileType = ".budget"; private static final String fileType = ".budget";
private static final String budgetPeriod = "budgetPeriod=";
private static final String maxAmount = "maxAmount="; private static final String maxAmount = "maxAmount=";
private static final String budgetAmount = "budgetAmount="; private static final String budgetAmount = "budgetAmount=";
private static final String budgetCategory = "budgetCategory="; private static final String budgetCategory = "budgetCategory=";
...@@ -45,11 +42,7 @@ public class FileHandlingBudget { ...@@ -45,11 +42,7 @@ public class FileHandlingBudget {
*/ */
public boolean isEmpty(String fileTitle) throws IOException { public boolean isEmpty(String fileTitle) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filePath + fileTitle + fileType))) { try (BufferedReader br = new BufferedReader(new FileReader(filePath + fileTitle + fileType))) {
if (br.readLine() == null) { return br.readLine() == null;
return true;
} else {
return false;
}
} }
} }
...@@ -62,9 +55,7 @@ public class FileHandlingBudget { ...@@ -62,9 +55,7 @@ public class FileHandlingBudget {
*/ */
public GeneralBudget readGeneralBudgetFromFile(String fileTitle) throws IOException { public GeneralBudget readGeneralBudgetFromFile(String fileTitle) throws IOException {
GeneralBudget generalBudget = null; GeneralBudget generalBudget = null;
int budgetPeriod = 0;
double maxAmount = 0; double maxAmount = 0;
ArrayList<BudgetItem> budgetItems = new ArrayList<>();
double budgetAmount = 0; double budgetAmount = 0;
ExpenseCategory expenseCategory = null; ExpenseCategory expenseCategory = null;
String budgetDescription = null; String budgetDescription = null;
...@@ -74,9 +65,7 @@ public class FileHandlingBudget { ...@@ -74,9 +65,7 @@ public class FileHandlingBudget {
String nextLine = br.readLine(); String nextLine = br.readLine();
while ((line = nextLine) != null) { while ((line = nextLine) != null) {
nextLine = br.readLine(); nextLine = br.readLine();
if(line.startsWith(FileHandlingBudget.budgetPeriod)) { if (line.startsWith(FileHandlingBudget.maxAmount)) {
budgetPeriod = Integer.parseInt(line.replace(FileHandlingBudget.budgetPeriod, ""));
} else if (line.startsWith(FileHandlingBudget.maxAmount)) {
maxAmount = Double.parseDouble(line.replace(FileHandlingBudget.maxAmount,"")); maxAmount = Double.parseDouble(line.replace(FileHandlingBudget.maxAmount,""));
} else if (line.startsWith(FileHandlingBudget.budgetAmount)) { } else if (line.startsWith(FileHandlingBudget.budgetAmount)) {
budgetAmount = Double.parseDouble(line.replace(FileHandlingBudget.budgetAmount,"")); budgetAmount = Double.parseDouble(line.replace(FileHandlingBudget.budgetAmount,""));
...@@ -93,7 +82,7 @@ public class FileHandlingBudget { ...@@ -93,7 +82,7 @@ public class FileHandlingBudget {
} }
if (line.isEmpty() || (nextLine == null)) { if (line.isEmpty() || (nextLine == null)) {
if(generalBudget == null){ if(generalBudget == null){
generalBudget = new GeneralBudget(budgetPeriod,maxAmount); generalBudget = new GeneralBudget(maxAmount);
} else{ } else{
generalBudget.addToBudget(budgetAmount,budgetDescription,expenseCategory); generalBudget.addToBudget(budgetAmount,budgetDescription,expenseCategory);
} }
......
...@@ -3,15 +3,9 @@ package no.ntnu.idatt1002.demo.data.Budget; ...@@ -3,15 +3,9 @@ package no.ntnu.idatt1002.demo.data.Budget;
import java.util.Arrays; import java.util.Arrays;
import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory; import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory;
import java.sql.Date;
import java.time.Duration;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.Month; 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.ArrayList;
import java.util.Calendar;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -22,25 +16,31 @@ import java.util.Objects; ...@@ -22,25 +16,31 @@ import java.util.Objects;
*/ */
public class GeneralBudget { 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; private final List<BudgetItem> budgetItems;
/**
* The max amount of the budget.
*/
private final double maxAmount; private final double maxAmount;
/** /**
* Class constructor. * Class constructor.
* *
* @param budgetPeriod the period the budget is going to last for.
* @param budgetItems a List of BudgetItems. * @param budgetItems a List of BudgetItems.
* @param maxAmount the max amount of the budget. * @param maxAmount the max amount of the budget.
* *
*/ */
public GeneralBudget(int budgetPeriod, List<BudgetItem> budgetItems, double maxAmount) { public GeneralBudget(List<BudgetItem> budgetItems, double maxAmount) {
if (budgetPeriod <= 0) { if (maxAmount < 0) {
throw new IllegalArgumentException("The period can´t be under zero days");
} else if (maxAmount < 0) {
throw new IllegalArgumentException("The max amount of the budget cant be less than zero"); throw new IllegalArgumentException("The max amount of the budget cant be less than zero");
} else { } else {
this.budgetPeriod = budgetPeriod;
this.maxAmount = maxAmount; this.maxAmount = maxAmount;
this.budgetItems = budgetItems; this.budgetItems = budgetItems;
} }
...@@ -50,17 +50,12 @@ public class GeneralBudget { ...@@ -50,17 +50,12 @@ public class GeneralBudget {
* Class constructor that creates an empty * Class constructor that creates an empty
* ArrayList for storing BudgetItems * ArrayList for storing BudgetItems
* *
* @param budgetPeriod the period the budget is going to last for.
* @param maxAmount the max amount of the budget. * @param maxAmount the max amount of the budget.
*/ */
public GeneralBudget(int budgetPeriod, double maxAmount) { public GeneralBudget(double maxAmount) {
if (budgetPeriod <= 0) {
throw new IllegalArgumentException("The period can´t be under zero days");
}
if (maxAmount < 0) { if (maxAmount < 0) {
throw new IllegalArgumentException("The max amount of the budget cant be less than zero"); throw new IllegalArgumentException("The max amount of the budget cant be less than zero");
} else { } else {
this.budgetPeriod = budgetPeriod;
this.maxAmount = maxAmount; this.maxAmount = maxAmount;
this.budgetItems = new ArrayList<>(); this.budgetItems = new ArrayList<>();
} }
...@@ -117,7 +112,7 @@ public class GeneralBudget { ...@@ -117,7 +112,7 @@ public class GeneralBudget {
* @return the amount of days left in the budget period * @return the amount of days left in the budget period
* *
*/ */
public long getDaysLeftOfBudgetPeriod() { public int getDaysLeftOfBudgetPeriod() {
Month thisMonth = LocalDate.now().getMonth(); Month thisMonth = LocalDate.now().getMonth();
int dayOfTheMonth = LocalDate.now().getDayOfMonth(); int dayOfTheMonth = LocalDate.now().getDayOfMonth();
...@@ -224,9 +219,9 @@ public class GeneralBudget { ...@@ -224,9 +219,9 @@ public class GeneralBudget {
budgetItemsString.append(budgetItem+"\n\n"); budgetItemsString.append(budgetItem+"\n\n");
} }
if(budgetItemsString.isEmpty()) { if(budgetItemsString.isEmpty()) {
return "budgetPeriod="+getBudgetPeriod()+"\nmaxAmount="+getMaxAmount()+"\n\n"; return "maxAmount="+getMaxAmount()+"\n\n";
} else { } else {
return "budgetPeriod="+getBudgetPeriod()+"\nmaxAmount="+getMaxAmount()+"\n\n"+budgetItemsString; return "maxAmount="+getMaxAmount()+"\n\n"+budgetItemsString;
} }
} }
......
...@@ -26,7 +26,7 @@ class FileHandlingBudgetTest { ...@@ -26,7 +26,7 @@ class FileHandlingBudgetTest {
@Nested @Nested
@DisplayName("FileHandling budget with one BudgetItem does not throw exception") @DisplayName("FileHandling budget with one BudgetItem does not throw exception")
class fileHandlingBudgetWithOneBudgetItemDoesNotThrowException{ class fileHandlingBudgetWithOneBudgetItemDoesNotThrowException{
GeneralBudget generalBudget = new GeneralBudget(12, 1200); GeneralBudget generalBudget = new GeneralBudget(1200);
String fileTitle = "oneBudgetItemTest"; String fileTitle = "oneBudgetItemTest";
@BeforeEach @BeforeEach
...@@ -50,7 +50,7 @@ class FileHandlingBudgetTest { ...@@ -50,7 +50,7 @@ class FileHandlingBudgetTest {
@Nested @Nested
@DisplayName("FileHandling budget with multiple BudgetItems does not throw exception") @DisplayName("FileHandling budget with multiple BudgetItems does not throw exception")
class FileHandlingBudgetWithMultipleBudgetItemsDoesNotThrowException{ class FileHandlingBudgetWithMultipleBudgetItemsDoesNotThrowException{
GeneralBudget generalBudget = new GeneralBudget(12, 1200); GeneralBudget generalBudget = new GeneralBudget(1200);
String fileTitle = "multipleBudgetItem"; String fileTitle = "multipleBudgetItem";
@BeforeEach @BeforeEach
void createGeneralBudget(){ void createGeneralBudget(){
......
...@@ -11,27 +11,19 @@ import java.util.List; ...@@ -11,27 +11,19 @@ import java.util.List;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
class GeneralBudgetTest { 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 @Test
@DisplayName("Constructor throws exception when maxAmount is under zero") @DisplayName("Constructor throws exception when maxAmount is under zero")
void constructor_throws_exception_when_maxAmount_under_zero(){ void constructor_throws_exception_when_maxAmount_under_zero(){
List<BudgetItem> list = new ArrayList<>(); List<BudgetItem> list = new ArrayList<>();
assertThrows(IllegalArgumentException.class, () -> new GeneralBudget(10, list, -12)); assertThrows(IllegalArgumentException.class, () -> new GeneralBudget(list, -12));
} }
@Test @Test
@DisplayName("AddToBudget throws when totalSum is higher than maxAmount ") @DisplayName("AddToBudget throws when totalSum is higher than maxAmount ")
void add_to_budget_throws_when_totalSum_is_over_maxAmount(){ void add_to_budget_throws_when_totalSum_is_over_maxAmount(){
List<BudgetItem> list = new ArrayList<>(); 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); BudgetItem foodItem = new BudgetItem(1300, "Food", ExpenseCategory.FOOD);
assertThrows(IllegalArgumentException.class, () -> budget1.addToBudgetBudgetItem(foodItem)); assertThrows(IllegalArgumentException.class, () -> budget1.addToBudgetBudgetItem(foodItem));
...@@ -41,7 +33,7 @@ class GeneralBudgetTest { ...@@ -41,7 +33,7 @@ class GeneralBudgetTest {
@DisplayName("addToBudget throws when a budget with same category already exists") @DisplayName("addToBudget throws when a budget with same category already exists")
void add_to_budget_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<>(); 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); BudgetItem foodItem = new BudgetItem(500, "Food", ExpenseCategory.FOOD);
budget1.addToBudgetBudgetItem(foodItem); budget1.addToBudgetBudgetItem(foodItem);
BudgetItem alsoFoodItem = new BudgetItem(200, "Food", ExpenseCategory.FOOD); BudgetItem alsoFoodItem = new BudgetItem(200, "Food", ExpenseCategory.FOOD);
...@@ -53,7 +45,7 @@ class GeneralBudgetTest { ...@@ -53,7 +45,7 @@ class GeneralBudgetTest {
@DisplayName("Adds a budget to generalBudget") @DisplayName("Adds a budget to generalBudget")
void add_budget_to_generalBudget(){ void add_budget_to_generalBudget(){
List<BudgetItem> list = new ArrayList<>(); 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); BudgetItem foodItem = new BudgetItem(500, "Food", ExpenseCategory.FOOD);
budget1.addToBudgetBudgetItem(foodItem); budget1.addToBudgetBudgetItem(foodItem);
...@@ -64,7 +56,7 @@ class GeneralBudgetTest { ...@@ -64,7 +56,7 @@ class GeneralBudgetTest {
@DisplayName("Checks if the list contains a item with a given category") @DisplayName("Checks if the list contains a item with a given category")
void checks_if_the_list_contains_an_item_with_this_category_true(){ void checks_if_the_list_contains_an_item_with_this_category_true(){
List<BudgetItem> list = new ArrayList<>(); 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); BudgetItem foodItem = new BudgetItem(500, "Food", ExpenseCategory.FOOD);
budget1.addToBudgetBudgetItem(foodItem); budget1.addToBudgetBudgetItem(foodItem);
...@@ -75,7 +67,7 @@ class GeneralBudgetTest { ...@@ -75,7 +67,7 @@ class GeneralBudgetTest {
@DisplayName("checks that the list does not contain an item with the given category") @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(){ void checks_if_the_list_contains_an_item_with_this_category_false(){
List<BudgetItem> list = new ArrayList<>(); 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 bookItem = new BudgetItem(500, "Books", ExpenseCategory.BOOKS);
budget1.addToBudgetBudgetItem(bookItem); budget1.addToBudgetBudgetItem(bookItem);
...@@ -86,7 +78,7 @@ class GeneralBudgetTest { ...@@ -86,7 +78,7 @@ class GeneralBudgetTest {
@DisplayName("Checks that the getTotalSum gives the correct number") @DisplayName("Checks that the getTotalSum gives the correct number")
void get_total_sum_of_all_budgetItems_in_the_budget(){ void get_total_sum_of_all_budgetItems_in_the_budget(){
List<BudgetItem> list = new ArrayList<>(); 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 bookItem = new BudgetItem(500, "Books", ExpenseCategory.BOOKS);
BudgetItem foodItem = new BudgetItem(300, "Food", ExpenseCategory.FOOD); BudgetItem foodItem = new BudgetItem(300, "Food", ExpenseCategory.FOOD);
budget1.addToBudgetBudgetItem(bookItem); budget1.addToBudgetBudgetItem(bookItem);
...@@ -99,7 +91,7 @@ class GeneralBudgetTest { ...@@ -99,7 +91,7 @@ class GeneralBudgetTest {
@DisplayName("Checks that an item gets deleted from the budget") @DisplayName("Checks that an item gets deleted from the budget")
void delete_from_budget(){ void delete_from_budget(){
List<BudgetItem> list = new ArrayList<>(); 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 bookItem = new BudgetItem(500, "Books", ExpenseCategory.BOOKS);
budget1.addToBudgetBudgetItem(bookItem); budget1.addToBudgetBudgetItem(bookItem);
budget1.deleteItemFromBudget(ExpenseCategory.BOOKS); budget1.deleteItemFromBudget(ExpenseCategory.BOOKS);
...@@ -115,7 +107,7 @@ class GeneralBudgetTest { ...@@ -115,7 +107,7 @@ class GeneralBudgetTest {
@BeforeEach @BeforeEach
void setUp() { void setUp() {
list = new ArrayList<>(); list = new ArrayList<>();
budget = new GeneralBudget(12, list, 1200); budget = new GeneralBudget(list, 1200);
budget.addToBudget(10, "Books", ExpenseCategory.BOOKS); budget.addToBudget(10, "Books", ExpenseCategory.BOOKS);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment