From 3ee5e912eed689ee0b528f46ceffd5b16cde3a95 Mon Sep 17 00:00:00 2001 From: Vitaliy Fedoriv Date: Sun, 6 Nov 2016 11:28:33 +0200 Subject: [PATCH] update findAll() method --- .../jdbc/JdbcPetRepositoryExtImpl.java | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetRepositoryExtImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetRepositoryExtImpl.java index 546e6dbd5..2fdd4749c 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetRepositoryExtImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcPetRepositoryExtImpl.java @@ -1,5 +1,6 @@ package org.springframework.samples.petclinic.repository.jdbc; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -11,10 +12,13 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.samples.petclinic.model.Owner; import org.springframework.samples.petclinic.model.Pet; +import org.springframework.samples.petclinic.model.PetType; import org.springframework.samples.petclinic.repository.OwnerRepositoryExt; import org.springframework.samples.petclinic.repository.PetRepositoryExt; import org.springframework.samples.petclinic.repository.VisitRepositoryExt; +import org.springframework.samples.petclinic.util.EntityUtils; import org.springframework.stereotype.Repository; @Repository @@ -22,23 +26,36 @@ import org.springframework.stereotype.Repository; public class JdbcPetRepositoryExtImpl extends JdbcPetRepositoryImpl implements PetRepositoryExt { private NamedParameterJdbcTemplate namedParameterJdbcTemplate; - + @Autowired public JdbcPetRepositoryExtImpl(DataSource dataSource, @Qualifier("OwnerRepositoryExt") OwnerRepositoryExt ownerRepository, @Qualifier("VisitRepositoryExt") VisitRepositoryExt visitRepository) { super(dataSource, ownerRepository, visitRepository); - // TODO super () ? this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); } @Override public Collection findAll() throws DataAccessException { Map params = new HashMap<>(); - return this.namedParameterJdbcTemplate.query( - "SELECT id, name, birth_date, type_id, owner_id FROM pets", - params, - BeanPropertyRowMapper.newInstance(Pet.class)); + Collection pets = new ArrayList(); + Collection jdbcPets = new ArrayList(); + jdbcPets = this.namedParameterJdbcTemplate. + query("SELECT pets.id, name, birth_date, type_id, owner_id FROM pets", + params, + new JdbcPetRowMapper()); + Collection petTypes = this.namedParameterJdbcTemplate.query( + "SELECT id, name FROM types ORDER BY name", new HashMap(), + BeanPropertyRowMapper.newInstance(PetType.class)); + Collection owners = this.namedParameterJdbcTemplate.query( + "SELECT id, first_name, last_name, address, city, telephone FROM owners ORDER BY last_name", new HashMap(), + BeanPropertyRowMapper.newInstance(Owner.class)); + for(JdbcPet jdbcPet : jdbcPets){ + jdbcPet.setType(EntityUtils.getById(petTypes, PetType.class, jdbcPet.getTypeId())); + jdbcPet.setOwner(EntityUtils.getById(owners, Owner.class, jdbcPet.getOwnerId())); + pets.add(jdbcPet); + } + return pets; } @Override