Java Code Examples for org.codehaus.plexus.util.DirectoryScanner#getIncludedFiles()

The following examples show how to use org.codehaus.plexus.util.DirectoryScanner#getIncludedFiles() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ProjectScanner.java    From wisdom with Apache License 2.0 6 votes vote down vote up
/**
 * Gets the list of packages from {@literal src/test/java}. This method scans for ".class" files in {@literal
 * target/test-classes}.
 *
 * @return the list of packages, empty if none.
 */
public Set<String> getPackagesFromTestSources() {
    Set<String> packages = new LinkedHashSet<>();
    File classes = new File(basedir, "target/test-classes");
    if (classes.isDirectory()) {
        DirectoryScanner scanner = new DirectoryScanner();
        scanner.setBasedir(classes);
        scanner.setIncludes(new String[]{"**/*.class"});
        scanner.addDefaultExcludes();
        scanner.scan();

        for (int i = 0; i < scanner.getIncludedFiles().length; i++) {
            packages.add(Packages.getPackageName(scanner.getIncludedFiles()[i]));
        }
    }

    return packages;
}
 
Example 2
Source File: AbstractXtendCompilerMojo.java    From xtext-xtend with Eclipse Public License 2.0 6 votes vote down vote up
private String scanBootclasspath(String javaHome, String[] includes, String[] excludes) {
	getLog().debug(
			"Scanning bootClassPath:\n" + "\tjavaHome = " + javaHome + "\n" + "\tincludes = "
					+ Arrays.toString(includes) + "\n" + "\texcludes = " + Arrays.toString(excludes));
	DirectoryScanner scanner = new DirectoryScanner();
	scanner.setBasedir(new File(javaHome));
	scanner.setIncludes(includes);
	scanner.setExcludes(excludes);
	scanner.scan();

	StringBuilder bootClassPath = new StringBuilder();
	String[] includedFiles = scanner.getIncludedFiles();
	for (int i = 0; i < includedFiles.length; i++) {
		if (i > 0) {
			bootClassPath.append(File.pathSeparator);
		}
		bootClassPath.append(new File(javaHome, includedFiles[i]).getAbsolutePath());
	}
	return bootClassPath.toString();
}
 
Example 3
Source File: ThemeBuilderUtils.java    From rice with Educational Community License v2.0 6 votes vote down vote up
/**
 * Retrieves a list of file names that are in the given directory, possibly filtered by the list of include
 * patterns or exclude patterns
 *
 * @param baseDirectory directory to retrieve file names from
 * @param includes list of patterns to match against for file names to include, can include Ant patterns
 * @param excludes list of patterns to match for excluded file names, can include Ant patterns
 * @return list of file names within the directory that match all given patterns
 */
public static List<String> getDirectoryFileNames(File baseDirectory, String[] includes, String[] excludes) {
    List<String> files = new ArrayList<String>();

    DirectoryScanner scanner = new DirectoryScanner();

    if (includes != null) {
        scanner.setIncludes(includes);
    }

    if (excludes != null) {
        scanner.setExcludes(excludes);
    }

    scanner.setCaseSensitive(false);
    scanner.addDefaultExcludes();
    scanner.setBasedir(baseDirectory);

    scanner.scan();

    for (String includedFilename : scanner.getIncludedFiles()) {
        files.add(includedFilename);
    }

    return files;
}
 
Example 4
Source File: ProjectScanner.java    From wisdom with Apache License 2.0 6 votes vote down vote up
/**
 * Gets the list of packages from {@literal src/main/java}. This method scans for ".class" files in {@literal
 * target/classes}.
 *
 * @return the list of packages, empty if none.
 */
public Set<String> getPackagesFromMainSources() {
    Set<String> packages = new LinkedHashSet<>();
    File classes = getClassesDirectory();
    if (classes.isDirectory()) {
        DirectoryScanner scanner = new DirectoryScanner();
        scanner.setBasedir(classes);
        scanner.setIncludes(new String[]{"**/*.class"});
        scanner.addDefaultExcludes();
        scanner.scan();

        for (int i = 0; i < scanner.getIncludedFiles().length; i++) {
            packages.add(Packages.getPackageName(scanner.getIncludedFiles()[i]));
        }
    }

    return packages;
}
 
