001 package org.kuali.common.jdbc.sql.spring;
002
003 import org.kuali.common.jdbc.model.Credentials;
004 import org.kuali.common.jdbc.model.JdbcConnections;
005 import org.kuali.common.jdbc.service.spring.JdbcConnectionsConfig;
006 import org.kuali.common.jdbc.sql.model.AdminSql;
007 import org.kuali.common.jdbc.sql.model.DbaSql;
008 import org.kuali.common.jdbc.sql.model.SqlContext;
009 import org.kuali.common.jdbc.sql.model.SqlKeys;
010 import org.kuali.common.jdbc.vendor.model.DatabaseVendor;
011 import org.kuali.common.jdbc.vendor.spring.DatabaseVendorConfig;
012 import org.kuali.common.util.spring.env.EnvironmentService;
013 import org.kuali.common.util.spring.service.SpringServiceConfig;
014 import org.springframework.beans.factory.annotation.Autowired;
015 import org.springframework.context.annotation.Bean;
016 import org.springframework.context.annotation.Configuration;
017 import org.springframework.context.annotation.Import;
018
019 @Configuration
020 @Import({ SpringServiceConfig.class, DatabaseVendorConfig.class, JdbcConnectionsConfig.class })
021 public class SqlContextConfig {
022
023 @Autowired
024 DatabaseVendor vendor;
025
026 @Autowired
027 JdbcConnections connections;
028
029 @Autowired
030 EnvironmentService env;
031
032 @Bean
033 public SqlContext sqlContext() {
034 Credentials auth = connections.getNormal().getCredentials();
035
036 int threads = env.getInteger(SqlKeys.THREADS.getValue(), SqlContext.DEFAULT_THREADS);
037 String encoding = env.getString(SqlKeys.ENCODING.getValue()); // No default value, force them to supply this
038 String schema = env.getString(SqlKeys.SCHEMA.getValue(), auth.getUsername());
039 String username = env.getString(SqlKeys.USERNAME.getValue(), auth.getUsername());
040 String password = env.getString(SqlKeys.PASSWORD.getValue(), auth.getPassword());
041 String validate = env.getString(SqlKeys.VALIDATE.getValue(), vendor.getSql().getAdmin().getValidate());
042 String create = env.getString(SqlKeys.CREATE.getValue(), vendor.getSql().getAdmin().getCreate());
043 String drop = env.getString(SqlKeys.DROP.getValue(), vendor.getSql().getAdmin().getDrop());
044 String dbaBefore = env.getString(SqlKeys.DBA_BEFORE.getValue(), vendor.getSql().getDba().getBefore());
045 String dbaAfter = env.getString(SqlKeys.DBA_AFTER.getValue(), vendor.getSql().getDba().getAfter());
046
047 DbaSql dba = new DbaSql(dbaBefore, dbaAfter);
048 AdminSql admin = new AdminSql(validate, create, drop);
049 Credentials creds = new Credentials(username, password);
050
051 return new SqlContext(creds, dba, admin, schema, encoding, threads);
052 }
053 }