From 9a8aaa94d1331fdd30970cd612b98b3c96c8c517 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 10 Jun 2020 22:47:08 +0200 Subject: [PATCH] Fixed #522 - default categories are not sorted correctly in german --- .../categories/CategoryController.java | 8 +++---- .../categories/CategoryService.java | 21 +++++++++++++++++++ .../filter/FilterHelpersService.java | 2 +- .../settings/SettingsController.java | 1 + .../templates/TemplateService.java | 2 +- .../transactions/TransactionService.java | 11 +++++----- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java index 8b55a8427..d824fbaed 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java @@ -20,12 +20,12 @@ import java.util.stream.Collectors; @Controller public class CategoryController extends BaseController { + private static final String WHITE = "#FFFFFF"; + private final CategoryService categoryService; private final HelpersService helpers; private final SettingsService settingsService; - private final String WHITE = "#FFFFFF"; - @Autowired public CategoryController(CategoryService categoryService, HelpersService helpers, SettingsService settingsService) { @@ -37,7 +37,7 @@ public class CategoryController extends BaseController @GetMapping("/categories") public String categories(Model model) { - model.addAttribute("categories", categoryService.getRepository().findAllByOrderByNameAsc()); + model.addAttribute("categories", categoryService.getAllCategories()); model.addAttribute("settings", settingsService.getSettings()); return "categories/categories"; } @@ -50,7 +50,7 @@ public class CategoryController extends BaseController return "redirect:/categories"; } - List<Category> allCategories = categoryService.getRepository().findAllByOrderByNameAsc(); + List<Category> allCategories = categoryService.getAllCategories(); List<Category> availableCategories = allCategories.stream().filter(category -> !category.getID().equals(ID)).collect(Collectors.toList()); model.addAttribute("categories", allCategories); diff --git a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java index 38d17302f..285a6743f 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java @@ -1,6 +1,7 @@ package de.deadlocker8.budgetmaster.categories; import de.deadlocker8.budgetmaster.services.Resetable; +import de.deadlocker8.budgetmaster.settings.SettingsService; import de.deadlocker8.budgetmaster.transactions.Transaction; import de.deadlocker8.budgetmaster.utils.Strings; import de.thecodelabs.utils.util.Localization; @@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Locale; import java.util.Optional; @Service @@ -85,4 +87,23 @@ public class CategoryService implements Resetable LOGGER.debug("Created default category REST"); } } + + public List<Category> getAllCategories() + { + localizeDefaultCategories(); + return categoryRepository.findAllByOrderByNameAsc(); + } + + public void localizeDefaultCategories() + { + LOGGER.debug("Updating localization for default categories"); + + final Category categoryNone = categoryRepository.findByType(CategoryType.NONE); + categoryNone.setName(Localization.getString(Strings.CATEGORY_NONE)); + categoryRepository.save(categoryNone); + + final Category categoryRest = categoryRepository.findByType(CategoryType.REST); + categoryRest.setName(Localization.getString(Strings.CATEGORY_REST)); + categoryRepository.save(categoryRest); + } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterHelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterHelpersService.java index ac8f7be74..3854ff383 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterHelpersService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterHelpersService.java @@ -60,7 +60,7 @@ public class FilterHelpersService public List<FilterObject> getFilterCategories() { - List<Category> categories = categoryService.getRepository().findAllByOrderByNameAsc(); + List<Category> categories = categoryService.getAllCategories(); List<FilterObject> filterCategories = new ArrayList<>(); for(Category category : categories) { diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index f197d0761..b66606749 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -147,6 +147,7 @@ public class SettingsController extends BaseController settingsService.updateSettings(settings); Localization.load(); + categoryService.localizeDefaultCategories(); return "redirect:/settings"; } diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java index db8744559..a71eb3239 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java @@ -92,7 +92,7 @@ public class TemplateService implements Resetable public void prepareModelNewOrEdit(Model model, boolean isEdit, TransactionBase item, boolean isPayment, List<Account> accounts) { model.addAttribute("isEdit", isEdit); - model.addAttribute("categories", categoryService.getRepository().findAllByOrderByNameAsc()); + model.addAttribute("categories", categoryService.getAllCategories()); model.addAttribute("accounts", accounts); model.addAttribute("template", item); model.addAttribute("settings", settingsService.getSettings()); diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java index f412875b9..2b9794752 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder; import de.deadlocker8.budgetmaster.accounts.Account; import de.deadlocker8.budgetmaster.accounts.AccountType; import de.deadlocker8.budgetmaster.categories.CategoryRepository; +import de.deadlocker8.budgetmaster.categories.CategoryService; import de.deadlocker8.budgetmaster.categories.CategoryType; import de.deadlocker8.budgetmaster.filter.FilterConfiguration; import de.deadlocker8.budgetmaster.repeating.RepeatingOptionRepository; @@ -42,16 +43,16 @@ public class TransactionService implements Resetable private TransactionRepository transactionRepository; private RepeatingOptionRepository repeatingOptionRepository; - private CategoryRepository categoryRepository; + private CategoryService categoryService; private TagService tagService; private SettingsService settingsService; @Autowired - public TransactionService(TransactionRepository transactionRepository, RepeatingOptionRepository repeatingOptionRepository, CategoryRepository categoryRepository, TagService tagService, SettingsService settingsService) + public TransactionService(TransactionRepository transactionRepository, RepeatingOptionRepository repeatingOptionRepository, CategoryService categoryService, TagService tagService, SettingsService settingsService) { this.transactionRepository = transactionRepository; this.repeatingOptionRepository = repeatingOptionRepository; - this.categoryRepository = categoryRepository; + this.categoryService = categoryService; this.tagService = tagService; this.settingsService = settingsService; } @@ -82,7 +83,7 @@ public class TransactionService implements Resetable List<Transaction> transactions = getTransactionsForMonthAndYearWithoutRest(account, month, year, filterConfiguration); Transaction transactionRest = new Transaction(); - transactionRest.setCategory(categoryRepository.findByType(CategoryType.REST)); + transactionRest.setCategory(categoryService.getRepository().findByType(CategoryType.REST)); transactionRest.setName(Localization.getString(Strings.CATEGORY_REST)); transactionRest.setDate(DateTime.now().withYear(year).withMonthOfYear(month).withDayOfMonth(1)); transactionRest.setAmount(getRest(account, startDate)); @@ -282,7 +283,7 @@ public class TransactionService implements Resetable { model.addAttribute("isEdit", isEdit); model.addAttribute("currentDate", date); - model.addAttribute("categories", categoryRepository.findAllByOrderByNameAsc()); + model.addAttribute("categories", categoryService.getAllCategories()); model.addAttribute("accounts", accounts); model.addAttribute("transaction", item); model.addAttribute("settings", settingsService.getSettings()); -- GitLab