diff --git a/src/main/java/org/springframework/samples/petclinic/owner/rest/ExistingOwnerForm.java b/src/main/java/org/springframework/samples/petclinic/owner/rest/ExistingOwnerForm.java new file mode 100644 index 000000000..97ba946ff --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/owner/rest/ExistingOwnerForm.java @@ -0,0 +1,14 @@ +package org.springframework.samples.petclinic.owner.rest; + +public class ExistingOwnerForm extends NewOwnerForm{ + private int id; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + +} diff --git a/src/main/java/org/springframework/samples/petclinic/owner/rest/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/owner/rest/OwnerController.java index e79b54141..54091c4cf 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/rest/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/rest/OwnerController.java @@ -1,13 +1,19 @@ package org.springframework.samples.petclinic.owner.rest; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Map; + import javax.validation.Valid; import org.springframework.http.HttpStatus; +import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; import org.springframework.samples.petclinic.owner.Owner; import org.springframework.samples.petclinic.owner.OwnerRepository; import org.springframework.samples.petclinic.visit.VisitRepository; import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -38,6 +44,41 @@ public class OwnerController { return new ResponseEntity("Owner created",HttpStatus.OK); } } + + @GetMapping("") + public ResponseEntity processFindForm(NewOwnerForm owner) { + + // allow parameterless GET request to return all records + if (owner.getLastName() == null) { + owner.setLastName(""); // empty string signifies broadest possible search + } + + // find owners by last name + Collection results = getAllOwners(owner); + if (results.isEmpty()) { + // no owners found + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } else { + // owners found + return new ResponseEntity<>(results, HttpStatus.OK); + } + } + + private Collection getAllOwners(NewOwnerForm ownerForm) { + CollectionexistingOwners=owners.findByLastName(ownerForm.getLastName()); + Collectionowners=new ArrayList<>(); + for(Owner existingOwner:existingOwners) { + ExistingOwnerForm owner=new ExistingOwnerForm(); + owner.setId(existingOwner.getId()); + owner.setAddress(existingOwner.getAddress()); + owner.setCity(existingOwner.getCity()); + owner.setFirstName(existingOwner.getFirstName()); + owner.setLastName(existingOwner.getLastName()); + owner.setTelephone(existingOwner.getTelephone()); + owners.add(owner); + } + return owners; + } private void createNewOwner(final NewOwnerForm owner) { Owner newOwner=owner.NewOwner(); diff --git a/src/main/java/org/springframework/samples/petclinic/system/SwaggerConfiguration.java b/src/main/java/org/springframework/samples/petclinic/system/SwaggerConfiguration.java index d48abd007..d267c9f52 100644 --- a/src/main/java/org/springframework/samples/petclinic/system/SwaggerConfiguration.java +++ b/src/main/java/org/springframework/samples/petclinic/system/SwaggerConfiguration.java @@ -2,6 +2,7 @@ package org.springframework.samples.petclinic.system; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.web.bind.annotation.RestController; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; @@ -14,7 +15,7 @@ public class SwaggerConfiguration { @Bean public Docket productApi() { return new Docket(DocumentationType.SWAGGER_2).select() - .apis(RequestHandlerSelectors.basePackage("org.springframework.samples.petclinic.rest")) + .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .build(); } }