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}