diff --git a/src/main/java/org/springframework/samples/petclinic/loggers/VetLogger.java b/src/main/java/org/springframework/samples/petclinic/loggers/VetLogger.java new file mode 100644 index 0000000..f23ea3e --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/loggers/VetLogger.java @@ -0,0 +1,13 @@ +package org.springframework.samples.petclinic.loggers; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.samples.petclinic.vet.Vet; + +public class VetLogger { + private static final Logger logger = LoggerFactory.getLogger(VetLogger.class); + + public static void LogSpecialty(Vet vet){ + logger.info("Vet Speciality='{}'", vet.getSpecialties().get(0).getName()); + } +} diff --git a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java index 3b8e033..1ec50ee 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java @@ -25,6 +25,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.samples.petclinic.validation.ControllerValidation; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -136,10 +137,7 @@ private String addPaginationModel(int page, Model model, Page paginated) } private Page findPaginatedForOwnersLastName(int page, String lastname) { - if(page < 1){ - // defensive programming - throw new IllegalArgumentException("Page must be greater than 0"); - } + ControllerValidation.ValidatePageNumber(page); int pageSize = 5; Pageable pageable = PageRequest.of(page - 1, pageSize); 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 6ccbdc3..4964f2b 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java @@ -18,6 +18,7 @@ import java.time.LocalDate; import java.util.Collection; +import org.springframework.samples.petclinic.validation.ControllerValidation; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.StringUtils; @@ -124,13 +125,10 @@ public String processCreationForm(Owner owner, @Valid Pet pet, BindingResult res @GetMapping("/pets/{petId}/edit") public String initUpdateForm(Owner owner, @PathVariable("petId") int petId, ModelMap model, RedirectAttributes redirectAttributes) { - if(owner == null){ - throw new IllegalArgumentException("Owner not found!"); - } + ControllerValidation.ValidateNotNull(owner, "Owner"); Pet pet = owner.getPet(petId); - if(pet == null){ - throw new IllegalArgumentException("Pet not found!"); - } + + ControllerValidation.ValidateNotNull(pet, "Pet"); model.put("pet", pet); return VIEWS_PETS_CREATE_OR_UPDATE_FORM; } diff --git a/src/main/java/org/springframework/samples/petclinic/validation/BaseValidation.java b/src/main/java/org/springframework/samples/petclinic/validation/BaseValidation.java new file mode 100644 index 0000000..1659b0c --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/validation/BaseValidation.java @@ -0,0 +1,9 @@ +package org.springframework.samples.petclinic.validation; + +public class BaseValidation { + public static void IntegerMustBeGreaterThan(Integer a, Integer b, String label) { + if(a < b){ + throw new IllegalArgumentException(label + " must be greater than " + b); + } + } +} diff --git a/src/main/java/org/springframework/samples/petclinic/validation/ControllerValidation.java b/src/main/java/org/springframework/samples/petclinic/validation/ControllerValidation.java new file mode 100644 index 0000000..4724dca --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/validation/ControllerValidation.java @@ -0,0 +1,13 @@ +package org.springframework.samples.petclinic.validation; + +public class ControllerValidation { + public static void ValidatePageNumber(int pageNumber) throws IllegalArgumentException { + BaseValidation.IntegerMustBeGreaterThan(pageNumber, 0, "Page Number"); + } + + public static void ValidateNotNull(Object object, String name) throws IllegalArgumentException { + if (object == null) { + throw new IllegalArgumentException(name + " cannot be null"); + } + } +} diff --git a/src/main/java/org/springframework/samples/petclinic/vet/VetController.java b/src/main/java/org/springframework/samples/petclinic/vet/VetController.java index 94ef0ab..b85f73d 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/VetController.java +++ b/src/main/java/org/springframework/samples/petclinic/vet/VetController.java @@ -20,6 +20,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.samples.petclinic.loggers.VetLogger; +import org.springframework.samples.petclinic.validation.ControllerValidation; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -69,10 +71,8 @@ private String addPaginationModel(int page, Page paginated, Model model) { } private Page findPaginated(int page) { - if(page < 1) { - // defensive programming - throw new IllegalArgumentException("Page must be greater than 0"); - } + ControllerValidation.ValidatePageNumber(page); + int pageSize = 5; Pageable pageable = PageRequest.of(page - 1, pageSize); return vetRepository.findAll(pageable); @@ -96,7 +96,7 @@ private Page findPaginated(int page) { Vets vets = new Vets(); Collection vetList = this.vetRepository.findByLastName(lastName); for (Vet vet : vetList) { - logger.info("Vet Speciality='{}'", vet.getSpecialties().get(0).getName()); + VetLogger.LogSpecialty(vet); } vets.getVetList().addAll(vetList); return vets;