Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
23723 amit.gupta 1
package com.smartdukaan.cron.config;
2
 
3
import java.util.Properties;
4
 
5
import javax.sql.DataSource;
6
 
23755 amit.gupta 7
import org.apache.logging.log4j.LogManager;
8
import org.apache.logging.log4j.Logger;
23723 amit.gupta 9
import org.hibernate.SessionFactory;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.beans.factory.annotation.Value;
12
import org.springframework.context.annotation.Bean;
23755 amit.gupta 13
import org.springframework.context.annotation.ComponentScan;
23723 amit.gupta 14
import org.springframework.context.annotation.Configuration;
23898 amit.gupta 15
import org.springframework.context.annotation.Primary;
23723 amit.gupta 16
import org.springframework.context.annotation.PropertySource;
17
import org.springframework.jdbc.datasource.DriverManagerDataSource;
18
import org.springframework.orm.hibernate5.HibernateTransactionManager;
19
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
20
import org.springframework.transaction.annotation.EnableTransactionManagement;
21
 
23738 amit.gupta 22
import com.spice.profitmandi.dao.repository.dtr.Mongo;
23
 
23723 amit.gupta 24
@Configuration
25
@EnableTransactionManagement
23755 amit.gupta 26
@ComponentScan("com.spice.profitmandi.*")
23723 amit.gupta 27
@PropertySource("classpath:META-INF/env.properties")
28
public class DBConfig {
29
 
23755 amit.gupta 30
	private static final Logger LOGGER=LogManager.getLogger(DBConfig.class);
23723 amit.gupta 31
 
23755 amit.gupta 32
 
33
	private static final String HIBERNATE_DIALECT = "hibernate.dialect";
23723 amit.gupta 34
 
23755 amit.gupta 35
	private static final String HIBERNATE_SHOW_SQL = "hibernate.show_sql";
23723 amit.gupta 36
 
23755 amit.gupta 37
	private static final String HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
23723 amit.gupta 38
 
23755 amit.gupta 39
	private static final String HIBERNATE_JDBC_BATCH_SIZE = "hibernate.jdbc.batch_size";
23723 amit.gupta 40
 
23755 amit.gupta 41
	private static final String HIBERNATE_C3P0_MIN_SIZE = "hibernate.c3p0.min_size";
23723 amit.gupta 42
 
23755 amit.gupta 43
	private static final String HIBERNATE_C3P0_MAX_SIZE = "hibernate.c3p0.max_size";
23723 amit.gupta 44
 
23755 amit.gupta 45
	private static final String HIBERNATE_C3P0_TIMEOUT = "hibernate.c3p0.timeout";
23723 amit.gupta 46
 
23755 amit.gupta 47
	private static final String HIBERNATE_C3P0_MAX_STATEMENTS = "hibernate.c3p0.max_statements";
23723 amit.gupta 48
 
23755 amit.gupta 49
	private static final String HIBERNATE_C3P0_IDLE_TEST_PERIOD = "hibernate.c3p0.idle_test_period";
50
 
23723 amit.gupta 51
	@Value("${hibernate.driver.class}")
52
	private String hibernateDriverClass;
53
 
54
	@Value("${hibernate.url}")
55
	private String hibernateUrl;
56
 
57
	@Value("${hibernate.user.name}")
58
	private String hibernateUserName;
59
 
60
	@Value("${hibernate.password}")
61
	private String hibernatePassword;
62
 
63
	@Value("${hibernate.dialect}")
64
	private String hibernateDialect;
65
 
66
	@Value("${hibernate.show_sql}")
67
	private String hibernateShowSql;
68
 
69
	@Value("${hibernate.format_sql}")
70
	private String hibernateFormatSql;
71
 
72
	@Value("${hibernate.jdbc.batch_size}")
73
	private String hibernateBatchSize;
74
 
75
	@Value("${hibernate.c3p0.min_size}")
76
	private String hibernateMinSize;
77
 
78
	@Value("${hibernate.c3p0.max_size}")
79
	private String hibernateMaxSize;
80
 
81
	@Value("${hibernate.c3p0.timeout}")
82
	private String hibernateTimeout;
83
 
84
	@Value("${hibernate.c3p0.max_statements}")
85
	private String hibernateMaxStatements;
86
 
87
	@Value("${hibernate.c3p0.idle_test_period}")
88
	private String hibernateIdleTestPeriod;
23738 amit.gupta 89
 
90
	@Value("${mongo.host}")
91
	private String mongoHost;
23723 amit.gupta 92
 
23738 amit.gupta 93
	@Value("${content.mongo.host}")
94
	private String contentMongoHost;
95
 
23898 amit.gupta 96
	@Primary
23723 amit.gupta 97
	@Bean(name = "dataSource")
98
	public DataSource dataSource() {
99
		DriverManagerDataSource dataSource = new DriverManagerDataSource();
100
		dataSource.setDriverClassName(hibernateDriverClass);
101
		dataSource.setUrl(hibernateUrl);
102
		dataSource.setUsername(hibernateUserName);
103
		dataSource.setPassword(hibernatePassword);
23755 amit.gupta 104
		LOGGER.info("DataSource returned {}", dataSource);
23723 amit.gupta 105
		return dataSource;
106
	}
107
 
108
	@Bean
109
	public Properties getHibernateProperties() {
110
		Properties dbProperties = new Properties();
111
		dbProperties.put(HIBERNATE_DIALECT, hibernateDialect);
112
		dbProperties.put(HIBERNATE_SHOW_SQL, hibernateShowSql);
113
		dbProperties.put(HIBERNATE_FORMAT_SQL, hibernateFormatSql);
114
		dbProperties.put(HIBERNATE_JDBC_BATCH_SIZE, hibernateBatchSize);
115
		dbProperties.put(HIBERNATE_C3P0_MIN_SIZE, hibernateMinSize);
116
		dbProperties.put(HIBERNATE_C3P0_MAX_SIZE, hibernateMaxSize);
117
		dbProperties.put(HIBERNATE_C3P0_TIMEOUT, hibernateTimeout);
118
		dbProperties.put(HIBERNATE_C3P0_MAX_STATEMENTS, hibernateMaxStatements);
119
		dbProperties.put(HIBERNATE_C3P0_IDLE_TEST_PERIOD, hibernateIdleTestPeriod);
120
		return dbProperties;
121
	}
23898 amit.gupta 122
 
123
	@Primary
23723 amit.gupta 124
	@Autowired
125
	@Bean(name = "sessionFactory")
126
	public SessionFactory getSessionFactory(DataSource dataSource) {
127
		LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
128
		sessionBuilder.addProperties(getHibernateProperties());
129
		sessionBuilder.scanPackages("com.spice.profitmandi.dao.*");
130
		return sessionBuilder.buildSessionFactory();
131
	}
23898 amit.gupta 132
 
133
	@Primary
23723 amit.gupta 134
	@Autowired
135
	@Bean(name = "transactionManager")
136
	public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
137
		HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
138
		return transactionManager;
139
	}
23738 amit.gupta 140
 
141
	@Bean
142
	public Mongo mongoClient(SessionFactory sessionFactory) {
143
		return new Mongo(mongoHost, contentMongoHost);
144
	}
23723 amit.gupta 145
}