package org.hbsp.cl.directory.config; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.*; import javax.sql.DataSource; @Configuration @PropertySource(value = {"classpath:properties/${env-name}/clauth-db.properties"}) public class PersistenceConfig { @Bean(name = {"lbeDataSource", "SU_LBE_DS"}) @Lazy public DataSource lbeDataSource( @Value("${clauth.db.driverClass}") String driverClass, @Value("${clauth.db.url}") String url, @Value("${clauth.db.cl.username}") String username, @Value("${clauth.db.cl.password}") String password) { return createDataSource(driverClass, url, username, password); } @Bean(name = "dpsDataSource") @Lazy public DataSource dpsDataSource( @Value("${clauth.db.driverClass}") String driverClass, @Value("${clauth.db.url}") String url, @Value("${clauth.db.auth.username}") String username, @Value("${clauth.db.auth.password}") String password) { return createDataSource(driverClass, url, username, password); } @Bean(name = "EBSdataSource") @Lazy public DataSource ebsDataSource( @Value("${clauth.db.driverClass}") String driverClass, @Value("${clauth.db.url}") String url, @Value("${clauth.db.ebs.username}") String username, @Value("${clauth.db.ebs.password}") String password) { return createDataSource(driverClass, url, username, password); } @Bean(name = "OIDdataSource") @Lazy public DataSource oidDataSource( @Value("${clauth.db.driverClass}") String driverClass, @Value("${clauth.db.url}") String url, @Value("${clauth.db.oid.username}") String username, @Value("${clauth.db.oid.password}") String password) { return createDataSource(driverClass, url, username, password); } private DataSource createDataSource(String driverClass, String url, String username, String password) { HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName(driverClass); hikariConfig.setUsername(username); hikariConfig.setPassword(password); hikariConfig.setJdbcUrl(url); hikariConfig.setMaximumPoolSize(10); return new HikariDataSource(hikariConfig); } }