001 /**
002 * Copyright 2011 The Kuali Foundation Licensed under the
003 * Educational Community License, Version 2.0 (the "License"); you may
004 * not use this file except in compliance with the License. You may
005 * obtain a copy of the License at
006 *
007 * http://www.osedu.org/licenses/ECL-2.0
008 *
009 * Unless required by applicable law or agreed to in writing,
010 * software distributed under the License is distributed on an "AS IS"
011 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
012 * or implied. See the License for the specific language governing
013 * permissions and limitations under the License.
014 */
015
016 package org.kuali.common.impex.spring;
017
018 import java.io.File;
019 import java.util.List;
020
021 import org.kuali.common.impex.schema.DumpSchemaService;
022 import org.kuali.common.impex.schema.execute.DumpSchemaExecutable;
023 import org.kuali.common.impex.schema.execute.DumpSchemaRequest;
024 import org.kuali.common.impex.util.DumpConstants;
025 import org.kuali.common.util.spring.SpringUtils;
026 import org.springframework.beans.factory.annotation.Autowired;
027 import org.springframework.context.annotation.Bean;
028 import org.springframework.context.annotation.Configuration;
029 import org.springframework.context.annotation.Import;
030 import org.springframework.core.env.Environment;
031
032 @Configuration
033 @Import({ ExportServicesConfig.class })
034 public class DumpSchemaConfig {
035
036 private static final String FILE_KEY = "impex.dump.schema.file";
037 private static final String INCLUDES_KEY = "impex.dump.schema.includes";
038 private static final String EXCLUDES_KEY = "impex.dump.schema.excludes";
039 private static final String SKIP_KEY = "impex.dump.schema.skip";
040 private static final String RELATIVE_DIR_KEY = "impex.dump.schema.dir.relative";
041 private static final String LOG_EXCLUDES_KEY = "impex.dump.schema.log.excludes";
042
043 @Autowired
044 Environment env;
045
046 @Autowired
047 ExportServicesConfig exportServicesConfig;
048
049 @Bean
050 public DumpSchemaExecutable dumpSchemaExecutable() {
051
052 DumpSchemaService service = exportServicesConfig.exportDumpSchemaService();
053
054 // Extract some context from the environment
055 File outputFile = SpringUtils.getFile(env, FILE_KEY);
056 File relativeDir = SpringUtils.getFile(env, RELATIVE_DIR_KEY, outputFile);
057 boolean skip = SpringUtils.getBoolean(env, SKIP_KEY, false);
058 List<String> includes = SpringUtils.getNoneSensitiveListFromCSV(env, INCLUDES_KEY, DumpConstants.DEFAULT_REGEX_INCLUDE);
059 List<String> excludes = SpringUtils.getNoneSensitiveListFromCSV(env, EXCLUDES_KEY, DumpConstants.DEFAULT_REGEX_EXCLUDE);
060 boolean logExcludedSchemaObjects = SpringUtils.getBoolean(env, LOG_EXCLUDES_KEY, false);
061
062 // Setup the request
063 DumpSchemaRequest request = new DumpSchemaRequest();
064 request.setOutputFile(outputFile);
065 request.setExcludes(excludes);
066 request.setIncludes(includes);
067 request.setLogExcludedSchemaObjects(logExcludedSchemaObjects);
068 request.setRelativeDir(relativeDir);
069
070 // Setup the executable
071 return new DumpSchemaExecutable(service, skip, request);
072 }
073
074 }