From c6bf07e222d857120ab409a1da76f2174648c42c Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 20 Jan 2019 11:44:06 +0100
Subject: [PATCH] #268 - added account name to pdf

---
 .../controller/ReportController.java          | 21 +++++++++++++++----
 .../reports/ReportConfiguration.java          | 10 ++++++++-
 .../reports/ReportConfigurationBuilder.java   | 10 +++++++--
 .../report/ReportGeneratorService.java        |  4 ++++
 .../budgetmaster/utils/Strings.java           |  2 +-
 src/main/resources/languages/_de.properties   |  1 +
 src/main/resources/languages/_en.properties   |  1 +
 7 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java
index ff1d0cde9..bca8c7b38 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/ReportController.java
@@ -3,6 +3,7 @@ package de.deadlocker8.budgetmaster.controller;
 import com.itextpdf.text.DocumentException;
 import de.deadlocker8.budgetmaster.entities.Transaction;
 import de.deadlocker8.budgetmaster.entities.account.Account;
+import de.deadlocker8.budgetmaster.entities.account.AccountType;
 import de.deadlocker8.budgetmaster.entities.report.ReportColumn;
 import de.deadlocker8.budgetmaster.entities.report.ReportSettings;
 import de.deadlocker8.budgetmaster.reports.Budget;
