diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java index f6825fc36ff253d67ce31bc7796859b8f85e6cec..0e464d9e40b6d754c7104155df97aa7d4b92a93a 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 9a5cad67bd3e25831d19e7296f574ecd2b66a75d..3a27e557b695cb8ea05fc34b77c8445a88020327 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 995eb3513b093caf2ea0864957cfe1e3dc0c6ba7..dee7828a27e1aaafea12e6e17058b4c136d385f9 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 5963c3101639737fc76ca1a88f90a3b6d3e6c184..b9ce9d14e4fa4ece8d9b2b7bf7dd264938adedfd 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.