diff --git a/src/main/java/org/springframework/samples/petclinic/rest/OwnerRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/OwnerRestController.java index 84e5e297e..897ec65c3 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/OwnerRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/OwnerRestController.java @@ -26,7 +26,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.samples.petclinic.model.Owner; -import org.springframework.samples.petclinic.service.ClinicService; +import org.springframework.samples.petclinic.model.Pet; +import org.springframework.samples.petclinic.service.ClinicServiceExt; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; @@ -46,7 +47,7 @@ import org.springframework.web.util.UriComponentsBuilder; public class OwnerRestController { @Autowired - private ClinicService clinicService; + private ClinicServiceExt clinicService; @RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity> getOwnersList(@RequestParam("lastName") String ownerLastName){ @@ -97,6 +98,17 @@ public class OwnerRestController { this.clinicService.saveOwner(currentOwner); return new ResponseEntity(currentOwner, HttpStatus.NO_CONTENT); } + + @RequestMapping(value = "/{ownerId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity deleteOwner(@PathVariable("ownerId") int ownerId){ + Owner owner = this.clinicService.findOwnerById(ownerId); + if(owner == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + this.clinicService.deleteOwner(owner); + // TODO delete error - FK etc. + return new ResponseEntity(HttpStatus.NO_CONTENT); + } } diff --git a/src/main/java/org/springframework/samples/petclinic/rest/PetRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/PetRestController.java index 60235eeba..41425bce4 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/PetRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/PetRestController.java @@ -27,7 +27,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.samples.petclinic.model.Pet; import org.springframework.samples.petclinic.model.PetType; -import org.springframework.samples.petclinic.service.ClinicService; +import org.springframework.samples.petclinic.service.ClinicServiceExt; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; @@ -46,7 +46,7 @@ import org.springframework.web.util.UriComponentsBuilder; public class PetRestController { @Autowired - private ClinicService clinicService; + private ClinicServiceExt clinicService; @RequestMapping(value = "/{petId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity getPet(@PathVariable("petId") int petId){ @@ -89,5 +89,16 @@ public class PetRestController { return new ResponseEntity(currentPet, HttpStatus.NO_CONTENT); } + @RequestMapping(value = "/{petId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity deletePet(@PathVariable("petId") int petId){ + Pet pet = this.clinicService.findPetById(petId); + if(pet == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + this.clinicService.deletePet(pet); + // TODO delete error - FK etc. + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + } diff --git a/src/main/java/org/springframework/samples/petclinic/rest/SpecialtyRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/SpecialtyRestController.java new file mode 100644 index 000000000..72cb0c5a7 --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/rest/SpecialtyRestController.java @@ -0,0 +1,86 @@ +package org.springframework.samples.petclinic.rest; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.samples.petclinic.model.Specialty; +import org.springframework.samples.petclinic.service.ClinicServiceExt; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.util.UriComponentsBuilder; + +@RestController +@RequestMapping("api/specialties") +public class SpecialtyRestController { + + @Autowired + private ClinicServiceExt clinicService; + + @RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity> getAllSpecialtys(){ + Collection specialties = new ArrayList(); + specialties.addAll(this.clinicService.findAllSpecialties()); + if (specialties.isEmpty()){ + return new ResponseEntity>(HttpStatus.NOT_FOUND); + } + return new ResponseEntity>(specialties, HttpStatus.OK); + } + + @RequestMapping(value = "/{specialtyId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity getSpecialty(@PathVariable("specialtyId") int specialtyId){ + Specialty specialty = this.clinicService.findSpecialtyById(specialtyId); + if(specialty == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + return new ResponseEntity(specialty, HttpStatus.OK); + } + + + @RequestMapping(value = "/", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity addSpecialty(@RequestBody @Valid Specialty specialty, BindingResult bindingResult, UriComponentsBuilder ucBuilder){ + if(bindingResult.hasErrors() || (specialty == null)){ + return new ResponseEntity(HttpStatus.BAD_REQUEST); + } + this.clinicService.saveSpecialty(specialty); + HttpHeaders headers = new HttpHeaders(); + headers.setLocation(ucBuilder.path("/api/specialtys/{id}").buildAndExpand(specialty.getId()).toUri()); + return new ResponseEntity(headers, HttpStatus.CREATED); + } + + @RequestMapping(value = "/{specialtyId}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity updateSpecialty(@PathVariable("specialtyId") int specialtyId, @RequestBody @Valid Specialty specialty, BindingResult bindingResult){ + if(bindingResult.hasErrors() || (specialty == null)){ + return new ResponseEntity(HttpStatus.BAD_REQUEST); + } + Specialty currentSpecialty = this.clinicService.findSpecialtyById(specialtyId); + if(currentSpecialty == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + currentSpecialty.setName(specialty.getName()); + this.clinicService.saveSpecialty(currentSpecialty); + return new ResponseEntity(currentSpecialty, HttpStatus.NO_CONTENT); + } + + @RequestMapping(value = "/{specialtyId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity deleteSpecialty(@PathVariable("specialtyId") int specialtyId){ + Specialty specialty = this.clinicService.findSpecialtyById(specialtyId); + if(specialty == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + this.clinicService.deleteSpecialty(specialty); + // TODO delete error - FK etc. + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + +} diff --git a/src/main/java/org/springframework/samples/petclinic/rest/VetRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/VetRestController.java index 67d2099d1..fa9cd554f 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/VetRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/VetRestController.java @@ -18,15 +18,22 @@ package org.springframework.samples.petclinic.rest; import java.util.ArrayList; import java.util.Collection; +import javax.validation.Valid; + import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.samples.petclinic.model.Vet; -import org.springframework.samples.petclinic.service.ClinicService; +import org.springframework.samples.petclinic.service.ClinicServiceExt; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.util.UriComponentsBuilder; /** * @author Vitaliy Fedoriv @@ -38,7 +45,7 @@ import org.springframework.web.bind.annotation.RestController; public class VetRestController { @Autowired - private ClinicService clinicService; + private ClinicServiceExt clinicService; @RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity> getAllVets(){ @@ -50,5 +57,53 @@ public class VetRestController { return new ResponseEntity>(vets, HttpStatus.OK); } + @RequestMapping(value = "/{vetId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity getVet(@PathVariable("vetId") int vetId){ + Vet vet = this.clinicService.findVetById(vetId); + if(vet == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + return new ResponseEntity(vet, HttpStatus.OK); + } + + + @RequestMapping(value = "/", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity addVet(@RequestBody @Valid Vet vet, BindingResult bindingResult, UriComponentsBuilder ucBuilder){ + if(bindingResult.hasErrors() || (vet == null)){ + return new ResponseEntity(HttpStatus.BAD_REQUEST); + } + this.clinicService.saveVet(vet); + HttpHeaders headers = new HttpHeaders(); + headers.setLocation(ucBuilder.path("/api/vets/{id}").buildAndExpand(vet.getId()).toUri()); + return new ResponseEntity(headers, HttpStatus.CREATED); + } + + @RequestMapping(value = "/{vetId}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity updateVet(@PathVariable("vetId") int vetId, @RequestBody @Valid Vet vet, BindingResult bindingResult){ + if(bindingResult.hasErrors() || (vet == null)){ + return new ResponseEntity(HttpStatus.BAD_REQUEST); + } + Vet currentVet = this.clinicService.findVetById(vetId); + if(currentVet == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + currentVet.setFirstName(vet.getFirstName()); + currentVet.setLastName(vet.getLastName()); + this.clinicService.saveVet(currentVet); + return new ResponseEntity(currentVet, HttpStatus.NO_CONTENT); + } + + @RequestMapping(value = "/{vetId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity deleteVet(@PathVariable("vetId") int vetId){ + Vet vet = this.clinicService.findVetById(vetId); + if(vet == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + this.clinicService.deleteVet(vet); + // TODO delete error - FK etc. + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + } diff --git a/src/main/java/org/springframework/samples/petclinic/rest/VisitRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/VisitRestController.java new file mode 100644 index 000000000..d60fd4b2e --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/rest/VisitRestController.java @@ -0,0 +1,88 @@ +package org.springframework.samples.petclinic.rest; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.samples.petclinic.model.Visit; +import org.springframework.samples.petclinic.service.ClinicServiceExt; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.util.UriComponentsBuilder; + +@RestController +@RequestMapping("api/visits") +public class VisitRestController { + + @Autowired + private ClinicServiceExt clinicService; + + @RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity> getAllVisits(){ + Collection visits = new ArrayList(); + visits.addAll(this.clinicService.findAllVisits()); + if (visits.isEmpty()){ + return new ResponseEntity>(HttpStatus.NOT_FOUND); + } + return new ResponseEntity>(visits, HttpStatus.OK); + } + + @RequestMapping(value = "/{visitId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity getVisit(@PathVariable("visitId") int visitId){ + Visit visit = this.clinicService.findVisitById(visitId); + if(visit == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + return new ResponseEntity(visit, HttpStatus.OK); + } + + + @RequestMapping(value = "/", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity addVisit(@RequestBody @Valid Visit visit, BindingResult bindingResult, UriComponentsBuilder ucBuilder){ + if(bindingResult.hasErrors() || (visit == null)){ + return new ResponseEntity(HttpStatus.BAD_REQUEST); + } + this.clinicService.saveVisit(visit); + HttpHeaders headers = new HttpHeaders(); + headers.setLocation(ucBuilder.path("/api/visits/{id}").buildAndExpand(visit.getId()).toUri()); + return new ResponseEntity(headers, HttpStatus.CREATED); + } + + @RequestMapping(value = "/{visitId}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity updateVisit(@PathVariable("visitId") int visitId, @RequestBody @Valid Visit visit, BindingResult bindingResult){ + if(bindingResult.hasErrors() || (visit == null)){ + return new ResponseEntity(HttpStatus.BAD_REQUEST); + } + Visit currentVisit = this.clinicService.findVisitById(visitId); + if(currentVisit == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + currentVisit.setDate(visit.getDate()); + currentVisit.setDescription(visit.getDescription()); + currentVisit.setPet(visit.getPet()); + this.clinicService.saveVisit(currentVisit); + return new ResponseEntity(currentVisit, HttpStatus.NO_CONTENT); + } + + @RequestMapping(value = "/{visitId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public ResponseEntity deleteVisit(@PathVariable("visitId") int visitId){ + Visit visit = this.clinicService.findVisitById(visitId); + if(visit == null){ + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + this.clinicService.deleteVisit(visit); + // TODO delete error - FK etc. + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + +}