org.mortbay.util
Class Scanner

java.lang.Object
  extended by org.mortbay.util.Scanner
All Implemented Interfaces:
Runnable

public class Scanner
extends Object
implements Runnable

Scanner Utility for scanning a directory for added, removed and changed files and reporting these events via registered Listeners. TODO AbstractLifeCycle


Nested Class Summary
static interface Scanner.Listener
          Listener Signature of notifications re file changes.
 
Constructor Summary
Scanner()
           
 
Method Summary
 void addListener(Scanner.Listener listener)
          Add an added/removed/changed listener
 FilenameFilter getFilenameFilter()
          Get any filter applied to files in the scan dir.
 File getScanDir()
          Get the location of the directory to scan
 int getScanInterval()
          Get the scan interval
 void removeListener(Scanner.Listener listener)
          Remove a registered listener
 void reportDifferences(Map currentScan, Map oldScan)
          Report the adds/changes/removes to the registered listeners
 void run()
          Scan the configured directory, sleeping for the configured scanInterval (in seconds) between each pass.
 void scan()
          Perform a pass of the scanner and report changes
 Map scanFiles()
          Recursively scan all files in the designated directory.
 void setFilenameFilter(FilenameFilter filter)
          Apply a filter to files found in the scan directory.
 void setReportExistingFilesOnStartup(boolean reportExisting)
          Whether or not an initial scan will report all files as being added.
 void setScanDir(File dir)
          Set the location of the directory to scan.
 void setScanInterval(int scanInterval)
          Set the scan interval
 void start()
          Start the scanning action.
 void stop()
          Stop the scanning.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Scanner

public Scanner()
Method Detail

getScanInterval

public int getScanInterval()
Get the scan interval

Returns:
interval between scans in seconds

setScanInterval

public void setScanInterval(int scanInterval)
Set the scan interval

Parameters:
scanInterval - pause between scans in seconds

setScanDir

public void setScanDir(File dir)
Set the location of the directory to scan.

Parameters:
dir -

getScanDir

public File getScanDir()
Get the location of the directory to scan

Returns:

setFilenameFilter

public void setFilenameFilter(FilenameFilter filter)
Apply a filter to files found in the scan directory. Only files matching the filter will be reported as added/changed/removed.

Parameters:
filter -

getFilenameFilter

public FilenameFilter getFilenameFilter()
Get any filter applied to files in the scan dir.

Returns:

setReportExistingFilesOnStartup

public void setReportExistingFilesOnStartup(boolean reportExisting)
Whether or not an initial scan will report all files as being added.

Parameters:
reportExisting - if true, all files found on initial scan will be reported as being added, otherwise not

addListener

public void addListener(Scanner.Listener listener)
Add an added/removed/changed listener

Parameters:
listener -

removeListener

public void removeListener(Scanner.Listener listener)
Remove a registered listener

Parameters:
listener - the Listener to be removed

run

public void run()
Scan the configured directory, sleeping for the configured scanInterval (in seconds) between each pass.

Specified by:
run in interface Runnable
See Also:
Runnable.run()

start

public void start()
Start the scanning action.


stop

public void stop()
Stop the scanning.


scan

public void scan()
Perform a pass of the scanner and report changes


scanFiles

public Map scanFiles()
Recursively scan all files in the designated directory.

Returns:

reportDifferences

public void reportDifferences(Map currentScan,
                              Map oldScan)
Report the adds/changes/removes to the registered listeners

Parameters:
currentScan - the info from the most recent pass
oldScan - info from the previous pass