Subversion Repositories SmartDukaan

Rev

View as "text/plain" | Blame | Last modification | View Log | RSS feed

package com.spice.profitmandi.dao.config;
import java.io.IOException;


import java.util.Properties;

import javax.sql.DataSource;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.spice.profitmandi.dao.repository.dtr.Mongo;
import com.spice.profitmandi.web.config.AppConfig;

@Configuration
@EnableTransactionManagement
@ComponentScan({ "com.spice.profitmandi.*" })
public class WebDBContextConfigure{
        
        private static final String HIBERNATE_DRIVER_CLASS = "hibernate.driver.class";
        private static final String HIBERNATE_URL = "hibernate.url";
        private static final String HIBERNATE_USER_NAME = "hibernate.user.name";
        private static final String HIBERNATE_PASSWORD = "hibernate.password";
        private static final String HIBERNATE_DIALECT = "hibernate.dialect";
        private static final String HIBERNATE_SHOW_SQL = "hibernate.show_sql";
        private static final String HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
        private static final String HIBERNATE_JDBC_BATCH_SIZE = "hibernate.jdbc.batch_size";
        private static final String HIBERNATE_C3P0_MIN_SIZE = "hibernate.c3p0.min_size";
        private static final String HIBERNATE_C3P0_MAX_SIZE = "hibernate.c3p0.max_size";
        private static final String HIBERNATE_C3P0_TIMEOUT= "hibernate.c3p0.timeout";
        private static final String HIBERNATE_C3P0_MAX_STATEMENTS = "hibernate.c3p0.max_statements";
        private static final String HIBERNATE_C3P0_IDLE_TEST_PERIOD = "hibernate.c3p0.idle_test_period";
        private Resource resource = AppConfig.getResource();

        @Bean(name = "dataSource")
        public DataSource dataSource() {
                Properties properties = new Properties();
                try {
                        properties.load(resource.getInputStream());
                } catch (IOException e) {
                        e.printStackTrace();
                }
                DriverManagerDataSource dataSource = new DriverManagerDataSource();
                dataSource.setDriverClassName(properties.getProperty(HIBERNATE_DRIVER_CLASS));
                dataSource.setUrl(properties.getProperty(HIBERNATE_URL));
                dataSource.setUsername(properties.getProperty(HIBERNATE_USER_NAME));
                dataSource.setPassword(properties.getProperty(HIBERNATE_PASSWORD));
                return dataSource;
        }

        @Bean
        public Properties getHibernateProperties() {
                Properties dbProperties = new Properties();
                Properties properties = new Properties();
                try {
                        properties.load(resource.getInputStream());
                } catch (IOException e) {
                        e.printStackTrace();
                }
                dbProperties.put(HIBERNATE_DIALECT, properties.getProperty(HIBERNATE_DIALECT));
                dbProperties.put(HIBERNATE_SHOW_SQL, properties.getProperty(HIBERNATE_SHOW_SQL));
                dbProperties.put(HIBERNATE_FORMAT_SQL, properties.getProperty(HIBERNATE_FORMAT_SQL));
                dbProperties.put(HIBERNATE_JDBC_BATCH_SIZE, properties.getProperty(HIBERNATE_JDBC_BATCH_SIZE));
                dbProperties.put(HIBERNATE_C3P0_MIN_SIZE, properties.getProperty(HIBERNATE_C3P0_MIN_SIZE));
                dbProperties.put(HIBERNATE_C3P0_MAX_SIZE, properties.getProperty(HIBERNATE_C3P0_MAX_SIZE));
                dbProperties.put(HIBERNATE_C3P0_TIMEOUT, properties.getProperty(HIBERNATE_C3P0_TIMEOUT));
                dbProperties.put(HIBERNATE_C3P0_MAX_STATEMENTS, properties.getProperty(HIBERNATE_C3P0_MAX_STATEMENTS));
                dbProperties.put(HIBERNATE_C3P0_IDLE_TEST_PERIOD, properties.getProperty(HIBERNATE_C3P0_IDLE_TEST_PERIOD));
                return dbProperties;
        }

        @Autowired
        @Bean(name = "sessionFactory")
        public SessionFactory getSessionFactory(DataSource dataSource) {
                LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
                sessionBuilder.addProperties(getHibernateProperties());
                sessionBuilder.scanPackages("com.spice.profitmandi.dao.*");
                return sessionBuilder.buildSessionFactory();
        }

        @Autowired
        @Bean(name = "transactionManager")
        public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
                HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
                return transactionManager;
        }
        

        @Autowired
        @Bean
        public Mongo mongoClient(SessionFactory sessionFactory) {
                Properties properties = new Properties();
                try {
                        properties.load(resource.getInputStream());
                } catch (IOException e) {
                        e.printStackTrace();
                }
                return new Mongo(properties.getProperty("mongo.host"), properties.getProperty("content.mongo.host"));
        }
}