X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fgui%2FFileScanner.java;h=ede930d388288d72fd8bd445183b3a63ac8a1fe4;hb=d1e7f4097654f49ee2335163ac667a4d94eee011;hp=d134e7c078b57e3d21330fb29db79084c8c62737;hpb=d05341094f98fe047ba23a7cde42c6031ac2fc33;p=jSite.git diff --git a/src/de/todesbaum/jsite/gui/FileScanner.java b/src/de/todesbaum/jsite/gui/FileScanner.java index d134e7c..ede930d 100644 --- a/src/de/todesbaum/jsite/gui/FileScanner.java +++ b/src/de/todesbaum/jsite/gui/FileScanner.java @@ -1,6 +1,5 @@ /* - * jSite - a tool for uploading websites into Freenet - * Copyright (C) 2006 David Roden + * jSite - FileScanner.java - Copyright © 2006–2011 David Roden * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,31 +28,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,25 +109,47 @@ 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() { + @SuppressWarnings("synthetic-access") public boolean accept(File file) { - return !file.isHidden(); + return !project.isIgnoreHiddenFiles() || !file.isHidden(); } }); 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;