Subversion Repositories SmartDukaan

Rev

Rev 34686 | Rev 35380 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
21598 ashik.ali 1
package com.spice.profitmandi.dao.config;
2
 
33910 amit.gupta 3
import com.spice.profitmandi.dao.repository.dtr.Mongo;
4
import com.spice.profitmandi.web.config.AppConfig;
34686 amit.gupta 5
import com.zaxxer.hikari.HikariConfig;
6
import com.zaxxer.hikari.HikariDataSource;
21598 ashik.ali 7
import org.hibernate.SessionFactory;
8
import org.springframework.context.annotation.Bean;
9
import org.springframework.context.annotation.ComponentScan;
10
import org.springframework.context.annotation.Configuration;
23884 amit.gupta 11
import org.springframework.context.annotation.Primary;
21598 ashik.ali 12
import org.springframework.core.io.Resource;
13
import org.springframework.orm.hibernate5.HibernateTransactionManager;
14
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
15
import org.springframework.transaction.annotation.EnableTransactionManagement;
16
 
33910 amit.gupta 17
import javax.sql.DataSource;
18
import java.io.IOException;
19
import java.util.Properties;
21598 ashik.ali 20
 
21
@Configuration
22
@EnableTransactionManagement
23884 amit.gupta 23
@ComponentScan({ "com.spice.profitmandi.dao.*" })
34686 amit.gupta 24
public class WebDBContextConfigure {
25
 
21598 ashik.ali 26
	private static final String HIBERNATE_DRIVER_CLASS = "hibernate.driver.class";
27
	private static final String HIBERNATE_URL = "hibernate.url";
28
	private static final String HIBERNATE_USER_NAME = "hibernate.user.name";
29
	private static final String HIBERNATE_PASSWORD = "hibernate.password";
34686 amit.gupta 30
	private static final String HIKARI_MAX_POOL_SIZE = "hikari.maximumPoolSize";
31
	private static final String HIKARI_MIN_IDLE = "hikari.minimumIdle";
32
	private static final String HIKARI_IDLE_TIMEOUT = "hikari.idleTimeout";
33
	private static final String HIKARI_MAX_LIFETIME = "hikari.maxLifetime";
34
	private static final String HIKARI_CONNECTION_TIMEOUT = "hikari.connectionTimeout";
35
 
21598 ashik.ali 36
	private Resource resource = AppConfig.getResource();
37
 
38
	@Bean(name = "dataSource")
39
	public DataSource dataSource() {
40
		Properties properties = new Properties();
41
		try {
42
			properties.load(resource.getInputStream());
43
		} catch (IOException e) {
44
			e.printStackTrace();
45
		}
34686 amit.gupta 46
 
47
		HikariConfig config = new HikariConfig();
48
		config.setDriverClassName(properties.getProperty(HIBERNATE_DRIVER_CLASS));
49
		config.setJdbcUrl(properties.getProperty(HIBERNATE_URL));
50
		config.setUsername(properties.getProperty(HIBERNATE_USER_NAME));
51
		config.setPassword(properties.getProperty(HIBERNATE_PASSWORD));
52
		config.setMaximumPoolSize(Integer.parseInt(properties.getProperty(HIKARI_MAX_POOL_SIZE, "20")));
53
		config.setMinimumIdle(Integer.parseInt(properties.getProperty(HIKARI_MIN_IDLE, "2")));
54
		config.setIdleTimeout(Long.parseLong(properties.getProperty(HIKARI_IDLE_TIMEOUT, "30000")));
55
		config.setMaxLifetime(Long.parseLong(properties.getProperty(HIKARI_MAX_LIFETIME, "1800000")));
56
		config.setConnectionTimeout(Long.parseLong(properties.getProperty(HIKARI_CONNECTION_TIMEOUT, "30000")));
35042 amit 57
		config.setLeakDetectionThreshold(30000);
34686 amit.gupta 58
 
59
		return new HikariDataSource(config);
21598 ashik.ali 60
	}
61
 
62
	@Bean
63
	public Properties getHibernateProperties() {
64
		Properties dbProperties = new Properties();
65
		Properties properties = new Properties();
66
		try {
67
			properties.load(resource.getInputStream());
68
		} catch (IOException e) {
69
			e.printStackTrace();
70
		}
34686 amit.gupta 71
		dbProperties.put("hibernate.dialect", properties.getProperty("hibernate.dialect"));
72
		dbProperties.put("hibernate.show_sql", properties.getProperty("hibernate.show_sql"));
73
		dbProperties.put("hibernate.format_sql", properties.getProperty("hibernate.format_sql"));
74
		dbProperties.put("hibernate.jdbc.batch_size", properties.getProperty("hibernate.jdbc.batch_size"));
21598 ashik.ali 75
		return dbProperties;
76
	}
77
 
23884 amit.gupta 78
	@Primary
21598 ashik.ali 79
	@Bean(name = "sessionFactory")
80
	public SessionFactory getSessionFactory(DataSource dataSource) {
81
		LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
82
		sessionBuilder.addProperties(getHibernateProperties());
83
		sessionBuilder.scanPackages("com.spice.profitmandi.dao.*");
84
		return sessionBuilder.buildSessionFactory();
85
	}
86
 
23884 amit.gupta 87
	@Primary
21598 ashik.ali 88
	@Bean(name = "transactionManager")
89
	public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
34686 amit.gupta 90
		return new HibernateTransactionManager(sessionFactory);
21598 ashik.ali 91
	}
22172 amit.gupta 92
 
93
	@Bean
22178 amit.gupta 94
	public Mongo mongoClient(SessionFactory sessionFactory) {
22172 amit.gupta 95
		Properties properties = new Properties();
96
		try {
97
			properties.load(resource.getInputStream());
98
		} catch (IOException e) {
99
			e.printStackTrace();
100
		}
26850 amit.gupta 101
		return new Mongo(properties.getProperty("content.mongo.host"),
24383 amit.gupta 102
				properties.getProperty("content.mongo.host"));
22178 amit.gupta 103
	}
34686 amit.gupta 104
}