diff --git a/.gitignore b/.gitignore index 9c9642b1d..a3e40b873 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ target/* .idea *.iml /target +/build/ diff --git a/pom.xml b/pom.xml index e15e6ab78..6ce30964e 100644 --- a/pom.xml +++ b/pom.xml @@ -244,13 +244,19 @@ - + + mysql + mysql-connector-java + ${mysql.version} + + @@ -344,20 +350,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - 3.0 - - - - - true - ${java.version} - ${java.version} - true - - org.apache.maven.plugins maven-surefire-plugin diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcOwnerRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcOwnerRepositoryImpl.java index 31839ad12..8fe77b679 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcOwnerRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcOwnerRepositoryImpl.java @@ -71,7 +71,6 @@ public class JdbcOwnerRepositoryImpl implements OwnerRepository { * the given name; also loads the {@link Pet Pets} and {@link Visit Visits} for the corresponding owners, if not * already loaded. */ - @Override public Collection findByLastName(String lastName) throws DataAccessException { Map params = new HashMap(); params.put("lastName", lastName + "%"); @@ -88,7 +87,6 @@ public class JdbcOwnerRepositoryImpl implements OwnerRepository { * Loads the {@link Owner} with the supplied id; also loads the {@link Pet Pets} and {@link Visit Visits} * for the corresponding owner, if not already loaded. */ - @Override public Owner findById(int id) throws DataAccessException { Owner owner; try { @@ -119,7 +117,6 @@ public class JdbcOwnerRepositoryImpl implements OwnerRepository { } } - @Override public void save(Owner owner) throws DataAccessException { BeanPropertySqlParameterSource parameterSource = new BeanPropertySqlParameterSource(owner); if (owner.isNew()) { diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetRepositoryImpl.java index e068791a1..d4e73f026 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetRepositoryImpl.java @@ -71,7 +71,6 @@ public class JdbcPetRepositoryImpl implements PetRepository { this.visitRepository = visitRepository; } - @Override public List findPetTypes() throws DataAccessException { Map params = new HashMap(); return this.namedParameterJdbcTemplate.query( @@ -80,7 +79,6 @@ public class JdbcPetRepositoryImpl implements PetRepository { BeanPropertyRowMapper.newInstance(PetType.class)); } - @Override public Pet findById(int id) throws DataAccessException { JdbcPet pet; try { @@ -104,7 +102,6 @@ public class JdbcPetRepositoryImpl implements PetRepository { return pet; } - @Override public void save(Pet pet) throws DataAccessException { if (pet.isNew()) { Number newKey = this.insertPet.executeAndReturnKey( diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVetRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVetRepositoryImpl.java index f6e91cf5e..e506b2a10 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVetRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVetRepositoryImpl.java @@ -58,7 +58,6 @@ public class JdbcVetRepositoryImpl implements VetRepository { * * @see org.springframework.samples.petclinic.model.service.ClinicService#shouldFindVets() */ - @Override public Collection findAll() throws DataAccessException { List vets = new ArrayList(); // Retrieve the list of all vets. diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVisitRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVisitRepositoryImpl.java index a923b7652..85c59847d 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVisitRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcVisitRepositoryImpl.java @@ -55,7 +55,6 @@ public class JdbcVisitRepositoryImpl implements VisitRepository { } - @Override public void save(Visit visit) throws DataAccessException { if (visit.isNew()) { Number newKey = this.insertVisit.executeAndReturnKey( @@ -78,7 +77,6 @@ public class JdbcVisitRepositoryImpl implements VisitRepository { .addValue("pet_id", visit.getPet().getId()); } - @Override public List findByPetId(Integer petId) { return this.jdbcTemplate.query( "SELECT id as visit_id, visit_date, description FROM visits WHERE pet_id=?", diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java index c7398df5b..6bbf4ce01 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java @@ -58,7 +58,6 @@ public class JpaOwnerRepositoryImpl implements OwnerRepository { return query.getResultList(); } - @Override public Owner findById(int id) { // using 'join fetch' because a single query should load both owners and pets // using 'left join fetch' because it might happen that an owner does not have pets yet @@ -68,7 +67,6 @@ public class JpaOwnerRepositoryImpl implements OwnerRepository { } - @Override public void save(Owner owner) { if (owner.getId() == null) { this.em.persist(owner); diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java index 84d564da4..36236b2b3 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java @@ -40,18 +40,15 @@ public class JpaPetRepositoryImpl implements PetRepository { @PersistenceContext private EntityManager em; - @Override @SuppressWarnings("unchecked") public List findPetTypes() { return this.em.createQuery("SELECT ptype FROM PetType ptype ORDER BY ptype.name").getResultList(); } - @Override public Pet findById(int id) { return this.em.find(Pet.class, id); } - @Override public void save(Pet pet) { if (pet.getId() == null) { this.em.persist(pet); diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java index e4c222b65..d4711e250 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java @@ -41,7 +41,6 @@ public class JpaVetRepositoryImpl implements VetRepository { private EntityManager em; - @Override @Cacheable(value = "vets") @SuppressWarnings("unchecked") public Collection findAll() { diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java index 3415def96..a94c1dd76 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java @@ -43,7 +43,6 @@ public class JpaVisitRepositoryImpl implements VisitRepository { private EntityManager em; - @Override public void save(Visit visit) { if (visit.getId() == null) { this.em.persist(visit); @@ -54,7 +53,6 @@ public class JpaVisitRepositoryImpl implements VisitRepository { } - @Override @SuppressWarnings("unchecked") public List findByPetId(Integer petId) { Query query = this.em.createQuery("SELECT visit FROM Visit v where v.pets.id= :id"); diff --git a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataOwnerRepository.java b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataOwnerRepository.java index ca1f709f6..8f89482cd 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataOwnerRepository.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataOwnerRepository.java @@ -31,11 +31,9 @@ import org.springframework.samples.petclinic.repository.OwnerRepository; */ public interface SpringDataOwnerRepository extends OwnerRepository, Repository { - @Override - @Query("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets WHERE owner.lastName LIKE :lastName%") + @Query("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets WHERE owner.lastName LIKE :lastName%") public Collection findByLastName(@Param("lastName") String lastName); - @Override @Query("SELECT owner FROM Owner owner left join fetch owner.pets WHERE owner.id =:id") public Owner findById(@Param("id") int id); } diff --git a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetRepository.java b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetRepository.java index 56a413147..6afa1f70f 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetRepository.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetRepository.java @@ -32,7 +32,6 @@ import org.springframework.samples.petclinic.repository.PetRepository; */ public interface SpringDataPetRepository extends PetRepository, Repository { - @Override @Query("SELECT ptype FROM PetType ptype ORDER BY ptype.name") List findPetTypes() 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 0d7ff4d0c..3972b8d30 100644 --- a/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java @@ -54,51 +54,43 @@ public class ClinicServiceImpl implements ClinicService { this.visitRepository = visitRepository; } - @Override @Transactional(readOnly = true) public Collection findPetTypes() throws DataAccessException { return petRepository.findPetTypes(); } - @Override @Transactional(readOnly = true) public Owner findOwnerById(int id) throws DataAccessException { return ownerRepository.findById(id); } - @Override @Transactional(readOnly = true) public Collection findOwnerByLastName(String lastName) throws DataAccessException { return ownerRepository.findByLastName(lastName); } - @Override @Transactional public void saveOwner(Owner owner) throws DataAccessException { ownerRepository.save(owner); } - @Override @Transactional public void saveVisit(Visit visit) throws DataAccessException { visitRepository.save(visit); } - @Override @Transactional(readOnly = true) public Pet findPetById(int id) throws DataAccessException { return petRepository.findById(id); } - @Override @Transactional public void savePet(Pet pet) throws DataAccessException { petRepository.save(pet); } - @Override @Transactional(readOnly = true) @Cacheable(value = "vets") public Collection findVets() 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 ecbbce559..cbb8098fc 100644 --- a/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java @@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.bind.support.SessionStatus; import org.springframework.web.servlet.ModelAndView; @@ -96,13 +97,11 @@ public class OwnerController { // no owners found result.rejectValue("lastName", "notFound", "not found"); return "owners/findOwners"; - } - else if (results.size() == 1) { - // 1 owner found - owner = results.iterator().next(); - return "redirect:/owners/" + owner.getId(); - } - else { + } else if (results.size() == 1) { + // 1 owner found + owner = results.iterator().next(); + return "redirect:/owners/" + owner.getId(); + } else { // multiple owners found model.put("selections", results); return "owners/ownersList"; @@ -140,4 +139,9 @@ public class OwnerController { return mav; } + @RequestMapping("/owners/print") + @ResponseBody + public String printOwner() { + return "json"; + } } diff --git a/src/main/java/org/springframework/samples/petclinic/web/PetTypeFormatter.java b/src/main/java/org/springframework/samples/petclinic/web/PetTypeFormatter.java index 3d47d2201..cadfa5c8a 100644 --- a/src/main/java/org/springframework/samples/petclinic/web/PetTypeFormatter.java +++ b/src/main/java/org/springframework/samples/petclinic/web/PetTypeFormatter.java @@ -47,12 +47,10 @@ public class PetTypeFormatter implements Formatter { this.clinicService = clinicService; } - @Override public String print(PetType petType, Locale locale) { return petType.getName(); } - @Override public PetType parse(String text, Locale locale) throws ParseException { Collection findPetTypes = this.clinicService.findPetTypes(); for (PetType type : findPetTypes) { diff --git a/src/main/resources/spring/data-access.properties b/src/main/resources/spring/data-access.properties index c1cc3cefd..4bf29ae40 100644 --- a/src/main/resources/spring/data-access.properties +++ b/src/main/resources/spring/data-access.properties @@ -7,35 +7,35 @@ #------------------------------------------------------------------------------- # HSQL Settings -jdbc.driverClassName=org.hsqldb.jdbcDriver -jdbc.url=jdbc:hsqldb:mem:petclinic -jdbc.username=sa -jdbc.password= +#jdbc.driverClassName=org.hsqldb.jdbcDriver +#jdbc.url=jdbc:hsqldb:mem:petclinic +#jdbc.username=sa +#jdbc.password= # Properties that control the population of schema and data for a new data source -jdbc.initLocation=classpath:db/hsqldb/initDB.sql -jdbc.dataLocation=classpath:db/hsqldb/populateDB.sql +#jdbc.initLocation=classpath:db/hsqldb/initDB.sql +#jdbc.dataLocation=classpath:db/hsqldb/populateDB.sql # Property that determines which database to use with an AbstractJpaVendorAdapter -jpa.database=HSQL +#jpa.database=HSQL jpa.showSql=true #------------------------------------------------------------------------------- # MySQL Settings -#jdbc.driverClassName=com.mysql.jdbc.Driver -#jdbc.url=jdbc:mysql://localhost:3306/petclinic -#jdbc.username=root -#jdbc.password= +jdbc.driverClassName=com.mysql.jdbc.Driver +jdbc.url=jdbc:mysql://115.29.227.156:3306/petclinic +jdbc.username=root +jdbc.password=Yang # Properties that control the population of schema and data for a new data source -#jdbc.initLocation=classpath:db/mysql/initDB.sql -#jdbc.dataLocation=classpath:db/mysql/populateDB.sql +jdbc.initLocation=classpath:db/mysql/initDB.sql +jdbc.dataLocation=classpath:db/mysql/populateDB.sql # Property that determines which Hibernate dialect to use # (only applied with "applicationContext-hibernate.xml") -#hibernate.dialect=org.hibernate.dialect.MySQLDialect +hibernate.dialect=org.hibernate.dialect.MySQLDialect # Property that determines which database to use with an AbstractJpaVendorAdapter -#jpa.database=MYSQL +jpa.database=MYSQL