From a994785f73a848058a4bad7b5bb2ef00f1b2fa2c Mon Sep 17 00:00:00 2001
From: Mic <misvy@vmware.com>
Date: Tue, 12 Feb 2013 08:22:39 +0800
Subject: [PATCH] made sure the ClinicService facade is used by all Controllers

---
 .../petclinic/service/ClinicService.java       |  5 +++++
 .../petclinic/service/ClinicServiceImpl.java   | 14 ++++++++++++++
 .../samples/petclinic/web/OwnerController.java | 18 +++++++++---------
 3 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java b/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java
index c85f1bf..d2a6ebb 100644
--- a/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java
+++ b/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java
@@ -19,6 +19,7 @@ import org.springframework.samples.petclinic.Visit;
  * @author Ken Krebs
  * @author Juergen Hoeller
  * @author Sam Brannen
+ * @author Michael Isvy
  */
 public interface ClinicService {
 	
@@ -34,4 +35,8 @@ public interface ClinicService {
 	
 	public Collection<Vet> findVets() throws DataAccessException;
 
+	public void saveOwner(Owner owner) throws DataAccessException;
+
+	Collection<Owner> findOwnerByLastName(String lastName) throws DataAccessException;
+
 }
diff --git a/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java b/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java
index fd79bac..5ab0fba 100644
--- a/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java
+++ b/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java
@@ -41,11 +41,25 @@ public class ClinicServiceImpl implements ClinicService {
 	public Owner findOwnerById(int id) throws DataAccessException {
 		return ownerRepository.findById(id);
 	}
+	
+	@Override
+	@Transactional(readOnly=true)
+	public Collection<Owner> findOwnerByLastName(String lastName) throws DataAccessException {
+		return ownerRepository.findByLastName(lastName);
+	}
 
+	@Override
+	@Transactional
+	public void saveOwner(Owner owner) throws DataAccessException {
+		ownerRepository.save(owner);
+	}
+	
+	
 	@Transactional
 	public void saveVisit(Visit visit) throws DataAccessException {
 		visitRepository.save(visit);
 	}
+	
 
 	@Transactional(readOnly=true)
 	public Pet findPetById(int id) throws DataAccessException {
diff --git a/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java
index a7fcfe4..37f5fae 100644
--- a/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java
+++ b/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java
@@ -7,7 +7,7 @@ import javax.validation.Valid;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.samples.petclinic.Owner;
-import org.springframework.samples.petclinic.repository.OwnerRepository;
+import org.springframework.samples.petclinic.service.ClinicService;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.validation.BindingResult;
@@ -32,12 +32,12 @@ import org.springframework.web.servlet.ModelAndView;
 @SessionAttributes(types = Owner.class)
 public class OwnerController {
 
-	private final OwnerRepository ownerRepository;
+	private final ClinicService clinicService;
 
 
 	@Autowired
-	public OwnerController(OwnerRepository ownerRepository) {
-		this.ownerRepository = ownerRepository;
+	public OwnerController(ClinicService clinicService) {
+		this.clinicService = clinicService;
 	}
 
 	@InitBinder
@@ -58,7 +58,7 @@ public class OwnerController {
 			return "owners/createOrUpdateOwnerForm";
 		}
 		else {
-			this.ownerRepository.save(owner);
+			this.clinicService.saveOwner(owner);
 			status.setComplete();
 			return "redirect:/owners/" + owner.getId();
 		}
@@ -79,7 +79,7 @@ public class OwnerController {
 		}
 
 		// find owners by last name
-		Collection<Owner> results = this.ownerRepository.findByLastName(owner.getLastName());
+		Collection<Owner> results = this.clinicService.findOwnerByLastName(owner.getLastName());
 		if (results.size() < 1) {
 			// no owners found
 			result.rejectValue("lastName", "notFound", "not found");
@@ -99,7 +99,7 @@ public class OwnerController {
 
 	@RequestMapping(value="/owners/{ownerId}/edit", method = RequestMethod.GET)
 	public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) {
-		Owner owner = this.ownerRepository.findById(ownerId);
+		Owner owner = this.clinicService.findOwnerById(ownerId);
 		model.addAttribute(owner);
 		return "owners/createOrUpdateOwnerForm";
 	}
@@ -110,7 +110,7 @@ public class OwnerController {
 			return "owners/createOrUpdateOwnerForm";
 		}
 		else {
-			this.ownerRepository.save(owner);
+			this.clinicService.saveOwner(owner);
 			status.setComplete();
 			return "redirect:/owners/{ownerId}";
 		}
@@ -125,7 +125,7 @@ public class OwnerController {
 	@RequestMapping("/owners/{ownerId}")
 	public ModelAndView showOwner(@PathVariable("ownerId") int ownerId) {
 		ModelAndView mav = new ModelAndView("owners/ownerDetails");
-		mav.addObject(this.ownerRepository.findById(ownerId));
+		mav.addObject(this.clinicService.findOwnerById(ownerId));
 		return mav;
 	}
 
-- 
GitLab