package com.doesthatevencompile.utils;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class FileUtil {
private String fullpath;
private FileFilter filter;
private List queue = Collections.synchronizedList(new ArrayList());
private ArrayList listeners = new ArrayList();
public FileUtil(String fullpath, SearchableItemListener listener,FileFilter filter) {
super();
this.fullpath = fullpath;
this.filter = filter;
listeners.add(listener);
}
public FileUtil(String fullpath, FileFilter filter) {
super();
this.fullpath = fullpath;
this.filter = filter;
}
public void addSearchableItemListener(SearchableItemListener l){
listeners.add(l);
}
public void findFiles() {
int numFound = 0;
File root = new File(fullpath);
File[] files = root.listFiles(filter);
if (files == null || files.length == 0) {
return;
}
queue.addAll(Arrays.asList(files));
for (int j = 0; j < queue.size(); j++) {
File child = queue.get(j);
if (child.isDirectory()) {
files = child.listFiles(filter);
if (files != null) {
queue.addAll(Arrays.asList(files));
}
} else { // child is file
for(SearchableItemListener l: listeners){
l.supportedFileFound(child);
}
numFound++;
}
}
for(SearchableItemListener l: listeners){
l.searchFinished(numFound, root);
}
}
}