1 package org.kuali.common.jdbc.vendor.spring;
2
3 import org.kuali.common.jdbc.vendor.model.DatabaseVendor;
4 import org.kuali.common.jdbc.vendor.model.VendorDefault;
5 import org.kuali.common.jdbc.vendor.service.DatabaseVendorService;
6 import org.kuali.common.jdbc.vendor.service.MySqlDatabaseVendorService;
7 import org.kuali.common.jdbc.vendor.service.OracleDatabaseVendorService;
8 import org.kuali.common.util.Assert;
9 import org.kuali.common.util.spring.env.EnvironmentService;
10 import org.kuali.common.util.spring.service.SpringServiceConfig;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.context.annotation.Bean;
13 import org.springframework.context.annotation.Configuration;
14 import org.springframework.context.annotation.Import;
15
16 @Configuration
17 @Import({ SpringServiceConfig.class })
18 public class DatabaseVendorConfig {
19
20 private static final String VENDOR_KEY = "db.vendor";
21
22 @Autowired
23 EnvironmentService env;
24
25 @Bean
26 public DatabaseVendorService databaseVendorService() {
27 String vendorString = env.getString(VENDOR_KEY);
28 Assert.noBlanks(vendorString);
29 VendorDefault vendor = VendorDefault.valueOf(vendorString.toUpperCase());
30 switch (vendor) {
31 case ORACLE:
32 return new OracleDatabaseVendorService(env, vendor);
33 case MYSQL:
34 return new MySqlDatabaseVendorService(env, vendor);
35 default:
36 throw new IllegalStateException("Vendor [" + vendor + "] is unknown");
37
38 }
39 }
40
41 @Bean
42 public DatabaseVendor databaseVendor() {
43 return databaseVendorService().getDatabaseVendor();
44 }
45
46 }