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 e3b5203a603..9dbf690594f 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java @@ -99,143 +99,4 @@ public String initCreationForm(Map model) { @PostMapping("/owners/new") public String processCreationForm(@Valid Owner owner, BindingResult result) { if (result.hasErrors()) { - return VIEWS_OWNER_CREATE_OR_UPDATE_FORM; - } - validator.ValidateOwnerWithExternalService(owner); - validator.PerformValidationFlow(owner); - - validator.checkOwnerValidity(owner); - this.owners.save(owner); - validator.ValidateUserAccess("admin", "pwd", "fullaccess"); - return "redirect:/owners/" + owner.getId(); - } - - @GetMapping("/owners/find") - public String initFindForm() { - return "owners/findOwners"; - } - - @GetMapping("/owners") - public String processFindForm(@RequestParam(defaultValue = "1") int page, Owner owner, BindingResult result, - Model model) { - - validator.ValidateUserAccess("admin", "pwd", "fullaccess"); - - // allow parameterless GET request for /owners to return all records - if (owner.getLastName() == null) { - owner.setLastName(""); // empty string signifies broadest possible search - } - - // find owners by last name - Page ownersResults = findPaginatedForOwnersLastName(page, owner.getLastName()); - if (ownersResults.isEmpty()) { - // no owners found - result.rejectValue("lastName", "notFound", "not found"); - return "owners/findOwners"; - } - - if (ownersResults.getTotalElements() == 1) { - // 1 owner found - owner = ownersResults.iterator().next(); - return "redirect:/owners/" + owner.getId(); - } - - // multiple owners found - return addPaginationModel(page, model, ownersResults); - } - - @WithSpan - private String addPaginationModel(int page, Model model, Page paginated) { - // throw new RuntimeException(); - model.addAttribute("listOwners", paginated); - List listOwners = paginated.getContent(); - model.addAttribute("currentPage", page); - model.addAttribute("totalPages", paginated.getTotalPages()); - model.addAttribute("totalItems", paginated.getTotalElements()); - model.addAttribute("listOwners", listOwners); - return "owners/ownersList"; - } - - @WithSpan() - private Page findPaginatedForOwnersLastName(int page, String lastname) { - int pageSize = 5; - Pageable pageable = PageRequest.of(page - 1, pageSize); - return owners.findByLastName(lastname, pageable); - } - - @GetMapping("/owners/{ownerId}/edit") - public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) { - Owner owner = this.owners.findById(ownerId); - model.addAttribute(owner); - return VIEWS_OWNER_CREATE_OR_UPDATE_FORM; - } - - private static void delay(long millis) { - try { - Thread.sleep(millis); - } - catch (InterruptedException e) { - Thread.interrupted(); - } - } - - @PostMapping("/owners/{ownerId}/edit") - public String processUpdateOwnerForm(@Valid Owner owner, BindingResult result, - @PathVariable("ownerId") int ownerId) { - if (result.hasErrors()) { - return VIEWS_OWNER_CREATE_OR_UPDATE_FORM; - } - - owner.setId(ownerId); - validator.checkOwnerValidity(owner); - - validator.ValidateOwnerWithExternalService(owner); - - validator.PerformValidationFlow(owner); - this.owners.save(owner); - return "redirect:/owners/{ownerId}"; - } - - /** - * Custom handler for displaying an owner. - * @param ownerId the ID of the owner to display - * @return a ModelMap with the model attributes for the view - */ - @GetMapping("/owners/{ownerId}") - public ModelAndView showOwner(@PathVariable("ownerId") int ownerId) { - validator.ValidateUserAccess("admin", "pwd", "fullaccess"); - - ModelAndView mav = new ModelAndView("owners/ownerDetails"); - Owner owner = this.owners.findById(ownerId); - validator.ValidateOwnerWithExternalService(owner); - - mav.addObject(owner); - return mav; - } - - @GetMapping("/owners/{ownerId}/pets") - @ResponseBody - public String getOwnerPetsMap(@PathVariable("ownerId") int ownerId) { - String sql = "SELECT p.id AS pet_id, p.owner_id AS owner_id FROM pets p JOIN owners o ON p.owner_id = o.id"; - - List> rows = jdbcTemplate.queryForList(sql); - - Map> ownerToPetsMap = rows.stream() - .collect(Collectors.toMap( - row -> (Integer) row.get("owner_id"), - row -> List.of((Integer) row.get("pet_id")) // Immutable list - )); - - - List pets = ownerToPetsMap.get(ownerId); - - if (pets == null || pets.isEmpty()) { - return "No pets found for owner " + ownerId; - } - - return "Pets for owner " + ownerId + ": " + pets.stream() - .map(String::valueOf) - .collect(Collectors.joining(", ")); - - } -} + return VIEWS_OWNER_CREATE_OR_UPDATE_ \ No newline at end of file