Example 5
Source File: FilteredResourcesCoSSkipper.java    From netbeans with Apache License 2.0 5 votes vote down vote up
private boolean hasChangedResources(Resource r, long stamp) {
        String dir = r.getDirectory();
        File dirFile = FileUtil.normalizeFile(new File(dir));
  //      System.out.println("checkresource dirfile =" + dirFile);
        if (dirFile.exists()) {
            List<File> toCopy = new ArrayList<File>();
            DirectoryScanner ds = new DirectoryScanner();
            ds.setBasedir(dirFile);
            //includes/excludes
            String[] incls = r.getIncludes().toArray(new String[0]);
            if (incls.length > 0) {
                ds.setIncludes(incls);
            } else {
                ds.setIncludes(DEFAULT_INCLUDES);
            }
            String[] excls = r.getExcludes().toArray(new String[0]);
            if (excls.length > 0) {
                ds.setExcludes(excls);
            }
            ds.addDefaultExcludes();
            ds.scan();
            String[] inclds = ds.getIncludedFiles();
//            System.out.println("found=" + inclds.length);
            for (String inc : inclds) {
                File f = new File(dirFile, inc);
                if (f.lastModified() >= stamp) { 
                    toCopy.add(FileUtil.normalizeFile(f));
                }
            }
            if (toCopy.size() > 0) {
                    //the case of filtering source roots, here we want to return false
                    //to skip CoS altogether.
                return true;
            }
        }
        return false;
    }
 
Example 6
Source File: CompileMojo.java    From twirl-maven-plugin with Apache License 2.0 5 votes vote down vote up
private static String[] findFiles(File dir, Set<String> includes, Set<String> excludes) {
  if (!dir.exists()) {
    return new String[0];
  }

  DirectoryScanner scanner = new DirectoryScanner();
  scanner.setBasedir(dir);
  scanner.setIncludes(includes.toArray(new String[includes.size()]));
  scanner.setExcludes(excludes.toArray(new String[excludes.size()]));
  scanner.addDefaultExcludes();
  scanner.scan();
  return scanner.getIncludedFiles();
}
 
Example 7
Source File: CheckFormatMojo.java    From xml-maven-plugin with Apache License 2.0 5 votes vote down vote up
/**
 * A {@link DirectoryScanner} boiler plate.
 *
 * @param fileSet {@link FileSet} to scan
 * @return the included paths
 */
private String[] scan( FileSet fileSet )
{
    File basedir = new File( fileSet.getDirectory() );
    if ( !basedir.exists() || !basedir.isDirectory() )
    {
        return null;
    }

    DirectoryScanner scanner = new DirectoryScanner();

    List<String> includes = fileSet.getIncludes();
    List<String> excludes = fileSet.getExcludes();

    if ( includes != null && includes.size() > 0 )
    {
        scanner.setIncludes( includes.toArray( new String[0] ) );
    }

    if ( excludes != null && excludes.size() > 0 )
    {
        scanner.setExcludes( excludes.toArray( new String[0] ) );
    }

    scanner.setBasedir( basedir );

    scanner.scan();
    return scanner.getIncludedFiles();
}
 
Example 8
Source File: AbstractXmlMojo.java    From xml-maven-plugin with Apache License 2.0 5 votes vote down vote up
/**
 * Scans a directory for files and returns a set of path names.
 */
protected String[] getFileNames( File pDir, String[] pIncludes, String[] pExcludes )
    throws MojoFailureException, MojoExecutionException
{
    if ( pDir == null )
    {
        throw new MojoFailureException( "A ValidationSet or TransformationSet"
            + " requires a nonempty 'dir' child element." );
    }
    final File dir = asAbsoluteFile( pDir );
    if ( !dir.isDirectory() )
    {
        throw new MojoExecutionException("The directory " + dir.getPath()
            + ", which is a base directory of a ValidationSet or TransformationSet, does not exist.");
    }
    final DirectoryScanner ds = new DirectoryScanner();
    ds.setBasedir( dir );
    if ( pIncludes != null && pIncludes.length > 0 )
    {
        ds.setIncludes( pIncludes );
    }
    if ( pExcludes != null && pExcludes.length > 0 )
    {
        ds.setExcludes( pExcludes );
    }
    ds.scan();
    return ds.getIncludedFiles();
}
 
