X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fio%2FDirectoryMonitor.java;h=a258f0984ae346cdfd9ab347380f5c7e970dbb32;hb=e72743b6a9fac5a99b842f92b1687fba65ef3210;hp=b777a97c642a67fdb7cd02ad116cfea4429008d8;hpb=ddd261f331280640c5b53c7128230b629ebcd268;p=utils diff --git a/support/general/src/main/java/org/wamblee/io/DirectoryMonitor.java b/support/general/src/main/java/org/wamblee/io/DirectoryMonitor.java index b777a97c..a258f098 100644 --- a/support/general/src/main/java/org/wamblee/io/DirectoryMonitor.java +++ b/support/general/src/main/java/org/wamblee/io/DirectoryMonitor.java @@ -1,22 +1,20 @@ /* - * Copyright 2006 the original author or authors. - * + * Copyright 2005-2010 the original author or authors. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.wamblee.io; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import java.io.File; import java.io.FileFilter; @@ -26,74 +24,58 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; - +import java.util.logging.Logger; /** * Monitors a directory for changes. - * + * The currernt implementation only checks files not directories and does not check for + * modifications in subdirectories. + * * @author Erik Brakkee */ public class DirectoryMonitor { - /** - * DOCUMENT ME! - */ - private static final Log LOG = LogFactory.getLog(DirectoryMonitor.class); + private static final Logger LOG = Logger.getLogger(DirectoryMonitor.class.getName()); - /** - * DOCUMENT ME! - */ private File directory; - /** - * DOCUMENT ME! - */ private FileFilter filter; - /** - * DOCUMENT ME! - */ private Listener listener; - /** - * DOCUMENT ME! - */ private Map contents; -/** + /** * Creates a new DirectoryMonitor object. - * - * @param aDirectory DOCUMENT ME! - * @param aFilefilter DOCUMENT ME! - * @param aListener DOCUMENT ME! + * */ public DirectoryMonitor(File aDirectory, FileFilter aFilefilter, Listener aListener) { directory = aDirectory; if (!directory.isDirectory()) { - throw new IllegalArgumentException("Directory '" + directory - + "' does not exist"); + throw new IllegalArgumentException("Directory '" + directory + + "' does not exist"); } - filter = aFilefilter; - listener = aListener; - contents = new HashMap(); + filter = aFilefilter; + listener = aListener; + contents = new HashMap(); } /** - * Polls the directory for changes and notifies the listener of any - * changes. In case of any exceptions thrown by the listener while - * handling the changes, the next call to this method will invoked the - * listeners again for the same changes. + * Polls the directory for changes and notifies the listener of any changes. + * In case of any exceptions thrown by the listener while handling the + * changes, the next call to this method will invoked the listeners again + * for the same changes. */ public void poll() { - LOG.debug("Polling " + directory); + LOG.fine("Polling " + directory); - Map newContents = new HashMap(); - File[] files = directory.listFiles(filter); + Map newContents = new HashMap(); + File[] files = directory.listFiles(filter); - // Check deleted files. - Set deletedFiles = new HashSet(contents.keySet()); + // Check deleted files. + Set deletedFiles = new HashSet(contents.keySet()); for (File file : files) { if (file.isFile()) { @@ -129,11 +111,26 @@ public class DirectoryMonitor { contents = newContents; } + /** + * Listener interface to be provided by users of the directory monitor to get notified of + * changes. + * + * @author Erik Brakkee + */ public static interface Listener { + /** + * @param aFile File that has changed. + */ void fileChanged(File aFile); + /** + * @param aFile File that was created. + */ void fileCreated(File aFile); + /** + * @param aFile File that was deleted. + */ void fileDeleted(File aFile); } }