package com.gcc.erppostdata.config; import jakarta.persistence.EntityManagerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.sql.DataSource; @Configuration @EnableTransactionManagement public class DatabaseConfig { @Autowired private AppConfig appConfig; // String chDb="communityhall_live";//communityhall_live // String petDb="gcc_pets"; // // String mulPDb="coworkspace"; // String swimDb="swimtesting"; // // String userName="root"; // String password="root"; // String chDb= appConfig.getCmhDb(); // String petDb= appConfig.getPetDb(); // // String userName= appConfig.getUsername(); // String password= appConfig.getPassword(); @Configuration @EnableTransactionManagement @EnableJpaRepositories( basePackages = "com.gcc.erppostdata.petregistration", entityManagerFactoryRef = "petEntityManagerFactory", transactionManagerRef = "petTransactionManager" ) public class MysqlpetDataSourceConfig { // String petDb="gcc_pets"; @Primary @Bean(name = "mysqlPetRegistrationDataSource") public DataSource mysqlPetRegistrationDataSource() { System.out.println("AppConfig :---"+appConfig.getPetDb()); return DataSourceBuilder.create() .url("jdbc:mysql://localhost:3306/"+appConfig.getPetDb()) .username(appConfig.getUsername()) .password(appConfig.getPassword()) .driverClassName("com.mysql.cj.jdbc.Driver") .build(); } @Primary @Bean(name = "petEntityManagerFactory") public LocalContainerEntityManagerFactoryBean petEntityManagerFactory( EntityManagerFactoryBuilder builder, DataSource mysqlPetRegistrationDataSource) { return builder .dataSource(mysqlPetRegistrationDataSource) .packages("com.gcc.erppostdata.petregistration") .persistenceUnit("petPU") .build(); } @Primary @Bean(name = "petTransactionManager") public PlatformTransactionManager petTransactionManager( EntityManagerFactory petEntityManagerFactory) { return new JpaTransactionManager(petEntityManagerFactory); } } @Configuration @EnableTransactionManagement @EnableJpaRepositories( basePackages = "com.gcc.erppostdata.communityhall", entityManagerFactoryRef = "chEntityManagerFactory", transactionManagerRef = "chTransactionManager" ) public class MysqlchDataSourceConfig { @Bean(name = "mysqlCommunityHallDataSource") public DataSource mysqlCommunityHallDataSource() { System.out.println("User Name:- "+appConfig.getUsername()); System.out.println("Password :- "+appConfig.getPassword()); return DataSourceBuilder.create() .url("jdbc:mysql://localhost:3306/"+appConfig.getCmhDb()) .username(appConfig.getUsername()) .password(appConfig.getPassword()) .driverClassName("com.mysql.cj.jdbc.Driver") .build(); } @Bean(name = "chEntityManagerFactory") public LocalContainerEntityManagerFactoryBean chEntityManagerFactory( EntityManagerFactoryBuilder builder, @Qualifier("mysqlCommunityHallDataSource") DataSource dataSource) { return builder .dataSource(dataSource) .packages("com.gcc.erppostdata.communityhall") // Package containing Community Hall entities .persistenceUnit("chPU") .build(); } @Bean(name = "chTransactionManager") public PlatformTransactionManager chTransactionManager( @Qualifier("chEntityManagerFactory") EntityManagerFactory chEntityManagerFactory) { return new JpaTransactionManager(chEntityManagerFactory); } } @Bean(name = "mysqlSwimmingPoolDataSource") public DataSource mysqlSwimmingPoolDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/"+appConfig.getSwimDb()); dataSource.setUsername(appConfig.getUsername()); dataSource.setPassword(appConfig.getPassword()); return dataSource; } @Bean(name = "mysqlmudhalvarpadaipagamDataSource") public DataSource mysqlmudhalvarpadaipagamDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/"+appConfig.getMulPDb()); dataSource.setUsername(appConfig.getUsername()); dataSource.setPassword(appConfig.getPassword()); return dataSource; } @Bean(name = "mysqlerpPostData") public DataSource mysqlerpPostData() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/erppostdata"); dataSource.setUsername(appConfig.getUsername()); dataSource.setPassword(appConfig.getPassword()); return dataSource; } }