Example 9
Source File: ReducerMojoTest.java    From tcases with MIT License 5 votes vote down vote up
/**
 * Returns the set of paths relative to the given base directory matching any of the given patterns.
 */
private String[] findPathsMatching( File baseDir, String... patterns)
  {
  DirectoryScanner scanner = new DirectoryScanner();
  scanner.setBasedir( baseDir);
  scanner.setIncludes( patterns);
  scanner.scan();
  return scanner.getIncludedFiles();
  }
 
Example 10
Source File: TcasesMojoTest.java    From tcases with MIT License 5 votes vote down vote up
/**
 * Returns the set of paths relative to the given base directory matching any of the given patterns.
 */
private String[] findPathsMatching( File baseDir, String... patterns)
  {
  DirectoryScanner scanner = new DirectoryScanner();
  scanner.setBasedir( baseDir);
  scanner.setIncludes( patterns);
  scanner.scan();
  return scanner.getIncludedFiles();
  }
 
Example 11
Source File: ApiMojoTest.java    From tcases with MIT License 5 votes vote down vote up
/**
 * Returns the set of paths relative to the given base directory matching any of the given patterns.
 */
private String[] findPathsMatching( File baseDir, String... patterns)
  {
  DirectoryScanner scanner = new DirectoryScanner();
  scanner.setBasedir( baseDir);
  scanner.setIncludes( patterns);
  scanner.scan();
  return scanner.getIncludedFiles();
  }
 
Example 12
Source File: ApiTestMojoTest.java    From tcases with MIT License 5 votes vote down vote up
/**
 * Returns the set of paths relative to the given base directory matching any of the given patterns.
 */
private String[] findPathsMatching( File baseDir, String... patterns)
  {
  DirectoryScanner scanner = new DirectoryScanner();
  scanner.setBasedir( baseDir);
  scanner.setIncludes( patterns);
  scanner.scan();
  return scanner.getIncludedFiles();
  }
 
Example 13
Source File: GitHub.java    From opoopress with Apache License 2.0 5 votes vote down vote up
/**
 * Get matching paths found in given base directory
 *
 * @param includes
 * @param excludes
 * @param baseDir
 * @return non-null but possibly empty array of string paths relative to the
 *         base directory
 */
public static String[] getMatchingPaths(final String[] includes,
		final String[] excludes, final String baseDir) {
	DirectoryScanner scanner = new DirectoryScanner();
	scanner.setBasedir(baseDir);
	if (includes != null && includes.length > 0){
		scanner.setIncludes(includes);
	}
	if (excludes != null && excludes.length > 0){
		scanner.setExcludes(excludes);
	}
	scanner.scan();
	return scanner.getIncludedFiles();
}
 
Example 14
Source File: ProjectUtils.java    From eclipse.jdt.ls with Eclipse Public License 2.0 5 votes vote down vote up
public static Set<Path> collectBinaries(IPath projectDir, Set<String> include, Set<String> exclude, IProgressMonitor monitor) throws CoreException {
	Set<Path> binaries = new LinkedHashSet<>();
	Map<IPath, Set<String>> includeByPrefix = groupGlobsByPrefix(projectDir, include);
	Set<IPath> excludeResolved = exclude.stream().map(glob -> resolveGlobPath(projectDir, glob)).collect(Collectors.toSet());
	for (IPath baseDir: includeByPrefix.keySet()) {
		Path base = baseDir.toFile().toPath();
		if (monitor.isCanceled()) {
			return binaries;
		}
		if (Files.isRegularFile(base)) {
			if (isBinary(base))	{
				binaries.add(base);
			}
			continue; // base is a regular file path
		}
		if (!Files.isDirectory(base)) {
			continue; // base does not exist
		}
		Set<String> subInclude = includeByPrefix.get(baseDir);
		Set<String> subExclude = excludeResolved.stream().map(glob -> glob.makeRelativeTo(baseDir).toOSString()).collect(Collectors.toSet());
		DirectoryScanner scanner = new DirectoryScanner();
		try {
			scanner.setIncludes(subInclude.toArray(new String[subInclude.size()]));
			scanner.setExcludes(subExclude.toArray(new String[subExclude.size()]));
			scanner.addDefaultExcludes();
			scanner.setBasedir(base.toFile());
			scanner.scan();
		} catch (IllegalStateException e) {
			throw new CoreException(StatusFactory.newErrorStatus("Unable to collect binaries", e));
		}
		for (String result: scanner.getIncludedFiles()) {
			Path file = base.resolve(result);
			if (isBinary(file))	{
				binaries.add(file);
			}
		}
	}
	return binaries;
}
 
