001package org.kuali.common.util.metainf.spring; 002 003import java.io.File; 004import java.util.Collections; 005import java.util.List; 006 007import org.kuali.common.util.metainf.model.MetaInfContext; 008import org.kuali.common.util.metainf.service.MetaInfUtils; 009import org.kuali.common.util.nullify.NullUtils; 010import org.kuali.common.util.project.model.Build; 011import org.kuali.common.util.project.model.Project; 012import org.kuali.common.util.project.spring.AutowiredProjectConfig; 013import org.kuali.common.util.spring.SpringUtils; 014import org.kuali.common.util.spring.env.EnvironmentService; 015import org.kuali.common.util.spring.service.SpringServiceConfig; 016import org.springframework.beans.factory.annotation.Autowired; 017import org.springframework.context.annotation.Bean; 018import org.springframework.context.annotation.Configuration; 019import org.springframework.context.annotation.Import; 020 021@Configuration 022@Import({ AutowiredProjectConfig.class, MetaInfExecutableConfig.class, SpringServiceConfig.class }) 023public class MpxConfig implements MetaInfContextsConfig { 024 025 private static final String PREFIX = "mpx"; 026 private static final String DEFAULT_INCLUDES = "**/*.mpx"; 027 private static final String DEFAULT_EXCLUDES = NullUtils.NONE; 028 private static final String INCLUDES_KEY = MetaInfConfigUtils.getIncludesKey(PREFIX); 029 private static final String EXCLUDES_KEY = MetaInfConfigUtils.getExcludesKey(PREFIX); 030 031 private static final boolean DEFAULT_GENERATE_RELATIVE_PATHS = true; 032 private static final String RELATIVE_KEY = MetaInfUtils.PROPERTY_PREFIX + ".mpx.relative"; 033 034 @Autowired 035 EnvironmentService env; 036 037 @Autowired 038 Project project; 039 040 @Autowired 041 Build build; 042 043 @Override 044 @Bean 045 public List<MetaInfContext> metaInfContexts() { 046 boolean relativePaths = env.getBoolean(RELATIVE_KEY, DEFAULT_GENERATE_RELATIVE_PATHS); 047 List<String> includes = SpringUtils.getNoneSensitiveListFromCSV(env, INCLUDES_KEY, DEFAULT_INCLUDES); 048 List<String> excludes = SpringUtils.getNoneSensitiveListFromCSV(env, EXCLUDES_KEY, DEFAULT_EXCLUDES); 049 File outputFile = MetaInfUtils.getOutputFile(project, build, MetaInfGroup.DATA); 050 File scanDir = build.getOutputDir(); 051 String encoding = build.getEncoding(); 052 MetaInfContext context = new MetaInfContext.Builder(outputFile, encoding, scanDir).includes(includes).excludes(excludes).relativePaths(relativePaths).build(); 053 return Collections.singletonList(context); 054 } 055 056}