001 package org.kuali.common.jdbc.vendor.spring;
002
003 import org.kuali.common.jdbc.vendor.model.DatabaseVendor;
004 import org.kuali.common.jdbc.vendor.model.VendorDefault;
005 import org.kuali.common.jdbc.vendor.service.DatabaseVendorService;
006 import org.kuali.common.jdbc.vendor.service.MySqlDatabaseVendorService;
007 import org.kuali.common.jdbc.vendor.service.OracleDatabaseVendorService;
008 import org.kuali.common.util.Assert;
009 import org.kuali.common.util.spring.env.EnvironmentService;
010 import org.kuali.common.util.spring.service.SpringServiceConfig;
011 import org.springframework.beans.factory.annotation.Autowired;
012 import org.springframework.context.annotation.Bean;
013 import org.springframework.context.annotation.Configuration;
014 import org.springframework.context.annotation.Import;
015
016 @Configuration
017 @Import({ SpringServiceConfig.class })
018 public class DatabaseVendorConfig {
019
020 private static final String VENDOR_KEY = "db.vendor";
021
022 @Autowired
023 EnvironmentService env;
024
025 @Bean
026 public DatabaseVendorService databaseVendorService() {
027 String vendorString = env.getString(VENDOR_KEY); // No default value. They must supply db.vendor
028 Assert.noBlanks(vendorString);
029 VendorDefault vendor = VendorDefault.valueOf(vendorString.toUpperCase());
030 switch (vendor) {
031 case ORACLE:
032 return new OracleDatabaseVendorService(env, vendor);
033 case MYSQL:
034 return new MySqlDatabaseVendorService(env, vendor);
035 default:
036 throw new IllegalStateException("Vendor [" + vendor + "] is unknown");
037
038 }
039 }
040
041 @Bean
042 public DatabaseVendor databaseVendor() {
043 return databaseVendorService().getDatabaseVendor();
044 }
045
046 }