Example 15
Source File: ExecutionChecker.java    From netbeans with Apache License 2.0 5 votes vote down vote up
@Override
public void executionResult(RunConfig config, ExecutionContext res, int resultCode) {

    if (NbmActionGoalProvider.NBMRELOAD.equals(config.getActionName()) && resultCode == 0) {
        DirectoryScanner scanner = new DirectoryScanner();
        NbMavenProject prj = project.getLookup().lookup(NbMavenProject.class);
        File basedir = new File(prj.getMavenProject().getBuild().getDirectory(), "nbm"); //NOI18N
        scanner.setBasedir(basedir);
        scanner.setIncludes(new String[]{
                    "**/modules/*.jar", //NOI18N
                    "**/modules/eager/*.jar", //NOI18N
                    "**/modules/autoload/*.jar" //NOI18N
                });
        scanner.scan();
        String[] incl = scanner.getIncludedFiles();
        if (incl != null && incl.length > 0) {
            if (incl[0].indexOf("eager") > -1 || incl[0].indexOf("autoload") > -1) { //NOI18N
                res.getInputOutput().getErr().println("NetBeans: Cannot reload 'autoload' or 'eager' modules.");
            }
            try {
                res.getInputOutput().getOut().println("NetBeans: Deploying NBM module in development IDE...");
                TestModuleDeployer.deployTestModule(FileUtil.normalizeFile(new File(basedir, incl[0])));
            } catch (IOException ex) {
                res.getInputOutput().getOut().println("NetBeans: Error redeploying NBM module in development IDE.");
                Logger.getLogger(ExecutionChecker.class.getName()).log(Level.INFO, "Error reloading netbeans module in development IDE.", ex); //NOI18N
            }
        } else {
            res.getInputOutput().getErr().println("NetBeans: Cannot find any built NetBeans Module artifacts for reload.");
        }

    }
}
 
Example 16
Source File: MainClassesCoSSkipper.java    From netbeans with Apache License 2.0 5 votes vote down vote up
@Override
public boolean skip(RunConfig config, boolean includingTests, long timeStamp) {
    if (includingTests) {
        if (!RunUtils.hasApplicationCompileOnSaveEnabled(config) && RunUtils.hasTestCompileOnSaveEnabled(config)) {
            //in case when only tests are enabled for CoS, the main source root is not compiled on the fly.
            // we need to checkif something was changed there and if so, recompile manually.
            
            //TODO is there a way to figure if there is a modified java file in a simpler way?
            File dirFile = FileUtilities.convertStringToFile(config.getMavenProject().getBuild().getSourceDirectory());
            if (dirFile == null || !dirFile.exists()) { //#223461
                return false;
            }
            DirectoryScanner ds = new DirectoryScanner();
            ds.setBasedir(dirFile);
            //includes/excludes
            ds.setIncludes(new String[]{"**/*.java"});
            ds.addDefaultExcludes();
            ds.scan();
            String[] inclds = ds.getIncludedFiles();
            for (String inc : inclds) {
                File f = new File(dirFile, inc);
                if (f.lastModified() >= timeStamp) {
                    return true;
                }
            }
        }
    }
    return false;
}
 
