From e78e75e02f17c9f41299aaba86d8c7b4d9de1026 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 7 Jun 2020 12:50:29 +0200 Subject: [PATCH] #338 - edit/update page for normal templates --- .../templates/TemplateController.java | 32 ++++++++++++++++++- .../templates/TemplateValidator.java | 13 ++++++-- .../transactions/TransactionController.java | 1 - 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java index 918a68802..9d91747e8 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 be1effcdc..25321134c 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 0c328edb8..bd7fb6366 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) { -- GitLab