ba8060da71cdd1573fdacac2ad3060385b853362
[vid.git] / vid-app-common / src / test / java / org / onap / vid / config / DataSourceConfig.java
1 package org.onap.vid.config;
2
3
4 import org.hibernate.SessionFactory;
5 import org.onap.portalsdk.core.service.DataAccessService;
6 import org.onap.portalsdk.core.service.DataAccessServiceImpl;
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.context.annotation.Bean;
9 import org.springframework.context.annotation.Configuration;
10 import org.springframework.jdbc.datasource.DriverManagerDataSource;
11 import org.springframework.orm.hibernate4.HibernateTransactionManager;
12 import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
13 import org.springframework.transaction.PlatformTransactionManager;
14 import org.springframework.transaction.annotation.EnableTransactionManagement;
15
16 import javax.sql.DataSource;
17 import java.util.Properties;
18
19 @Configuration
20 @EnableTransactionManagement
21 public class DataSourceConfig {
22
23     @Bean
24     @Autowired
25     public LocalSessionFactoryBean sessionFactory(DataSource dataSource) {
26         LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
27         sessionFactory.setDataSource(dataSource);
28         //I used this class org.onap.portalsdk.core.conf.HibernateConfiguration to learn how to config the session factory
29         // and use the following url for actual h2 properties
30         //https://github.com/levi-putna/Hibernate-H2-Example/blob/master/hibernate-h2-example/src/hibernate.cfg.xml
31         Properties properties = getH2Properties();
32
33         properties.put("connection.pool_size", 10);
34         properties.put("cache.provider_class", "org.hibernate.cache.internal.NoCacheProvider");
35         properties.put("hibernate.show_sql", false);
36         properties.put("hbm2ddl.auto", "create");
37         properties.put("hibernate.hbm2ddl.auto", "create");
38
39         sessionFactory.setPackagesToScan("org.onap");
40         sessionFactory.setHibernateProperties(properties);
41         return sessionFactory;
42     }
43
44     @Bean
45     public DataSource getDataSource() {
46         DriverManagerDataSource dataSource = new DriverManagerDataSource();
47         dataSource.setDriverClassName("org.h2.Driver");
48         dataSource.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1");
49         dataSource.setUsername("sa");
50         dataSource.setPassword("");
51         return dataSource;
52     }
53
54     public Properties getH2Properties() {
55         Properties properties = new Properties();
56         properties.put("dialect", "org.hibernate.dialect.H2Dialect");
57         properties.put("hibernate.default_schema", "PUBLIC");
58         return properties;
59     }
60
61     public Properties getSqliteProperties() {
62         Properties properties = new Properties();
63         properties.put("connection.driver_class", "org.sqlite.JDBC");
64         properties.put("connection.url", "jdbc:sqlite:memory:myDb");
65         properties.put("connection.username", "sa");
66         properties.put("connection.password", "sa");
67         properties.put("hibernate.default_schema", "PUBLIC");
68         properties.put("dialect", "com.enigmabridge.hibernate.dialect.SQLiteDialect");
69         return properties;
70     }
71
72     @Bean
73     public DataAccessService dataAccessService() {
74         return new DataAccessServiceImpl();
75     }
76
77     @Bean
78     @Autowired
79     public PlatformTransactionManager transactionManager(SessionFactory sessionFactory) {
80         return new HibernateTransactionManager(sessionFactory);
81     }
82 }