All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.jasonmfehr.combiner.file.FileLocator Maven / Gradle / Ivy

package com.github.jasonmfehr.combiner.file;

import java.util.Arrays;
import java.util.List;

import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.util.DirectoryScanner;

import com.github.jasonmfehr.combiner.logging.ParameterizedLogger;

/**
 * Searches through a base directory locating files that match a 
 * set of includes patterns but do not match a set of excludes patterns.

* * Objects of this class are not thread safe. * * @author jasonmfehr * @since 1.0.0 * */ @Component(role=FileLocator.class) public class FileLocator { @Requirement private FileValidator fileValidator; @Requirement private ParameterizedLogger logger; private final DirectoryScanner directoryScanner; public FileLocator() { this.directoryScanner = new DirectoryScanner(); } /** * Locate a set of files the match the provided includes patterns * but do not match the provided excludes patterns.

* * @param baseDir {@link String} containing an absolute path to a * base directory that will be searched * @param includes {@link List} containing file patterns to include in the * results set * @param excludes {@link List} containing file patterns to exclude from the * results set * * @return {@link List} of file paths relative to the baseDir * * @throws NullPointerException if the baseDir parameter is null * @throws IllegalArgumentException if the directory at this path * specified in the baseDir parameter * does not exist or is not readable */ public List locateFiles(final String baseDir, final List includes, final List excludes) { final List filesList; fileValidator.existsAndReadable(baseDir); this.logger.debugWithParams("FileLocator scanning directory {0} for input files", baseDir); directoryScanner.addDefaultExcludes(); directoryScanner.setBasedir(baseDir); directoryScanner.setIncludes(includes.toArray(new String[includes.size()])); if(excludes != null){ directoryScanner.setExcludes(excludes.toArray(new String[excludes.size()])); } directoryScanner.scan(); filesList = Arrays.asList(directoryScanner.getIncludedFiles()); this.logger.infoWithParams("FileLocator located {0} files", filesList.size()); if(this.logger.isDebugEnabled()){ for(final String s : filesList){ this.logger.debug(" " + s); } } return filesList; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy