diff --git a/repository/src/main/java/com/iluwatar/repository/App.java b/repository/src/main/java/com/iluwatar/repository/App.java index 2442c854c..9c940b36d 100644 --- a/repository/src/main/java/com/iluwatar/repository/App.java +++ b/repository/src/main/java/com/iluwatar/repository/App.java @@ -24,12 +24,13 @@ public class App { /** * Program entry point * - * @param args command line args + * @param args + * command line args */ public static void main(String[] args) { - ClassPathXmlApplicationContext context = - new ClassPathXmlApplicationContext("applicationContext.xml"); + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + "applicationContext.xml"); PersonRepository repository = context.getBean(PersonRepository.class); Person peter = new Person("Peter", "Sagan", 17); diff --git a/repository/src/main/java/com/iluwatar/repository/AppConfig.java b/repository/src/main/java/com/iluwatar/repository/AppConfig.java index eceb13637..cca09d8aa 100644 --- a/repository/src/main/java/com/iluwatar/repository/AppConfig.java +++ b/repository/src/main/java/com/iluwatar/repository/AppConfig.java @@ -15,117 +15,122 @@ import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; /** - * Annotations based configuration for Spring + * This is the same example as in {@link App} but with annotations based + * configuration for Spring. * */ @EnableJpaRepositories public class AppConfig { - /** - * Creation of H2 db - * - * @return A new Instance of DataSource - */ - @Bean(destroyMethod = "close") - public DataSource dataSource() { - BasicDataSource basicDataSource = new BasicDataSource(); - basicDataSource.setDriverClassName("org.h2.Driver"); - basicDataSource.setUrl("jdbc:h2:~/databases/person"); - basicDataSource.setUsername("sa"); - basicDataSource.setPassword("sa"); - return (DataSource) basicDataSource; - } + /** + * Creation of H2 db + * + * @return A new Instance of DataSource + */ + @Bean(destroyMethod = "close") + public DataSource dataSource() { + BasicDataSource basicDataSource = new BasicDataSource(); + basicDataSource.setDriverClassName("org.h2.Driver"); + basicDataSource.setUrl("jdbc:h2:~/databases/person"); + basicDataSource.setUsername("sa"); + basicDataSource.setPassword("sa"); + return (DataSource) basicDataSource; + } - /** - * Factory to create a especific instance of Entity Manager - * @return - */ - @Bean - public LocalContainerEntityManagerFactoryBean entityManagerFactory() { - LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean(); - entityManager.setDataSource(dataSource()); - entityManager.setPackagesToScan("com.iluwatar"); - entityManager.setPersistenceProvider(new HibernatePersistenceProvider()); - entityManager.setJpaProperties(jpaProperties()); + /** + * Factory to create a especific instance of Entity Manager + * + * @return + */ + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean(); + entityManager.setDataSource(dataSource()); + entityManager.setPackagesToScan("com.iluwatar"); + entityManager.setPersistenceProvider(new HibernatePersistenceProvider()); + entityManager.setJpaProperties(jpaProperties()); - return entityManager; - } + return entityManager; + } - /** - * Properties for Jpa - * @return - */ - private Properties jpaProperties() { - Properties properties = new Properties(); - properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); - properties.setProperty("hibernate.hbm2ddl.auto", "create-drop"); - return properties; - } - - @Bean - public JpaTransactionManager transactionManager() throws SQLException { - JpaTransactionManager transactionManager = new JpaTransactionManager(); - transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); - return transactionManager; + /** + * Properties for Jpa + * + * @return + */ + private Properties jpaProperties() { + Properties properties = new Properties(); + properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); + properties.setProperty("hibernate.hbm2ddl.auto", "create-drop"); + return properties; + } + + @Bean + public JpaTransactionManager transactionManager() throws SQLException { + JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); + return transactionManager; + } + + /** + * Program entry point + * + * @param args + * command line args + */ + public static void main(String[] args) { + + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( + AppConfig.class); + PersonRepository repository = context.getBean(PersonRepository.class); + + Person peter = new Person("Peter", "Sagan", 17); + Person nasta = new Person("Nasta", "Kuzminova", 25); + Person john = new Person("John", "lawrence", 35); + Person terry = new Person("Terry", "Law", 36); + + // Add new Person records + repository.save(peter); + repository.save(nasta); + repository.save(john); + repository.save(terry); + + // Count Person records + System.out.println("Count Person records: " + repository.count()); + + // Print all records + List persons = (List) repository.findAll(); + for (Person person : persons) { + System.out.println(person); } - - /** - * Program entry point - * - * @param args command line args - */ - public static void main(String[] args) { - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); - PersonRepository repository = context.getBean(PersonRepository.class); + // Update Person + nasta.setName("Barbora"); + nasta.setSurname("Spotakova"); + repository.save(nasta); - Person peter = new Person("Peter", "Sagan", 17); - Person nasta = new Person("Nasta", "Kuzminova", 25); - Person john = new Person("John", "lawrence", 35); - Person terry = new Person("Terry", "Law", 36); + System.out.println("Find by id 2: " + repository.findOne(2L)); - // Add new Person records - repository.save(peter); - repository.save(nasta); - repository.save(john); - repository.save(terry); + // Remove record from Person + repository.delete(2L); - // Count Person records - System.out.println("Count Person records: " + repository.count()); + // count records + System.out.println("Count Person records: " + repository.count()); - // Print all records - List persons = (List) repository.findAll(); - for (Person person : persons) { - System.out.println(person); - } + // find by name + Person p = repository.findOne(new PersonSpecifications.NameEqualSpec("John")); + System.out.println("Find by John is " + p); - // Update Person - nasta.setName("Barbora"); - nasta.setSurname("Spotakova"); - repository.save(nasta); + // find by age + persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40)); - System.out.println("Find by id 2: " + repository.findOne(2L)); + System.out.println("Find Person with age between 20,40: "); + for (Person person : persons) { + System.out.println(person); + } - // Remove record from Person - repository.delete(2L); + context.close(); - // count records - System.out.println("Count Person records: " + repository.count()); - - // find by name - Person p = repository.findOne(new PersonSpecifications.NameEqualSpec("John")); - System.out.println("Find by John is " + p); - - // find by age - persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40)); - - System.out.println("Find Person with age between 20,40: "); - for (Person person : persons) { - System.out.println(person); - } - - context.close(); - - } + } } diff --git a/repository/src/main/java/com/iluwatar/repository/Person.java b/repository/src/main/java/com/iluwatar/repository/Person.java index 57439b8c0..ca4013b54 100644 --- a/repository/src/main/java/com/iluwatar/repository/Person.java +++ b/repository/src/main/java/com/iluwatar/repository/Person.java @@ -20,7 +20,8 @@ public class Person { private int age; - public Person() {} + public Person() { + } public Person(String name, String surname, int age) { this.name = name; @@ -52,7 +53,6 @@ public class Person { this.surname = surname; } - public int getAge() { return age; } diff --git a/repository/src/main/java/com/iluwatar/repository/PersonSpecifications.java b/repository/src/main/java/com/iluwatar/repository/PersonSpecifications.java index dadaae36b..ce9842dff 100644 --- a/repository/src/main/java/com/iluwatar/repository/PersonSpecifications.java +++ b/repository/src/main/java/com/iluwatar/repository/PersonSpecifications.java @@ -31,6 +31,7 @@ public class PersonSpecifications { } } + public static class NameEqualSpec implements Specification { public String name; @@ -47,4 +48,3 @@ public class PersonSpecifications { } } - diff --git a/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java b/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java index 5e4cf8021..6f8746aa6 100644 --- a/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java +++ b/repository/src/test/java/com/iluwatar/repository/AnnotationBasedRepositoryTest.java @@ -22,9 +22,10 @@ import com.google.common.collect.Lists; /** * Test case to test the functions of {@link PersonRepository}, beside the CRUD functions, the query * by {@link org.springframework.data.jpa.domain.Specification} are also test. + * */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { AppConfig.class}, loader = AnnotationConfigContextLoader.class) +@ContextConfiguration(classes = { AppConfig.class }, loader = AnnotationConfigContextLoader.class) public class AnnotationBasedRepositoryTest { @Resource @@ -107,4 +108,3 @@ public class AnnotationBasedRepositoryTest { } } - diff --git a/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java b/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java index 5f74f2be7..49e684bf1 100644 --- a/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java +++ b/repository/src/test/java/com/iluwatar/repository/AppConfigTest.java @@ -20,35 +20,36 @@ import org.springframework.transaction.annotation.Transactional; * */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { AppConfig.class}, loader = AnnotationConfigContextLoader.class) +@ContextConfiguration(classes = { AppConfig.class }, loader = AnnotationConfigContextLoader.class) public class AppConfigTest { - @Autowired - DataSource dataSource; - - /** - * Test for bean instance - */ - @Test - public void testDataSource() { - assertNotNull(dataSource); - } - - /** - * Test for correct query execution - * @throws SQLException - */ - @Test - @Transactional - public void testQuery() throws SQLException{ - ResultSet resultSet = dataSource.getConnection().createStatement().executeQuery("SELECT 1"); - String result = null; - String expected = "1"; - while (resultSet.next()) { - result = resultSet.getString(1); - - } - assertTrue(result.equals(expected)); - } + @Autowired + DataSource dataSource; + + /** + * Test for bean instance + */ + @Test + public void testDataSource() { + assertNotNull(dataSource); + } + + /** + * Test for correct query execution + * + * @throws SQLException + */ + @Test + @Transactional + public void testQuery() throws SQLException { + ResultSet resultSet = dataSource.getConnection().createStatement().executeQuery("SELECT 1"); + String result = null; + String expected = "1"; + while (resultSet.next()) { + result = resultSet.getString(1); + + } + assertTrue(result.equals(expected)); + } } diff --git a/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java b/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java index 26689321a..3d6708815 100644 --- a/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java +++ b/repository/src/test/java/com/iluwatar/repository/RepositoryTest.java @@ -23,7 +23,7 @@ import com.google.common.collect.Lists; * by {@link org.springframework.data.jpa.domain.Specification} are also test. */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = {"classpath:applicationContext.xml"}) +@ContextConfiguration(locations = { "classpath:applicationContext.xml" }) public class RepositoryTest { @Resource @@ -106,4 +106,3 @@ public class RepositoryTest { } } -