X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fgui%2FFileScanner.java;h=b699ebb4ec8eae088f5219f54e30abbb58f1288a;hb=5c29aa2ec7fb5d4e362636d0e25c422668702f26;hp=1b63fcd5cb49a116572d64cf0dc4abcfdd995b26;hpb=6f1a8216cfba28add0ef365b46a08d16d4eb87fe;p=jSite.git diff --git a/src/de/todesbaum/jsite/gui/FileScanner.java b/src/de/todesbaum/jsite/gui/FileScanner.java index 1b63fcd..b699ebb 100644 --- a/src/de/todesbaum/jsite/gui/FileScanner.java +++ b/src/de/todesbaum/jsite/gui/FileScanner.java @@ -29,31 +29,75 @@ import java.util.List; import de.todesbaum.jsite.application.Project; import de.todesbaum.jsite.i18n.I18n; +/** + * Scans the local path of a project anychronously and returns the list of found + * files as an event. + * + * @see Project#getLocalPath() + * @see FileScannerListener#fileScannerFinished(FileScanner) + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> + */ public class FileScanner implements Runnable { + /** The list of listeners. */ private final List fileScannerListeners = new ArrayList(); + + /** The project to scan. */ private final Project project; + + /** The list of found files. */ private List files; + + /** Wether there was an error. */ private boolean error = false; + /** + * Creates a new file scanner for the given project. + * + * @param project + * The project whose files to scan + */ public FileScanner(Project project) { this.project = project; } + /** + * Adds the given listener to the list of listeners. + * + * @param fileScannerListener + * The listener to add + */ public void addFileScannerListener(FileScannerListener fileScannerListener) { fileScannerListeners.add(fileScannerListener); } + /** + * Removes the given listener from the list of listeners. + * + * @param fileScannerListener + * The listener to remove + */ public void removeFileScannerListener(FileScannerListener fileScannerListener) { fileScannerListeners.remove(fileScannerListener); } + /** + * Notifies all listeners that the file scan finished. + */ protected void fireFileScannerFinished() { - for (FileScannerListener fileScannerListener: new ArrayList(fileScannerListeners)) { + for (FileScannerListener fileScannerListener : new ArrayList(fileScannerListeners)) { fileScannerListener.fileScannerFinished(this); } } + /** + * {@inheritDoc} + *

+ * Scans all available files in the project’s local path and emits an event + * when finished. + * + * @see FileScannerListener#fileScannerFinished(FileScanner) + */ public void run() { files = new ArrayList(); error = false; @@ -66,14 +110,35 @@ public class FileScanner implements Runnable { fireFileScannerFinished(); } + /** + * Returns whether there was an error scanning for files. + * + * @return true if there was an error, false + * otherwise + */ public boolean isError() { return error; } + /** + * Returns the list of found files. + * + * @return The list of found files + */ public List getFiles() { return files; } + /** + * Recursively scans a directory and adds all found files to the given list. + * + * @param rootDir + * The directory to scan + * @param fileList + * The list to which to add the found files + * @throws IOException + * if an I/O error occurs + */ private void scanFiles(File rootDir, List fileList) throws IOException { File[] files = rootDir.listFiles(new FileFilter() { @@ -84,12 +149,13 @@ public class FileScanner implements Runnable { if (files == null) { throw new IOException(I18n.getMessage("jsite.file-scanner.can-not-read-directory")); } - for (File file: files) { + for (File file : files) { if (file.isDirectory()) { scanFiles(file, fileList); continue; } String filename = project.shortenFilename(file); + filename = filename.replace('\\', '/'); fileList.add(filename); } }