@@ -66,6 +67,7 @@ public class ReportController extends BaseController
 	public String post(HttpServletResponse response,
 					   @ModelAttribute("NewReportSettings") ReportSettings reportSettings)
 	{
+		//save new report settings
 		reportSettingsService.getRepository().delete(0);
 		for(ReportColumn reportColumn : reportSettings.getColumns())
 		{
@@ -74,10 +76,14 @@ public class ReportController extends BaseController
 		reportSettingsService.getRepository().save(reportSettings);
 
 
-		LOGGER.debug("Exporting month report...");
-
-		//TODO handle all accounts
+		//prepare generation
 		Account account = helpers.getCurrentAccount();
+		String accountName = account.getName();
+		if(account.getType().equals(AccountType.ALL))
+		{
+			accountName = Localization.getString("account.all");
+		}
+
 		List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(account, reportSettings.getDate().getMonthOfYear(), reportSettings.getDate().getYear(), settingsService.getSettings().isRestActivated());
 		Budget budget = new Budget(helpers.getIncomeSumForTransactionList(transactions), helpers.getExpenditureSumForTransactionList(transactions));
 
@@ -85,13 +91,20 @@ public class ReportController extends BaseController
 				.setBudget(budget)
 				.setReportSettings(reportSettings)
 				.setTransactions(transactions)
+				.setAccountName(accountName)
 				.setCategoryBudgets(new ArrayList<>())
 				.createReportConfiguration();
 
+		String month = reportSettings.getDate().toString("MM");
+		String year = reportSettings.getDate().toString("YYYY");
+
+		LOGGER.debug("Exporting month report (month: {0}_{1}, account: {2})...", year, month, accountName);
+
+		//generate PDF
 		try
 		{
 			byte[] dataBytes = reportGeneratorService.generate(reportConfiguration);
-			String fileName = Localization.getString("report.initial.filename", reportSettings.getDate().toString("YYYY"), reportSettings.getDate().toString("MM"), account.getName());
+			String fileName = Localization.getString("report.initial.filename", year, month, account.getName());
 			response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
 
 			response.setContentType("application/pdf; charset=UTF-8");
diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java
index 14656d1f7..295c578c2 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfiguration.java
@@ -8,13 +8,15 @@ import java.util.List;
 public class ReportConfiguration
 {
 	private List<Transaction> transactions;
+	private String accountName;
 	private List<CategoryBudget> categoryBudgets;
 	private ReportSettings reportSettings;
 	private Budget budget;
 
-	public ReportConfiguration(List<Transaction> transactions, List<CategoryBudget> categoryBudgets, ReportSettings reportSettings, Budget budget)
+	public ReportConfiguration(List<Transaction> transactions, String accountName, List<CategoryBudget> categoryBudgets, ReportSettings reportSettings, Budget budget)
 	{
 		this.transactions = transactions;
+		this.accountName = accountName;
 		this.categoryBudgets = categoryBudgets;
 		this.reportSettings = reportSettings;
 		this.budget = budget;
@@ -30,6 +32,11 @@ public class ReportConfiguration
 		return categoryBudgets;
 	}
 
+	public String getAccountName()
+	{
+		return accountName;
+	}
+
 	public ReportSettings getReportSettings()
 	{
 		return reportSettings;
@@ -45,6 +52,7 @@ public class ReportConfiguration
 	{
 		return "ReportConfiguration{" +
 				"transactions=" + transactions +
+				", accountName='" + accountName + '\'' +
 				", categoryBudgets=" + categoryBudgets +
 				", reportSettings=" + reportSettings +
 				", budget=" + budget +
diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java
index 793bc9945..bf9366ec1 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportConfigurationBuilder.java
@@ -3,12 +3,12 @@ package de.deadlocker8.budgetmaster.reports;
 import de.deadlocker8.budgetmaster.entities.Transaction;
 import de.deadlocker8.budgetmaster.entities.report.ReportSettings;
 
-import java.util.ArrayList;
 import java.util.List;
 
 public class ReportConfigurationBuilder
 {
 	private List<Transaction> transactions;
+	private String accountName;
 	private List<CategoryBudget> categoryBudgets;
 	private ReportSettings reportSettings;
 	private Budget budget;
@@ -19,6 +19,12 @@ public class ReportConfigurationBuilder
 		return this;
 	}
 
+	public ReportConfigurationBuilder setAccountName(String accountName)
+	{
+		this.accountName = accountName;
+		return this;
+	}
+
 	public ReportConfigurationBuilder setCategoryBudgets(List<CategoryBudget> categoryBudgets)
 	{
 		this.categoryBudgets = categoryBudgets;
@@ -39,6 +45,6 @@ public class ReportConfigurationBuilder
 
 	public ReportConfiguration createReportConfiguration()
 	{
-		return new ReportConfiguration(transactions, categoryBudgets, reportSettings, budget);
+		return new ReportConfiguration(transactions, accountName, categoryBudgets, reportSettings, budget);
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java b/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java
index a85f3ec1b..200d9bbfd 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/report/ReportGeneratorService.java
@@ -37,6 +37,10 @@ public class ReportGeneratorService
 		Chunk chunk = new Chunk(Localization.getString(Strings.REPORT_HEADLINE, reportConfiguration.getReportSettings().getDate().toString("MMMM yyyy")), font);
 		Chapter chapter = new Chapter(new Paragraph(chunk), 1);
 		chapter.setNumberDepth(0);
+
+		Font fontAccount = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 14, Font.BOLD, BaseColor.BLACK);
+		Chunk chunkAccount = new Chunk(Localization.getString(Strings.REPORT_HEADLINE_ACCOUNT, reportConfiguration.getAccountName()), fontAccount);
+		chapter.add(chunkAccount);
 		chapter.add(Chunk.NEWLINE);
 		return chapter;
 	}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java
index 0ea9e82c5..f0938bb59 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java
@@ -62,12 +62,12 @@ public class Strings
     public static final String REPORT_RATING = "report.rating";
     public static final String REPORT_AMOUNT = "report.amount";
     public static final String REPORT_HEADLINE = "report.headline";
+    public static final String REPORT_HEADLINE_ACCOUNT = "report.headline.account";
     public static final String REPORT_HEADLINE_TRANSACTIONS_OVERVIEW = "report.headline.transactions.overview";
     public static final String REPORT_SUM_TOTAL = "report.sum.total";
     public static final String REPORT_SUM = "report.sum";
     public static final String REPORT_REPEATING_YES ="report.repeating.yes";
     public static final String REPORT_REPEATING_NO ="report.repeating.no";
-    public static final String REPORT_INITIAL_FILENAME ="report.initial.filename";
     public static final String REPORT_BUDGET = "report.budget";
     public static final String REPORT_INCOMES = "report.incomes";
     public static final String REPORT_PAYMENTS = "report.expenditures";
diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties
index 77a79d38a..dbcac04ec 100644
--- a/src/main/resources/languages/_de.properties
+++ b/src/main/resources/languages/_de.properties
@@ -222,6 +222,7 @@ report.account=Konto
 report.rating=+/-
 report.amount=Betrag
 report.headline=Monatsbericht - {0}
+report.headline.account=Konto: {0}
 report.headline.transactions.overview=Buchungs�bersicht
 report.sum.total=Einnahmen: {0} / Ausgaben: {1}
 report.sum=Summe: {0}
diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties
index c81e09668..495a1f7f9 100644
--- a/src/main/resources/languages/_en.properties
+++ b/src/main/resources/languages/_en.properties
@@ -221,6 +221,7 @@ report.account=Account
 report.rating=+/-
 report.amount=Amount
 report.headline=Month Report - {0}
+report.headline.account=Account: {0}
 report.headline.transactions.overview=Transactions Overview
 report.sum.total=Incomes: {0} / Expenditures: {1}
 report.sum=Total: {0}
-- 
GitLab