001 package org.springframework.beans;
002
003 import java.io.File;
004 import java.io.FileFilter;
005 import java.io.IOException;
006 import java.util.ArrayList;
007 import java.util.List;
008
009 public class ProblemFileDetector {
010 public List<File> getProblemFiles(ProblemFileContext context) throws IOException {
011 File baseDir = context.getBaseDir();
012 FileFilter exclude = context.getExclude();
013 FileFilter include = context.getInclude();
014 FileFilter problem = context.getProblem();
015 List<File> files = getFiles(baseDir, exclude, include);
016 System.out.println("Located " + files.size() + " total files");
017 List<File> problemFiles = getProblemFiles(files, problem);
018 return problemFiles;
019 }
020
021 protected List<File> getProblemFiles(List<File> files, FileFilter problem) throws IOException {
022 List<File> problemFiles = new ArrayList<File>();
023 for (File file : files) {
024 if (problem.accept(file)) {
025 problemFiles.add(file);
026 }
027 }
028 return problemFiles;
029 }
030
031 protected List<File> getFiles(File dir, FileFilter exclude, FileFilter include) {
032 File[] contents = dir.listFiles();
033 List<File> files = new ArrayList<File>();
034 for (File file : contents) {
035 if (!exclude.accept(file)) {
036 continue;
037 }
038 if (file.isDirectory()) {
039 files.addAll(getFiles(file, exclude, include));
040 } else {
041 if (include.accept(file)) {
042 files.add(file);
043 }
044 }
045 }
046 return files;
047 }
048 }