001 /**
002 * Copyright 2010-2013 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.common.jdbc.spring;
017
018 import java.util.ArrayList;
019 import java.util.HashMap;
020 import java.util.List;
021 import java.util.Map;
022
023 import org.kuali.common.jdbc.DefaultJdbcService;
024 import org.kuali.common.jdbc.DefaultSqlReader;
025 import org.kuali.common.jdbc.JdbcService;
026 import org.kuali.common.jdbc.SqlReader;
027 import org.kuali.common.jdbc.config.JdbcProjectConstants;
028 import org.kuali.common.jdbc.supplier.LocationSupplier;
029 import org.kuali.common.jdbc.supplier.LocationSupplierContext;
030 import org.kuali.common.jdbc.supplier.LocationSupplierSourceBean;
031 import org.kuali.common.jdbc.supplier.LocationSuppliersFactoryBean;
032 import org.kuali.common.jdbc.supplier.SqlLocationSupplier;
033 import org.kuali.common.jdbc.supplier.SqlSupplier;
034 import org.kuali.common.util.nullify.NullUtils;
035 import org.kuali.common.util.project.ProjectService;
036 import org.kuali.common.util.project.ProjectUtils;
037 import org.kuali.common.util.project.model.Project;
038 import org.kuali.common.util.project.spring.ProjectServiceConfig;
039 import org.kuali.common.util.spring.SpringUtils;
040 import org.springframework.beans.factory.annotation.Autowired;
041 import org.springframework.context.annotation.Bean;
042 import org.springframework.context.annotation.Configuration;
043 import org.springframework.context.annotation.Import;
044 import org.springframework.core.env.ConfigurableEnvironment;
045
046 /**
047 * @deprecated
048 */
049 @Configuration
050 @Import({ ProjectServiceConfig.class })
051 @Deprecated
052 public class JdbcCommonConfig {
053
054 protected final static String CONTEXT_KEY_SUFFIX = ".context";
055
056 @Autowired
057 ConfigurableEnvironment env;
058
059 @Autowired
060 ProjectServiceConfig projectServiceConfig;
061
062 @Bean
063 public SqlReader jdbcSqlReader() {
064 return new DefaultSqlReader();
065 }
066
067 @Bean
068 public JdbcService jdbcService() {
069 return new DefaultJdbcService();
070 }
071
072 @Bean
073 public Map<String, LocationSupplierSourceBean> jdbcExtensionMappings() {
074
075 ProjectService service = projectServiceConfig.projectService();
076
077 Project project = service.getProject(JdbcProjectConstants.PROJECT_IDENTIFIER);
078
079 SqlLocationSupplier sls = new SqlLocationSupplier();
080 sls.setReader(jdbcSqlReader());
081 sls.setEncoding(ProjectUtils.getEncoding(project));
082
083 LocationSupplierSourceBean lssb = new LocationSupplierSourceBean();
084 lssb.setSupplierClass(SqlLocationSupplier.class);
085 lssb.setSupplierInstance(sls);
086
087 Map<String, LocationSupplierSourceBean> map = new HashMap<String, LocationSupplierSourceBean>();
088 map.put("sql", lssb);
089 return map;
090 }
091
092 public List<SqlSupplier> getSqlSuppliers(String propertyKey) {
093 String contextValue = SpringUtils.getProperty(env, propertyKey + CONTEXT_KEY_SUFFIX, NullUtils.NONE);
094 LocationSupplierContext context = new LocationSupplierContext();
095 context.setValue(contextValue);
096
097 LocationSuppliersFactoryBean factory = new LocationSuppliersFactoryBean();
098 factory.setPropertyKey(propertyKey);
099 factory.setEnv(env);
100 factory.setExtensionMappings(jdbcExtensionMappings());
101 factory.setContext(context);
102 List<LocationSupplier> list = factory.getObject();
103 return new ArrayList<SqlSupplier>(list);
104 }
105 }