From 8dc266c21d27ab91ae0277ba536ae2ba45914efc Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 16 Oct 2022 10:53:46 +0200
Subject: [PATCH] #721 - added new fields "startDate" and "endDate" to search
 settings

---
 .../budgetmaster/search/Search.java           | 37 +++++++++++++++++--
 .../TransactionSearchSpecificationsTest.java  | 30 +++++++--------
 2 files changed, 48 insertions(+), 19 deletions(-)

diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/search/Search.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/search/Search.java
index 221494b7e..1587f38a3 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/search/Search.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/search/Search.java
@@ -1,8 +1,10 @@
 package de.deadlocker8.budgetmaster.search;
 
+import java.time.LocalDate;
+
 public class Search
 {
-	public static final Search DEFAULT = new Search("", true, true, true, true, false, 0);
+	public static final Search DEFAULT = new Search("", true, true, true, true, false, 0, null, null);
 
 	private String searchText;
 	private boolean searchName;
@@ -11,6 +13,8 @@ public class Search
 	private boolean searchTags;
 	private boolean includeHiddenAccounts;
 	private int page;
+	private LocalDate startDate;
+	private LocalDate endDate;
 
 	public Search()
 	{
@@ -18,7 +22,7 @@ public class Search
 		this.page = 0;
 	}
 
-	public Search(String searchText, boolean searchName, boolean searchDescription, boolean searchCategory, boolean searchTags, boolean includeHiddenAccounts, int page)
+	public Search(String searchText, boolean searchName, boolean searchDescription, boolean searchCategory, boolean searchTags, boolean includeHiddenAccounts, int page, LocalDate startDate, LocalDate endDate)
 	{
 		this.searchText = searchText;
 		this.searchName = searchName;
@@ -27,6 +31,8 @@ public class Search
 		this.searchTags = searchTags;
 		this.includeHiddenAccounts = includeHiddenAccounts;
 		this.page = page;
+		this.startDate = startDate;
+		this.endDate = endDate;
 	}
 
 	public String getSearchText()
@@ -99,8 +105,29 @@ public class Search
 		this.page = page;
 	}
 
-	public boolean isEmptySearch(){
-		return !searchName && !searchDescription && !searchCategory && !searchTags;
+	public LocalDate getStartDate()
+	{
+		return startDate;
+	}
+
+	public void setStartDate(LocalDate startDate)
+	{
+		this.startDate = startDate;
+	}
+
+	public LocalDate getEndDate()
+	{
+		return endDate;
+	}
+
+	public void setEndDate(LocalDate endDate)
+	{
+		this.endDate = endDate;
+	}
+
+	public boolean isEmptySearch()
+	{
+		return !searchName && !searchDescription && !searchCategory && !searchTags && startDate == null && endDate == null;
 	}
 
 	@Override
@@ -114,6 +141,8 @@ public class Search
 				", searchTags=" + searchTags +
 				", includeHiddenAccounts=" + includeHiddenAccounts +
 				", page=" + page +
+				", startDate=" + startDate +
+				", endDate=" + endDate +
 				'}';
 	}
 }
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
index 125494f27..088e0778d 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
@@ -171,7 +171,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_OnlyName()
 	{
-		Search search = new Search("Test", true, false, false, false, false, 0);
+		Search search = new Search("Test", true, false, false, false, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -182,7 +182,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_PartialName()
 	{
-		Search search = new Search("es", true, false, false, false, false, 0);
+		Search search = new Search("es", true, false, false, false, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -193,7 +193,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_IgnoreCase()
 	{
-		Search search = new Search("tEST", true, true, true, true, false, 0);
+		Search search = new Search("tEST", true, true, true, true, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -204,7 +204,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_OnlyDescription()
 	{
-		Search search = new Search("What", true, true, true, true, false, 0);
+		Search search = new Search("What", true, true, true, true, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -215,7 +215,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_OnlyCategory()
 	{
-		Search search = new Search(category2.getName(), false, false, true, false, false, 0);
+		Search search = new Search(category2.getName(), false, false, true, false, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -227,7 +227,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_Order()
 	{
-		Search search = new Search("", true, true, true, true, false, 0);
+		Search search = new Search("", true, true, true, true, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -242,7 +242,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_Mixed()
 	{
-		Search search = new Search("e", true, true, true, true, false, 0);
+		Search search = new Search("e", true, true, true, true, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -256,7 +256,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_NoMatches()
 	{
-		Search search = new Search("asuzgdzasuiduzasds", true, true, true, true, false, 0);
+		Search search = new Search("asuzgdzasuiduzasds", true, true, true, true, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -266,7 +266,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_SearchNothing()
 	{
-		Search search = new Search("egal", false, false, false, false, false, 0);
+		Search search = new Search("egal", false, false, false, false, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -276,7 +276,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_SearchTagsEquals()
 	{
-		Search search = new Search("MyAwesomeTag", false, false, false, true, false, 0);
+		Search search = new Search("MyAwesomeTag", false, false, false, true, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -287,7 +287,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_SearchTagsLike()
 	{
-		Search search = new Search("Awesome", false, false, false, true, false, 0);
+		Search search = new Search("Awesome", false, false, false, true, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -298,7 +298,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_IgnoreTransactionsFromHiddenAccounts()
 	{
-		Search search = new Search("hidden", true, false, false, false, false, 0);
+		Search search = new Search("hidden", true, false, false, false, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -308,7 +308,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_IncludeTransactionsFromHiddenAccounts()
 	{
-		Search search = new Search("hidden", true, false, false, false, true, 0);
+		Search search = new Search("hidden", true, false, false, false, true, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -318,7 +318,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_AvoidDuplicatedEntriesIfSearchTextIsFoundInMultipleCriteria()
 	{
-		Search search = new Search("TagMaster", true, true, true, true, false, 0);
+		Search search = new Search("TagMaster", true, true, true, true, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
@@ -328,7 +328,7 @@ class TransactionSearchSpecificationsTest
 	@Test
 	void getMatches_IgnoreOrderOfSearchWords()
 	{
-		Search search = new Search("TagMaster I the am", true, false, false, false, false, 0);
+		Search search = new Search("TagMaster I the am", true, false, false, false, false, 0, null, null);
 		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
 
 		List<Transaction> results = transactionRepository.findAll(spec);
-- 
GitLab