package mj.ocraptor.file_handler.structures;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import mj.ocraptor.file_handler.events.FileHandler;
import mj.ocraptor.file_handler.utils.FileTools;
import org.apache.commons.io.DirectoryWalker;
/**
*
*
* @author
*/
public class SequentialDirectoryWalker extends DirectoryWalker<File> {
private FileHandler handler;
private static final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(SequentialDirectoryWalker.class);
/**
* {@inheritDoc}
*
* @see DirectoryWalker#SimpleDirectoryWalker()
*/
public SequentialDirectoryWalker(FileHandler handler) {
// super(new XMLChildFileFilter(), -1);
super();
this.handler = handler;
}
/**
* @param directory
* @param depth
* @param results
* @return
*
* @throws IOException
*/
@Override
protected boolean handleDirectory(File directory, int depth, Collection<File> results)
throws IOException {
this.handler.handleDir(directory);
return true;
}
/**
* @param file
* @param depth
* @param results
*
* @throws IOException
*/
@Override
protected void handleFile(File file, int depth, Collection<File> results) throws IOException {
this.handler.handleFile(file);
results.add(file);
}
/**
*
*
* @return
* @throws FileNotFoundException
*/
public List<File> getFiles(File directory) throws FileNotFoundException {
List<File> files = new ArrayList<File>();
try {
FileTools.directoryIsValid(directory, "SequentialDirectoryWalker directory");
walk(directory, files);
} catch (Exception e) {
LOGGER.error("Directory is not valid!", e);
}
return files;
}
}