From 3a6127557dc05d9a6462fcea67d0f329e7286245 Mon Sep 17 00:00:00 2001 From: bijomutta Date: Tue, 11 Jul 2023 21:39:36 +0200 Subject: [PATCH] Adding pet name validation on edit Pet --- .../springframework/samples/petclinic/owner/Owner.java | 7 +++---- .../samples/petclinic/owner/PetController.java | 10 ++++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/samples/petclinic/owner/Owner.java b/src/main/java/org/springframework/samples/petclinic/owner/Owner.java index ac556459d..78599d087 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/Owner.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/Owner.java @@ -132,10 +132,9 @@ public class Owner extends Person { public Pet getPet(String name, boolean ignoreNew) { name = name.toLowerCase(); for (Pet pet : getPets()) { - if (!ignoreNew || !pet.isNew()) { - String compName = pet.getName(); - compName = compName == null ? "" : compName.toLowerCase(); - if (compName.equals(name)) { + String compName = pet.getName(); + if (compName != null && compName.equalsIgnoreCase(name)) { + if (!ignoreNew || !pet.isNew()) { return pet; } } diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java index 1a5f86581..c3334bab8 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java @@ -114,6 +114,16 @@ class PetController { @PostMapping("/pets/{petId}/edit") public String processUpdateForm(@Valid Pet pet, BindingResult result, Owner owner, ModelMap model) { + String petName = pet.getName(); + + // checking if the pet name already exist for the owner + if (StringUtils.hasLength(petName)) { + Pet existingPet = owner.getPet(petName.toLowerCase(), false); + if (existingPet != null && existingPet.getId() != pet.getId()) { + result.rejectValue("name", "duplicate", "already exists"); + } + } + LocalDate currentDate = LocalDate.now(); if (pet.getBirthDate() != null && pet.getBirthDate().isAfter(currentDate)) { result.rejectValue("birthDate", "typeMismatch.birthDate");