From 2acb244a7b98a4bcfd05cc45dcf8b29f84cab439 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 21 Apr 2018 15:58:22 +0200 Subject: [PATCH] #297 - account names should be unique (show warning in ui) --- .../budgetmaster/controller/AccountController.java | 7 +++++++ .../java/de/deadlocker8/budgetmaster/entities/Account.java | 1 + src/main/resources/languages/_de.properties | 1 + src/main/resources/languages/_en.properties | 1 + 4 files changed, 10 insertions(+) diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java index f6825fc36..0e464d9e4 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java @@ -9,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -94,6 +96,11 @@ public class AccountController extends BaseController AccountValidator accountValidator = new AccountValidator(); accountValidator.validate(account, bindingResult); + if(accountRepository.findByName(account.getName()) != null) + { + bindingResult.addError(new FieldError("NewAccount", "name", "", false, new String[]{"warning.duplicate.account.name"}, null, null)); + } + if(bindingResult.hasErrors()) { model.addAttribute("error", bindingResult); diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java b/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java index 9a5cad67b..3a27e557b 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java +++ b/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java @@ -14,6 +14,7 @@ public class Account @NotNull @Size(min = 1) + @Column(unique=true) private String name; @OneToMany(mappedBy = "account", fetch = FetchType.LAZY) diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index 995eb3513..dee7828a2 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -204,6 +204,7 @@ warning.integer.height.in.pixels=Nur ganzahlige Werte sind f warning.empty.savepath.chart=W�hle einen Speicherort f�r das Diagramm aus. warning.empty.category.name=Bitte gib einen Namen ein. warning.empty.account.name=Bitte gib einen Namen ein. +warning.duplicate.account.name=Es existiert bereits ein Konto mit diesem Namen. warning.empty.category.color=Die Kategoriefarbe darf nicht leer sein. warning.empty.payment.name=Das Feld f�r den Namen darf nicht leer sein. warning.name.character.limit.reached.45=Der Name darf maximal 45 Zeichen lang sein. diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 5963c3101..b9ce9d14e 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -204,6 +204,7 @@ warning.integer.height.in.pixels=Only integer values are allowed for the height warning.empty.savepath.chart=Please select a location where you want to save the chart. warning.empty.category.name=Please insert a name. warning.empty.account.name=Please insert a name. +warning.duplicate.account.name=An account with this name is already existing. warning.empty.category.color=The category color should not be empty. warning.empty.payment.name=The field for the name can not be empty. warning.name.character.limit.reached.45=The name must not exceed 45 characters in length. -- GitLab