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