mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-15 12:15:50 +00:00
Update OwnerController to handle pet name search
This commit is contained in:
parent
0f2eccc384
commit
4796e29104
1 changed files with 34 additions and 4 deletions
|
@ -96,12 +96,30 @@ class OwnerController {
|
|||
if (owner.getLastName() == null) {
|
||||
owner.setLastName(""); // empty string signifies broadest possible search
|
||||
}
|
||||
|
||||
if (owner.getPetName() == null) {
|
||||
owner.setPetName(""); // empty string signifies broadest possible search
|
||||
}
|
||||
|
||||
// find owners by last name
|
||||
Page<Owner> ownersResults = findPaginatedForOwnersLastName(page, owner.getLastName());
|
||||
// find owners based on search parameters
|
||||
Page<Owner> ownersResults;
|
||||
|
||||
if (!owner.getLastName().isEmpty() && !owner.getPetName().isEmpty()) {
|
||||
// search by both lastName and petName
|
||||
ownersResults = findPaginatedForOwnersLastNameAndPetName(page, owner.getLastName(), owner.getPetName());
|
||||
} else if (!owner.getPetName().isEmpty()) {
|
||||
// search by petName only
|
||||
ownersResults = findPaginatedForOwnersPetName(page, owner.getPetName());
|
||||
} else {
|
||||
// search by lastName only (or return all if lastName is empty)
|
||||
ownersResults = findPaginatedForOwnersLastName(page, owner.getLastName());
|
||||
}
|
||||
|
||||
if (ownersResults.isEmpty()) {
|
||||
// no owners found
|
||||
result.rejectValue("lastName", "notFound", "not found");
|
||||
String errorField = !owner.getLastName().isEmpty() ? "lastName" :
|
||||
(!owner.getPetName().isEmpty() ? "petName" : "lastName");
|
||||
result.rejectValue(errorField, "notFound", "not found");
|
||||
return "owners/findOwners";
|
||||
}
|
||||
|
||||
|
@ -129,6 +147,18 @@ class OwnerController {
|
|||
Pageable pageable = PageRequest.of(page - 1, pageSize);
|
||||
return owners.findByLastNameStartingWith(lastname, pageable);
|
||||
}
|
||||
|
||||
private Page<Owner> findPaginatedForOwnersPetName(int page, String petName) {
|
||||
int pageSize = 5;
|
||||
Pageable pageable = PageRequest.of(page - 1, pageSize);
|
||||
return owners.findByPetNameContaining(petName, pageable);
|
||||
}
|
||||
|
||||
private Page<Owner> findPaginatedForOwnersLastNameAndPetName(int page, String lastName, String petName) {
|
||||
int pageSize = 5;
|
||||
Pageable pageable = PageRequest.of(page - 1, pageSize);
|
||||
return owners.findByLastNameAndPetName(lastName, petName, pageable);
|
||||
}
|
||||
|
||||
@GetMapping("/owners/{ownerId}/edit")
|
||||
public String initUpdateOwnerForm() {
|
||||
|
@ -170,4 +200,4 @@ class OwnerController {
|
|||
return mav;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue