001 package org.kuali.common.jdbc.reader.spring;
002
003 import java.util.List;
004
005 import org.kuali.common.jdbc.reader.SqlReader;
006 import org.kuali.common.jdbc.reader.DefaultSqlReader;
007 import org.kuali.common.jdbc.reader.model.Comments;
008 import org.kuali.common.jdbc.reader.model.Delimiter;
009 import org.kuali.common.jdbc.reader.model.DelimiterMode;
010 import org.kuali.common.jdbc.reader.model.LineSeparator;
011 import org.kuali.common.util.CollectionUtils;
012 import org.kuali.common.util.spring.SpringUtils;
013 import org.kuali.common.util.spring.env.EnvironmentService;
014 import org.kuali.common.util.spring.service.SpringServiceConfig;
015 import org.springframework.beans.factory.annotation.Autowired;
016 import org.springframework.context.annotation.Bean;
017 import org.springframework.context.annotation.Configuration;
018 import org.springframework.context.annotation.Import;
019
020 @Configuration
021 @Import({ SpringServiceConfig.class })
022 public class SqlReaderConfig {
023
024 private static final String DELIMITER_KEY = "sql.delimiter";
025 private static final String DELIMITER_MODE_KEY = "sql.delimiter.mode";
026 private static final String LINE_SEPARATOR_KEY = "sql.line.separator";
027 private static final String COMMENTS_IGNORE_KEY = "sql.comments.ignore";
028 private static final String COMMENTS_TOKENS_KEY = "sql.comments.tokens";
029 private static final String TRIM_KEY = "sql.trim";
030
031 @Autowired
032 EnvironmentService env;
033
034 @Bean
035 public SqlReader sqlReader() {
036 boolean trim = env.getBoolean(TRIM_KEY, DefaultSqlReader.DEFAULT_TRIM);
037 Comments comments = sqlComments();
038 LineSeparator separator = sqlLineSeparator();
039 Delimiter delimiter = sqlDelimiter();
040 return new DefaultSqlReader(delimiter, separator, trim, comments);
041 }
042
043 @Bean
044 public Comments sqlComments() {
045 boolean ignore = env.getBoolean(COMMENTS_IGNORE_KEY, Comments.DEFAULT_IGNORE);
046 List<String> tokens = SpringUtils.getNoneSensitiveListFromCSV(env, COMMENTS_TOKENS_KEY, CollectionUtils.getCSV(Comments.DEFAULT_TOKENS));
047 return new Comments(ignore, tokens);
048 }
049
050 @Bean
051 public LineSeparator sqlLineSeparator() {
052 String value = env.getString(LINE_SEPARATOR_KEY, LineSeparator.DEFAULT_VALUE.name());
053 return LineSeparator.valueOf(value.toUpperCase());
054 }
055
056 @Bean
057 public Delimiter sqlDelimiter() {
058 String delimiter = env.getString(DELIMITER_KEY, Delimiter.DEFAULT_VALUE);
059 String modeString = env.getString(DELIMITER_MODE_KEY, DelimiterMode.DEFAULT_VALUE.name());
060 DelimiterMode mode = DelimiterMode.valueOf(modeString.toUpperCase());
061 return new Delimiter(delimiter, mode);
062 }
063
064 }