Example 17
Source File: ApiTestMojo.java    From tcases with MIT License 4 votes vote down vote up
public void execute() throws MojoExecutionException
{
try
  {
  // Gather API spec files
  DirectoryScanner inputScanner = new DirectoryScanner();
  Set<String> apiDefPatterns = getApiDefs();
  if( !apiDefPatterns.isEmpty())
    {
    // Use all specified API spec patterns.
    }
  else if( !StringUtils.isBlank( getProject()))
    {
    // Use API spec(s) for specified project name.
    apiDefPatterns.add( "**/" + getProject() + ".json");
    apiDefPatterns.add( "**/" + getProject() + ".yaml");
    apiDefPatterns.add( "**/" + getProject() + ".yml");
    }
  else if( !StringUtils.isBlank( getApiDef())) 
    {
    // Use specified API spec pattern.
    apiDefPatterns.add( getApiDef());
    }
  else
    {
    // Use default patterns
    apiDefPatterns.add( "**/*.json");
    apiDefPatterns.add( "**/*.yaml");
    apiDefPatterns.add( "**/*.yml");
    }
  inputScanner.setIncludes( apiDefPatterns.toArray( new String[0]));

  File inputRootDir = getInputDirFile();
  inputScanner.setBasedir( inputRootDir);
  inputScanner.scan();

  // Generate a test for each API spec
  String[] apiDefs = inputScanner.getIncludedFiles();
  for( int i = 0; i < apiDefs.length; i++)
    {
    // Define input path for this API spec.
    String inputFile = apiDefs[i];
    File apiDef = new File( inputRootDir, inputFile);

    // Set generator options for this API spec.
    Options options = new Options();
    options.setApiSpec( apiDef);
    options.setTestType( getTestType());
    options.setExecType( getExecType());
    options.setTestName( getTestName());
    options.setTestPackage( getTestPackage());
    options.setBaseClass( getBaseClass());
    options.setMocoTestConfig( getMocoTestConfigFile());
    options.setPaths( getPaths());
    options.setOperations( getOperations());
    options.setContentType( getContentType());
    options.setOutDir( new File( getOutDirFile(), getPath( inputFile)));
    options.setOnModellingCondition( getOnModellingCondition());
    options.setOnResolverCondition( getOnResolverCondition());
    options.setReadOnlyEnforced( isReadOnlyEnforced());
    options.setMaxTries( getMaxTries());
    options.setRandomSeed( getRandom());

    ApiTestCommand.run( options);
    }
  }
catch( Exception e)
  {
  throw new MojoExecutionException( "Can't generate requested tests", e);
  }
}
 
Example 18
Source File: ApiMojo.java    From tcases with MIT License 4 votes vote down vote up
public void execute() throws MojoExecutionException
{
try
  {
  // Gather API spec files
  DirectoryScanner inputScanner = new DirectoryScanner();
  Set<String> apiDefPatterns = getApiDefs();
  if( !apiDefPatterns.isEmpty())
    {
    // Use all specified API spec patterns.
    }
  else if( !StringUtils.isBlank( getProject()))
    {
    // Use API spec(s) for specified project name.
    apiDefPatterns.add( "**/" + getProject() + ".json");
    apiDefPatterns.add( "**/" + getProject() + ".yaml");
    apiDefPatterns.add( "**/" + getProject() + ".yml");
    }
  else if( !StringUtils.isBlank( getApiDef())) 
    {
    // Use specified API spec pattern.
    apiDefPatterns.add( getApiDef());
    }
  else
    {
    // Use default patterns
    apiDefPatterns.add( "**/*.json");
    apiDefPatterns.add( "**/*.yaml");
    apiDefPatterns.add( "**/*.yml");
    }
  inputScanner.setIncludes( apiDefPatterns.toArray( new String[0]));

  File inputRootDir = getInputDirFile();
  inputScanner.setBasedir( inputRootDir);
  inputScanner.scan();

  // Generate requested models for each API spec
  String[] apiDefs = inputScanner.getIncludedFiles();
  for( int i = 0; i < apiDefs.length; i++)
    {
    // Define input path for this API spec.
    String inputFile = apiDefs[i];
    File apiDef = new File( inputRootDir, inputFile);

    // Set generator options for this API spec.
    Options options = new Options();
    options.setApiSpec( apiDef);
    options.setContentType( getContentType());
    options.setOutDir( new File( getOutDirFile(), getPath( inputFile)));
    if( isJunit())
      {
      options.setTransformType( TransformType.JUNIT);
      }
    if( isHtml())
      {
      options.setTransformType( TransformType.HTML);
      }
    if( getTransformDef() != null)
      {
      options.setTransformType( TransformType.CUSTOM);
      options.setTransformParams( getTransformParams());
      }
    options.setTests( !isInputModels());
    options.setOnModellingCondition( "log".equals( getOnModellingCondition())? getOnCondition() : getOnModellingCondition());
    options.setReadOnlyEnforced( isReadOnlyEnforced());
    options.setWriteOnlyEnforced( isWriteOnlyEnforced());
    
    // Generate requested request test models for this API spec
    if( isRequestCases())
      {
      options.setRequestCases( true);
      options.setOnResolverCondition( getOnResolverCondition());
      options.setMaxTries( getMaxTries());
      options.setRandomSeed( getRandom());
      }
    else
      {
      options.setServerTest( true);
      options.setTransformDef( resolveTransformDefFile( apiDef, options.isServerTest()));
      options.setOutFile( resolveTransformOutFile( apiDef, options.isServerTest()));
      }
    ApiCommand.run( options);

    // Generate requested response test models for this API spec
    options.setServerTest( false);
    options.setTransformDef( resolveTransformDefFile( apiDef, options.isServerTest()));
    options.setOutFile( resolveTransformOutFile( apiDef, options.isServerTest()));
    ApiCommand.run( options);
    }
  }
catch( Exception e)
  {
  throw new MojoExecutionException( "Can't generate requested models", e);
  }
}
 
