001 package org.kuali.common.jdbc.sql.spring;
002
003 import javax.sql.DataSource;
004
005 import org.kuali.common.jdbc.listeners.LogSqlListener;
006 import org.kuali.common.jdbc.listeners.SqlListener;
007 import org.kuali.common.jdbc.model.LogSqlMode;
008 import org.kuali.common.jdbc.model.context.JdbcContext;
009 import org.kuali.common.jdbc.reader.SqlReader;
010 import org.kuali.common.jdbc.reader.spring.SqlReaderConfig;
011 import org.kuali.common.jdbc.service.spring.DataSourceConfig;
012 import org.kuali.common.jdbc.sql.model.SqlContext;
013 import org.kuali.common.jdbc.suppliers.ComplexStringSupplier;
014 import org.kuali.common.jdbc.suppliers.SqlSupplier;
015 import org.kuali.common.util.log.LoggerLevel;
016 import org.springframework.beans.factory.annotation.Autowired;
017 import org.springframework.context.annotation.Configuration;
018 import org.springframework.context.annotation.Import;
019
020 @Configuration
021 @Import({ DataSourceConfig.class, SqlContextConfig.class, SqlReaderConfig.class })
022 public class DbaContextConfig {
023
024 private static final String BEFORE = "[dba:before]";
025 private static final String AFTER = "[dba:after]";
026
027 @Autowired
028 SqlContext context;
029
030 @Autowired
031 SqlReader reader;
032
033 @Autowired
034 DataSourceConfig dataSourceConfig;
035
036 public JdbcContext dbaBeforeContext() {
037 return getContext(BEFORE, context.getDba().getBefore());
038 }
039
040 public JdbcContext dbaAfterContext() {
041 return getContext(AFTER, context.getDba().getAfter());
042 }
043
044 protected JdbcContext getContext(String message, String sql) {
045 DataSource dataSource = dataSourceConfig.dbaDataSource();
046 SqlSupplier supplier = new ComplexStringSupplier(sql, reader);
047 SqlListener listener = new LogSqlListener(LoggerLevel.INFO, LogSqlMode.BEFORE);
048 return new JdbcContext.Builder(dataSource, supplier).message(message).listener(listener).build();
049 }
050 }