petclinic-aplcache

improvements to Owner Controller - migrated to bean validation

1/16/2013 12:30:20 AM

Changes

pom.xml 7(+7 -0)

src/main/java/org/springframework/samples/petclinic/validation/OwnerValidator.java 43(+0 -43)

src/main/java/org/springframework/samples/petclinic/web/AddOwnerController.java 65(+0 -65)

src/main/java/org/springframework/samples/petclinic/web/EditOwnerController.java 65(+0 -65)

Details

pom.xml 7(+7 -0)

diff --git a/pom.xml b/pom.xml
index 874af64..94162e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,6 +13,7 @@
 		<log4j.version>1.2.17</log4j.version>
 		<hibernate.version>4.1.4.Final</hibernate.version>
 		<aspectj.version>1.7.1</aspectj.version>
+		<hibernate.validator.version>4.2.0.Final</hibernate.validator.version>
 	</properties>
 	<dependencies> 
 
@@ -118,6 +119,12 @@
 			<version>${hibernate.version}</version>
 		</dependency>
 		
+		<dependency>
+				<groupId>org.hibernate</groupId>
+				<artifactId>hibernate-validator</artifactId>
+				<version>${hibernate.validator.version}</version>
+			</dependency>
+		
 		<!-- ********************************************************************** 
 			 ** 				SPRING DATA			 							 ** 
 			 ********************************************************************** -->
diff --git a/src/main/java/org/springframework/samples/petclinic/Owner.java b/src/main/java/org/springframework/samples/petclinic/Owner.java
index 13639f9..bde857e 100644
--- a/src/main/java/org/springframework/samples/petclinic/Owner.java
+++ b/src/main/java/org/springframework/samples/petclinic/Owner.java
@@ -11,7 +11,9 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
+import javax.validation.constraints.Digits;
 
+import org.hibernate.validator.constraints.NotEmpty;
 import org.springframework.beans.support.MutableSortDefinition;
 import org.springframework.beans.support.PropertyComparator;
 import org.springframework.core.style.ToStringCreator;
@@ -26,12 +28,15 @@ import org.springframework.core.style.ToStringCreator;
 @Entity @Table(name="owners")
 public class Owner extends Person {
 	@Column(name="address")
+	@NotEmpty
 	private String address;
 	
 	@Column(name="city")
+	@NotEmpty
 	private String city;
 
 	@Column(name="telephone")
+	@NotEmpty @Digits(fraction = 0, integer = 10)
 	private String telephone;
 
 	@OneToMany(cascade=CascadeType.ALL, mappedBy="owner")
diff --git a/src/main/java/org/springframework/samples/petclinic/Person.java b/src/main/java/org/springframework/samples/petclinic/Person.java
index 8bfa1b5..06b0384 100644
--- a/src/main/java/org/springframework/samples/petclinic/Person.java
+++ b/src/main/java/org/springframework/samples/petclinic/Person.java
@@ -2,6 +2,9 @@ package org.springframework.samples.petclinic;
 
 import javax.persistence.Column;
 import javax.persistence.MappedSuperclass;
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.validator.constraints.NotEmpty;
 
 /**
  * Simple JavaBean domain object representing an person.
@@ -12,9 +15,11 @@ import javax.persistence.MappedSuperclass;
 public class Person extends BaseEntity {
 	
 	@Column(name="first_name")
+	@NotEmpty
 	protected String firstName;
 
 	@Column(name="last_name")
+	@NotEmpty
 	protected String lastName;
 
 	public String getFirstName() {
diff --git a/src/main/resources/spring/applicationContext-dao.xml b/src/main/resources/spring/applicationContext-dao.xml
index 9cd0805..1ce9718 100644
--- a/src/main/resources/spring/applicationContext-dao.xml
+++ b/src/main/resources/spring/applicationContext-dao.xml
@@ -70,6 +70,7 @@
 				<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
 						p:database="${jpa.database}" p:showSql="${jpa.showSql}"/>			
 			</property>
+			<property name="persistenceUnitName" value="petclinic" />
 			<property name="packagesToScan">
 				<list>
 					<value>org/springframework/samples/petclinic</value>
diff --git a/src/main/webapp/resources/html/tutorial.html b/src/main/webapp/resources/html/tutorial.html
index f053269..ada7140 100644
--- a/src/main/webapp/resources/html/tutorial.html
+++ b/src/main/webapp/resources/html/tutorial.html
@@ -824,7 +824,7 @@
 		<strong>Owner</strong>s by last name.
 	  </li>
 	  <li>
-		<span style="font-weight: bold; font-style: italic;">org.springframework.samples.petclinic.web.AddOwnerController</span>
+		<span style="font-weight: bold; font-style: italic;">org.springframework.samples.petclinic.web.OwnerController</span>
 		is an annotation-driven, POJO <em>Form</em> controller that is used to add a new <strong>Owner</strong>
 		to the system.
 	  </li>
diff --git a/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp b/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp
index c8cee48..149090d 100644
--- a/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp
+++ b/src/main/webapp/WEB-INF/jsp/owners/ownersList.jsp
@@ -45,9 +45,9 @@
 		    </tr>
 		  </c:forEach>
 		</table>
+		<jsp:include page="../footer.jsp"/>
 	
 	  	</div>
-		<jsp:include page="../footer.jsp"/>
 </body>
 
 </html>
diff --git a/src/test/java/org/springframework/samples/petclinic/jpa/SpringDataClinicTests.java b/src/test/java/org/springframework/samples/petclinic/jpa/SpringDataClinicTests.java
new file mode 100644
index 0000000..a7e1768
--- /dev/null
+++ b/src/test/java/org/springframework/samples/petclinic/jpa/SpringDataClinicTests.java
@@ -0,0 +1,19 @@
+
+package org.springframework.samples.petclinic.jpa;
+
+import org.junit.runner.RunWith;
+import org.springframework.samples.petclinic.AbstractClinicTests;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * @author Michael Isvy
+ */
+
+@ContextConfiguration(locations={"classpath:spring/applicationContext-dao.xml"})
+@RunWith(SpringJUnit4ClassRunner.class)
+@ActiveProfiles({"jpa","spring-data-jpa"})
+public class SpringDataClinicTests extends AbstractClinicTests {
+		
+}
\ No newline at end of file