Example 19
Source File: BasePrepareSources.java    From gradle-golang-plugin with Mozilla Public License 2.0 4 votes vote down vote up
@Override
public void run()  throws  Exception {
    final ProgressLogger progress = startProgress("Prepare sources");

    final GolangSettings settings = getGolang();
    final BuildSettings build = getBuild();
    boolean atLeastOneCopied = false;
    if (!FALSE.equals(build.getUseTemporaryGopath())) {
        final Path gopath = build.getFirstGopath();
        progress.progress("Prepare GOPATH " + gopath + "...");
        LOGGER.info("Prepare GOPATH ({})...", gopath);
        final Path projectBasedir = settings.getProjectBasedir();
        final Path packagePath = settings.packagePathFor(gopath);
        final Path dependencyCachePath = getDependencies().getDependencyCache();
        prepareDependencyCacheIfNeeded(packagePath, dependencyCachePath);

        final DirectoryScanner scanner = new DirectoryScanner();
        scanner.setBasedir(projectBasedir.toFile());
        scanner.setIncludes(build.getIncludes());
        scanner.setExcludes(build.getExcludes());
        scanner.setCaseSensitive(true);
        scanner.scan();
        for (final String file : scanner.getIncludedFiles()) {
            final Path sourceFile = projectBasedir.resolve(file);
            final Path targetFile = packagePath.resolve(file);
            if (!sourceFile.equals(dependencyCachePath)) {
                if (!exists(targetFile)
                    || size(sourceFile) != size(targetFile)
                    || !getLastModifiedTime(sourceFile).equals(getLastModifiedTime(targetFile))) {
                    atLeastOneCopied = true;
                    progress.progress("Prepare source file: " + file + "...");
                    LOGGER.debug("* {}", file);
                    ensureParentOf(targetFile);
                    try (final InputStream is = newInputStream(sourceFile)) {
                        try (final OutputStream os = newOutputStream(targetFile)) {
                            IOUtils.copy(is, os);
                        }
                    }
                    setLastModifiedTime(targetFile, getLastModifiedTime(sourceFile));
                }
            }
        }
        if (!atLeastOneCopied) {
            getState().setOutcome(UP_TO_DATE);
        }
    } else {
        getState().setOutcome(SKIPPED);
    }

    progress.completed();
}
 
Example 20
Source File: NativeSources.java    From maven-native with MIT License 4 votes vote down vote up
public List<File> getFiles()
{
    String[] filePaths = new String[0];

    if ( includes != null || excludes != null )
    {
        DirectoryScanner scanner = new DirectoryScanner();
        scanner.setBasedir( this.directory );
        scanner.setIncludes( includes );
        scanner.setExcludes( excludes );
        scanner.addDefaultExcludes();

        scanner.scan();

        filePaths = scanner.getIncludedFiles();
    }

    List<File> files = new ArrayList<>( filePaths.length + this.fileNames.length );
    for ( int i = 0; i < filePaths.length; ++i )
    {
        files.add( new File( this.directory, filePaths[i] ) );
    }

    // remove duplicate files
    for ( int i = 0; i < this.fileNames.length; ++i )
    {
        File file = new File( this.directory, this.fileNames[i] );

        boolean found = false;

        for ( int k = 0; k < filePaths.length; ++k )
        {
            if ( files.get( k ).equals( file ) )
            {
                found = true;
                break;
            }
        }

        if ( !found )
        {
            files.add( file );
        }
    }

    return files;

}