From 6ea1498b0b55e8616a04c9efe52c73c29597e646 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 30 Jul 2017 16:18:41 +0200 Subject: [PATCH] #60 -include categorybudgets -moved creation of currency string to Helpers --- .../budgetmaster/logic/Helpers.java | 10 +++ .../chartGenerators/BarChartGenerator.java | 2 +- .../CategoriesChartGenerator.java | 2 +- .../chartGenerators/LineChartGenerator.java | 2 +- .../chartGenerators/MonthChartGenerator.java | 5 +- .../chartGenerators/PieChartGenerator.java | 2 +- .../logic/report/ReportGenerator.java | 88 +++++++++++++++---- .../budgetmaster/ui/HomeController.java | 4 +- .../budgetmaster/ui/PaymentController.java | 4 +- .../budgetmaster/ui/ReportController.java | 5 +- .../ui/cells/CategoryBudgetCell.java | 2 +- .../budgetmaster/ui/cells/PaymentCell.java | 2 +- 12 files changed, 98 insertions(+), 30 deletions(-) diff --git a/src/de/deadlocker8/budgetmaster/logic/Helpers.java b/src/de/deadlocker8/budgetmaster/logic/Helpers.java index 79ea1806e..70c73e800 100644 --- a/src/de/deadlocker8/budgetmaster/logic/Helpers.java +++ b/src/de/deadlocker8/budgetmaster/logic/Helpers.java @@ -24,7 +24,17 @@ public class Helpers public static final String COLOR_INCOME = "#22BAD9"; public static final String COLOR_PAYMENT = "#F2612D"; public static final String SALT = "ny9/Y+G|WrJ,82|oIYQQ X %i-sq#4,uA-qKPtwFPnw+s(k2`rV)^-a1|t{D3Z>S"; + + public static String getCurrencyString(int amount, String currency) + { + return String.valueOf(NUMBER_FORMAT.format(amount / 100.0).replace(".", ",")) + " " + currency; + } + public static String getCurrencyString(double amount, String currency) + { + return String.valueOf(NUMBER_FORMAT.format(amount).replace(".", ",")) + " " + currency; + } + public static String getURLEncodedString(String input) { try diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java index c3276887a..6517e2613 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java @@ -63,7 +63,7 @@ public class BarChartGenerator { Tooltip tooltip = new Tooltip(); - tooltip.setText(Helpers.NUMBER_FORMAT.format(data.getYValue()).replace(".", ",") + currency); + tooltip.setText(Helpers.getCurrencyString(data.getYValue().doubleValue(), currency)); Tooltip.install(tool.getNode(), tooltip); Node node = data.getNode(); node.setOnMouseEntered(new EventHandler<MouseEvent>() diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java index fb32bf947..3949d23ec 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java @@ -71,7 +71,7 @@ public class CategoriesChartGenerator currentPart.prefWidthProperty().bind(chart.widthProperty().multiply(percentage)); Tooltip tooltip = new Tooltip(); - tooltip.setText(currentItem.getName() + "\n" + Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.NUMBER_FORMAT.format(value).replace(".", ",") + currency);// + tooltip.setText(currentItem.getName() + "\n" + Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.getCurrencyString(value, currency));// currentPart.setTooltip(tooltip); } diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java index 8888a5bd1..8b6bbb704 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java @@ -62,7 +62,7 @@ public class LineChartGenerator { Tooltip tooltip = new Tooltip(); - tooltip.setText(Helpers.NUMBER_FORMAT.format(data.getYValue()).replace(".", ",") + currency); + tooltip.setText(Helpers.getCurrencyString(data.getYValue().doubleValue(), currency)); Tooltip.install(tool.getNode(), tooltip); Node node = data.getNode(); node.setOnMouseEntered(new EventHandler<MouseEvent>() diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java index 927397b20..f4715f86c 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java @@ -78,8 +78,9 @@ public class MonthChartGenerator private VBox generateChart(ArrayList<CategoryInOutSum> categoryInOutSums, double total, boolean useBudgetIN) { - VBox result = new VBox(); - Label labelAmount = new Label(Helpers.NUMBER_FORMAT.format(getTotal(categoryInOutSums, useBudgetIN)).replace(".", ",") + currency); + VBox result = new VBox(); + + Label labelAmount = new Label(Helpers.getCurrencyString(getTotal(categoryInOutSums, useBudgetIN), currency)); labelAmount.setStyle("-fx-font-size: 12; -fx-font-weight: bold;"); result.getChildren().add(labelAmount); VBox.setMargin(labelAmount, new Insets(0, 0, 10, 0)); diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java index 382d0a77d..d2b527b77 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java @@ -97,7 +97,7 @@ public class PieChartGenerator String percent = String.valueOf(percentage); percent = percent.substring(0, percent.indexOf(".") + 2); - tooltip.setText(percent + " %\n" + Helpers.NUMBER_FORMAT.format(pieValue).replace(".", ",") + currency); + tooltip.setText(percent + " %\n" + Helpers.getCurrencyString(pieValue, currency)); Tooltip.install(tool.getNode(), tooltip); Node node = tool.getNode(); node.setOnMouseEntered(new EventHandler<MouseEvent>() diff --git a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java index 31204a3c3..85c912d33 100644 --- a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java @@ -23,11 +23,13 @@ import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; +import de.deadlocker8.budgetmaster.logic.CategoryBudget; import de.deadlocker8.budgetmaster.logic.Helpers; public class ReportGenerator { private ArrayList<ReportItem> reportItems; + private ArrayList<CategoryBudget> categoryBudgets; private ColumnOrder columnOrder; private boolean splitTable; private boolean includeCategoryBudgets; @@ -35,9 +37,10 @@ public class ReportGenerator private String currency; private DateTime date; - public ReportGenerator(ArrayList<ReportItem> reportItems, ColumnOrder columnOrder, boolean splitTable, boolean includeCategoryBudgets, File savePath, String currency, DateTime date) - { + public ReportGenerator(ArrayList<ReportItem> reportItems, ArrayList<CategoryBudget> categoryBudgets, ColumnOrder columnOrder, boolean splitTable, boolean includeCategoryBudgets, File savePath, String currency, DateTime date) + { this.reportItems = reportItems; + this.categoryBudgets = categoryBudgets; this.columnOrder = columnOrder; this.splitTable = splitTable; this.includeCategoryBudgets = includeCategoryBudgets; @@ -78,11 +81,11 @@ public class ReportGenerator cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); } - + for(ReportItem currentItem : reportItems) { if(currentItem.getAmount() > 0) - { + { totalIncome += currentItem.getAmount(); if(amountType == AmountType.PAYMENT) { @@ -97,7 +100,7 @@ public class ReportGenerator continue; } } - + for(ColumnType column : columnOrder.getColumns()) { PdfPCell cell = new PdfPCell(new Phrase(getProperty(currentItem, column), font)); @@ -105,27 +108,27 @@ public class ReportGenerator cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); } - } - + } + PdfPCell cellTotal; String total = ""; switch(amountType) { case BOTH: - String totalIncomeString = String.valueOf(Helpers.NUMBER_FORMAT.format(totalIncome / 100.0).replace(".", ",")) + " " + currency; - String totalPaymentString = String.valueOf(Helpers.NUMBER_FORMAT.format(totalPayment / 100.0).replace(".", ",")) + " " + currency; + String totalIncomeString = Helpers.getCurrencyString(totalIncome, currency); + String totalPaymentString = Helpers.getCurrencyString(totalPayment, currency); total = "Einnahmen: " + totalIncomeString + " / Ausgaben: " + totalPaymentString; break; case INCOME: - total = "Summe: " + String.valueOf(Helpers.NUMBER_FORMAT.format(totalIncome / 100.0).replace(".", ",")) + " " + currency; + total = "Summe: " + Helpers.getCurrencyString(totalIncome, currency); break; case PAYMENT: - total = "Summe: " + String.valueOf(Helpers.NUMBER_FORMAT.format(totalPayment / 100.0).replace(".", ",")) + " " + currency; + total = "Summe: " + Helpers.getCurrencyString(totalPayment, currency); break; default: break; } - + cellTotal = new PdfPCell(new Phrase(total, font)); cellTotal.setBackgroundColor(new BaseColor(Color.WHITE)); cellTotal.setColspan(numberOfColumns); @@ -144,14 +147,13 @@ public class ReportGenerator writer.setPageEvent(new HeaderFooterPageEvent()); document.open(); document.setMargins(50, 45, 50, 70); + Font paragraphFont = new Font(FontFamily.HELVETICA, 12, Font.NORMAL); document.add(generateHeader()); document.add(Chunk.NEWLINE); if(splitTable) { - Font paragraphFont = new Font(FontFamily.HELVETICA, 12, Font.NORMAL); - document.add(new Paragraph("Einnahmen", paragraphFont)); document.add(Chunk.NEWLINE); PdfPTable table = generateTable(100, AmountType.INCOME); @@ -178,17 +180,71 @@ public class ReportGenerator } } + if(includeCategoryBudgets) + { + document.add(Chunk.NEWLINE); + document.add(new Paragraph("Verbrauch nach Kategorien", paragraphFont)); + document.add(Chunk.NEWLINE); + PdfPTable table = generateCategoryBudgets(); + if(table != null) + { + document.add(table); + } + } + document.close(); } + private PdfPTable generateCategoryBudgets() + { + PdfPTable table = new PdfPTable(2); + table.setWidthPercentage(100); + Font font = new Font(FontFamily.HELVETICA, 8, Font.NORMAL, GrayColor.BLACK); + + //header cells + PdfPCell cellHeaderCategory = new PdfPCell(new Phrase("Kategorie", font)); + cellHeaderCategory.setBackgroundColor(GrayColor.LIGHT_GRAY); + cellHeaderCategory.setHorizontalAlignment(Element.ALIGN_CENTER); + table.addCell(cellHeaderCategory); + PdfPCell cellHeaderAmount = new PdfPCell(new Phrase("Betrag", font)); + cellHeaderAmount.setBackgroundColor(GrayColor.LIGHT_GRAY); + cellHeaderAmount.setHorizontalAlignment(Element.ALIGN_CENTER); + table.addCell(cellHeaderAmount); + + for(CategoryBudget budget : categoryBudgets) + { + String name = budget.getName(); + if(name.equals("NONE")) + { + name = "Keine Kategorie"; + } + PdfPCell cellName = new PdfPCell(new Phrase(name, font)); + cellName.setBackgroundColor(new BaseColor(Color.WHITE)); + cellName.setHorizontalAlignment(Element.ALIGN_CENTER); + table.addCell(cellName); + + PdfPCell cellAmount = new PdfPCell(new Phrase(Helpers.getCurrencyString(budget.getBudget() / 100.0, currency), font)); + cellAmount.setBackgroundColor(new BaseColor(Color.WHITE)); + cellAmount.setHorizontalAlignment(Element.ALIGN_CENTER); + table.addCell(cellAmount); + } + + return table; + } + private String getProperty(ReportItem reportItem, ColumnType columnType) { switch(columnType) { case AMOUNT: - return String.valueOf(Helpers.NUMBER_FORMAT.format(reportItem.getAmount() / 100.0).replace(".", ",")) + " " + currency; + return Helpers.getCurrencyString(reportItem.getAmount(), currency); case CATEGORY: - return reportItem.getCategory().getName(); + String name = reportItem.getCategory().getName(); + if(name.equals("NONE")) + { + name = "Keine Kategorie"; + } + return name; case DATE: return reportItem.getDate(); case DESCRIPTION: diff --git a/src/de/deadlocker8/budgetmaster/ui/HomeController.java b/src/de/deadlocker8/budgetmaster/ui/HomeController.java index a17c5d1ef..1cf7c0c4d 100644 --- a/src/de/deadlocker8/budgetmaster/ui/HomeController.java +++ b/src/de/deadlocker8/budgetmaster/ui/HomeController.java @@ -82,7 +82,7 @@ public class HomeController implements Refreshable { currency = controller.getSettings().getCurrency(); } - labelBudget.setText(String.valueOf(Helpers.NUMBER_FORMAT.format(remaining).replace(".", ",")) + " " + currency); + labelBudget.setText(Helpers.getCurrencyString(remaining, currency)); if(remaining <= 0) { labelBudget.setStyle("-fx-text-fill: #CC0000"); @@ -91,7 +91,7 @@ public class HomeController implements Refreshable { labelBudget.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text")); } - labelStartBudget.setText("von " + String.valueOf(Helpers.NUMBER_FORMAT.format(budget.getIncomeSum()).replace(".", ",")) + " " + currency + " verbleibend"); + labelStartBudget.setText("von " + Helpers.getCurrencyString(budget.getIncomeSum(), currency) + " verbleibend"); double factor = remaining / budget.getIncomeSum(); if(factor < 0) diff --git a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java index d7e8ec416..a1dc8834c 100644 --- a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java +++ b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java @@ -191,8 +191,8 @@ public class PaymentController implements Refreshable { currency = controller.getSettings().getCurrency(); } - labelIncomes.setText(String.valueOf(Helpers.NUMBER_FORMAT.format(budget.getIncomeSum()).replace(".", ",")) + " " + currency); - labelPayments.setText(String.valueOf(Helpers.NUMBER_FORMAT.format(budget.getPaymentSum()).replace(".", ",")) + " " + currency); + labelIncomes.setText(Helpers.getCurrencyString(budget.getIncomeSum(), currency)); + labelPayments.setText(Helpers.getCurrencyString(budget.getPaymentSum(), currency)); } public void deleteNormalPayment(NormalPayment payment) diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportController.java b/src/de/deadlocker8/budgetmaster/ui/ReportController.java index 371df69e9..0ed7c910a 100644 --- a/src/de/deadlocker8/budgetmaster/ui/ReportController.java +++ b/src/de/deadlocker8/budgetmaster/ui/ReportController.java @@ -326,7 +326,7 @@ public class ReportController implements Refreshable { StringProperty value = new SimpleStringProperty(); double amount = param.getValue().getAmount() / 100.0; - value.set(String.valueOf(Helpers.NUMBER_FORMAT.format(amount).replace(".", ",")) + " " + controller.getSettings().getCurrency()); + value.set(Helpers.getCurrencyString(amount, controller.getSettings().getCurrency())); return value; } }); @@ -432,7 +432,8 @@ public class ReportController implements Refreshable if(file != null) { reportPath = file; - ReportGenerator reportGenerator = new ReportGenerator(new ArrayList<ReportItem>(tableView.getItems()), + ReportGenerator reportGenerator = new ReportGenerator(new ArrayList<ReportItem>(tableView.getItems()), + controller.getCategoryBudgets(), columnOrder, checkBoxSplitTable.isSelected(), checkBoxIncludeCategoryBudgets.isSelected(), diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java index 2f768acb0..74b06681c 100644 --- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java +++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java @@ -59,7 +59,7 @@ public class CategoryBudgetCell extends ListCell<CategoryBudget> hbox.getChildren().add(r); HBox.setHgrow(r, Priority.ALWAYS); - Label labelBudget = new Label(String.valueOf(Helpers.NUMBER_FORMAT.format(item.getBudget() / 100.0)).replace(".", ",") + " " + homeController.getController().getSettings().getCurrency()); + Label labelBudget = new Label(Helpers.getCurrencyString(item.getBudget() / 100.0, homeController.getController().getSettings().getCurrency())); labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #247A2D;"); if(item.getBudget() > 0) { diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java index 528e2f1c0..ce20c31a7 100644 --- a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java +++ b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java @@ -122,7 +122,7 @@ public class PaymentCell extends ListCell<Payment> hbox.getChildren().add(r); HBox.setHgrow(r, Priority.ALWAYS); - Label labelBudget = new Label(String.valueOf(Helpers.NUMBER_FORMAT.format(item.getAmount() / 100.0)).replace(".", ",") + " " + paymentController.getController().getSettings().getCurrency()); + Label labelBudget = new Label(Helpers.getCurrencyString(item.getAmount(), paymentController.getController().getSettings().getCurrency())); labelBudget.setPrefHeight(HEIGHT); labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #247A2D"); labelBudget.setAlignment(Pos.CENTER); -- GitLab