package fileWalker;
import java.io.File;
import java.io.IOException;
public abstract class SourceFileWalker
{
protected final String DEFAULT_FILENAME_FILTER = "*.{c,cpp,h,cc,hpp,java}";
public abstract void setFilenameFilter(String filter);
/**
* Add a listener object that will be informed of all visited
* source files and directories.
* */
public abstract void addListener(SourceFileListener listener);
/**
* Walk list of files and directory names and report them to
* listeners.
* @param fileAndDirNames: A list of file and/or directory names
* */
public void walk(String[] fileAndDirNames) throws IOException
{
for (String filename : fileAndDirNames)
{
if (!pathIsAccessible(filename))
{
System.err.println("Warning: Skipping " + filename
+ " because it is not accessible");
continue;
}
walkExistingFileOrDirectory(filename);
}
}
protected abstract void walkExistingFileOrDirectory(String dirName) throws IOException;
private boolean pathIsAccessible(String path)
{
File file = new File(path);
if (!file.exists())
return false;
// TODO: add more checks, for example, do we have sufficient
// permissions for access?
return true;
}
}