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 MisplacedXMLPrologDetector {
010
011 public static void main(String[] args) {
012 new MisplacedXMLPrologDetector().exec(args);
013 }
014
015 protected void exec(String[] args) {
016 try {
017 long beg = System.currentTimeMillis();
018 String dir = "c:/eclipse/sts/2.6.1/ide/ws/rice-trunk";
019 FileFilter exclude = new CommonIgnoresFilter();
020 FileFilter include = new FilenameContainsDotXFilter();
021 FileFilter problem = new MisplacedXMLPrologFilter();
022 List<File> files = getFiles(new File(dir), exclude, include);
023 System.out.println(files.size());
024 List<File> problemFiles = getProblemFiles(files, problem);
025 System.out.println(problemFiles.size());
026 for (int i = 0; i < problemFiles.size(); i++) {
027 File problemFile = problemFiles.get(i);
028 System.out.println(problemFile.getAbsolutePath());
029 }
030 long end = System.currentTimeMillis();
031 long elapsed = end - beg;
032 double seconds = elapsed / 1000D;
033 System.out.println(seconds);
034 } catch (Throwable t) {
035 t.printStackTrace();
036 }
037 }
038
039 protected List<File> getProblemFiles(List<File> files, FileFilter problem) throws IOException {
040 List<File> problemFiles = new ArrayList<File>();
041 for (File file : files) {
042 if (problem.accept(file)) {
043 problemFiles.add(file);
044 }
045 }
046 return problemFiles;
047 }
048
049 protected List<File> getFiles(File dir, FileFilter exclude, FileFilter include) {
050 File[] contents = dir.listFiles();
051 List<File> files = new ArrayList<File>();
052 for (File file : contents) {
053 if (exclude.accept(file)) {
054 continue;
055 }
056 if (file.isDirectory()) {
057 files.addAll(getFiles(file, exclude, include));
058 } else {
059 if (include.accept(file)) {
060 files.add(file);
061 }
062 }
063 }
064 return files;
065 }
066 }