diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java index 918a68802b302346b5f84e173611bcb9fc8fef18..9d91747e8e7c09798f789e233aa04bd94d0c4737 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java @@ -155,8 +155,18 @@ public class TemplateController extends BaseController @RequestParam(value = "isPayment", required = false) boolean isPayment, @RequestParam(value = "includeAccount", required = false) boolean includeAccount) { + String previousTemplateName = null; + boolean isEdit = template.getID() != null; + if(isEdit) + { + final Optional<Template> existingTemplateOptional = templateService.getRepository().findById(template.getID()); + if(existingTemplateOptional.isPresent()) + { + previousTemplateName = existingTemplateOptional.get().getTemplateName(); + } + } - TemplateValidator templateValidator = new TemplateValidator(templateService.getExistingTemplateNames()); + TemplateValidator templateValidator = new TemplateValidator(previousTemplateName, templateService.getExistingTemplateNames()); templateValidator.validate(template, bindingResult); transactionService.handleAmount(template, isPayment); @@ -177,4 +187,24 @@ public class TemplateController extends BaseController templateService.getRepository().save(template); return "redirect:/templates"; } + + @GetMapping("/templates/{ID}/edit") + public String editTemplate(Model model, @PathVariable("ID") Integer ID) + { + Optional<Template> templateOptional = templateService.getRepository().findById(ID); + if(!templateOptional.isPresent()) + { + throw new ResourceNotFoundException(); + } + + Template template = templateOptional.get(); + + templateService.prepareModelNewOrEdit(model, true, template, template.getAmount() <= 0, accountService.getAllAccountsAsc()); + + if(template.isTransfer()) + { + return "templates/newTransferTemplate"; + } + return "templates/newTemplate"; + } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateValidator.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateValidator.java index be1effcdc7763e47a6bbb9f6ebb65b257640f341..25321134c9576c0d9ce4b05d38264717090569eb 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateValidator.java +++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateValidator.java @@ -11,10 +11,12 @@ import java.util.List; public class TemplateValidator implements Validator { + private String previousTemplateName; private List<String> existingTemplateNames; - public TemplateValidator(List<String> existingTemplateNames) + public TemplateValidator(String previousTemplateName, List<String> existingTemplateNames) { + this.previousTemplateName = previousTemplateName; this.existingTemplateNames = existingTemplateNames; } @@ -27,9 +29,14 @@ public class TemplateValidator implements Validator { ValidationUtils.rejectIfEmptyOrWhitespace(errors, "templateName", Strings.WARNING_EMPTY_TRANSACTION_NAME); - Template template = (Template)obj; - boolean isNameAlreadyUsed = this.existingTemplateNames.stream().anyMatch(template.getTemplateName()::equalsIgnoreCase); + final Template template = (Template) obj; + if(previousTemplateName != null && previousTemplateName.equals(template.getTemplateName())) + { + return; + } + + final boolean isNameAlreadyUsed = this.existingTemplateNames.contains(template.getTemplateName()); if(isNameAlreadyUsed) { errors.rejectValue("templateName", Strings.WARNING_DUPLICATE_TEMPLATE_NAME); diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java index 0c328edb8521013b367e0e6b3bcd9405f01ef60b..bd7fb6366e7f5a6da687792e1bfbdef74eed9e35 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java @@ -245,7 +245,6 @@ public class TransactionController extends BaseController return "transactions/newTransactionNormal"; } - @GetMapping("/transactions/{ID}/highlight") public String highlight(Model model, @PathVariable("ID") Integer ID) {