View Javadoc

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); // No default value. They must supply db.vendor
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  }