private boolean collectProjectFilesFromDirectory()

in org.apache.easyant4e/src/org/apache/easyant4e/wizards/EasyAntImportWizardPage.java [450:493]


    private boolean collectProjectFilesFromDirectory(Collection files, File directory, Set directoriesVisited,
            IProgressMonitor monitor) {

        if (monitor.isCanceled()) {
            return false;
        }
        monitor.subTask("Collect project files from "+ directory.getPath());
        File[] contents = directory.listFiles();
        if (contents == null){
            return false;
        }

        // Initialize recursion guard for recursive symbolic links
        if (directoriesVisited == null) {
            directoriesVisited = new HashSet();
            try {
                directoriesVisited.add(directory.getCanonicalPath());
            } catch (IOException exception) {
                Activator.getEasyAntPlugin().log(IStatus.ERROR, exception.getMessage(), exception);
            }
        }
        // first look for EasyAnt description files
        for (int i = 0; i < contents.length; i++) {
            File file = contents[i];
            if (file.isFile() && file.getName().endsWith("ivy")) {
                files.add(file);                
            }else if (contents[i].isDirectory()) {
                if (!contents[i].getName().equals(METADATA_FOLDER) && !contents[i].getName().equals(TARGET_FOLDER)) {
                    try {
                        String canonicalPath = contents[i].getCanonicalPath();
                        if (!directoriesVisited.add(canonicalPath)) {
                            // already been here --> do not recurse
                            continue;
                        }
                    } catch (IOException exception) {
                        Activator.getEasyAntPlugin().log(IStatus.ERROR, exception.getMessage(), exception);

                    }
                    collectProjectFilesFromDirectory(files, contents[i], directoriesVisited, monitor);
                }
            }
        }
        return true;
    }