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    }