public class Scanner extends AbstractLifeCycle
| Modifier and Type | Class and Description |
|---|---|
static interface |
Scanner.BulkListener |
static interface |
Scanner.DiscreteListener |
static interface |
Scanner.Listener
Listener
Marker for notifications re file changes.
|
static class |
Scanner.Notification |
static interface |
Scanner.ScanCycleListener
Listener that notifies when a scan has started and when it has ended.
|
static interface |
Scanner.ScanListener |
(package private) static class |
Scanner.TimeNSize |
AbstractLifeCycle.AbstractLifeCycleListener| Modifier and Type | Field and Description |
|---|---|
private static int |
__scannerId |
private java.util.Map<java.lang.String,Scanner.TimeNSize> |
_currentScan |
private java.io.FilenameFilter |
_filter |
private java.util.List<Scanner.Listener> |
_listeners |
private java.util.Map<java.lang.String,Scanner.Notification> |
_notifications |
private java.util.Map<java.lang.String,Scanner.TimeNSize> |
_prevScan |
private boolean |
_reportDirs |
private boolean |
_reportExisting |
private boolean |
_running |
private int |
_scanCount |
private int |
_scanDepth |
private java.util.List<java.io.File> |
_scanDirs |
private int |
_scanInterval |
private java.util.TimerTask |
_task |
private java.util.Timer |
_timer |
private static Logger |
LOG |
FAILED, RUNNING, STARTED, STARTING, STOP_ON_FAILURE, STOPPED, STOPPING| Constructor and Description |
|---|
Scanner() |
| Modifier and Type | Method and Description |
|---|---|
void |
addListener(Scanner.Listener listener)
Add an added/removed/changed listener
|
void |
addScanDir(java.io.File dir) |
void |
doStart()
Start the scanning action.
|
void |
doStop()
Stop the scanning.
|
boolean |
exists(java.lang.String path) |
java.io.FilenameFilter |
getFilenameFilter()
Get any filter applied to files in the scan dir.
|
boolean |
getRecursive() |
boolean |
getReportDirs() |
boolean |
getReportExistingFilesOnStartup() |
int |
getScanDepth()
Get the scanDepth.
|
java.util.List<java.io.File> |
getScanDirs() |
int |
getScanInterval()
Get the scan interval
|
java.util.Timer |
newTimer() |
java.util.TimerTask |
newTimerTask() |
void |
removeListener(Scanner.Listener listener)
Remove a registered listener
|
private void |
reportAddition(java.lang.String filename)
Report a file addition to the registered FileAddedListeners
|
private void |
reportBulkChanges(java.util.List<java.lang.String> filenames) |
private void |
reportChange(java.lang.String filename)
Report a file change to the FileChangedListeners
|
void |
reportDifferences(java.util.Map<java.lang.String,Scanner.TimeNSize> currentScan,
java.util.Map<java.lang.String,Scanner.TimeNSize> oldScan)
Report the adds/changes/removes to the registered listeners
|
private void |
reportRemoval(java.lang.String filename)
Report a file removal to the FileRemovedListeners
|
private void |
reportScanEnd(int cycle)
sign
|
private void |
reportScanStart(int cycle)
signal any scan cycle listeners that a scan has started
|
void |
scan()
Perform a pass of the scanner and report changes
|
private void |
scanFile(java.io.File f,
java.util.Map<java.lang.String,Scanner.TimeNSize> scanInfoMap,
int depth)
Get last modified time on a single file or recurse if
the file is a directory.
|
void |
scanFiles()
Recursively scan all files in the designated directories.
|
void |
schedule() |
void |
setFilenameFilter(java.io.FilenameFilter filter)
Apply a filter to files found in the scan directory.
|
void |
setRecursive(boolean recursive) |
void |
setReportDirs(boolean dirs)
Set if found directories should be reported.
|
void |
setReportExistingFilesOnStartup(boolean reportExisting)
Whether or not an initial scan will report all files as being
added.
|
void |
setScanDepth(int scanDepth)
Set the scanDepth.
|
void |
setScanDirs(java.util.List<java.io.File> dirs) |
void |
setScanInterval(int scanInterval)
Set the scan interval
|
private void |
warn(java.lang.Object listener,
java.lang.String filename,
java.lang.Throwable th) |
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, setStopTimeout, start, stopprivate static final Logger LOG
private static int __scannerId
private int _scanInterval
private int _scanCount
private final java.util.List<Scanner.Listener> _listeners
private final java.util.Map<java.lang.String,Scanner.TimeNSize> _prevScan
private final java.util.Map<java.lang.String,Scanner.TimeNSize> _currentScan
private java.io.FilenameFilter _filter
private final java.util.List<java.io.File> _scanDirs
private volatile boolean _running
private boolean _reportExisting
private boolean _reportDirs
private java.util.Timer _timer
private java.util.TimerTask _task
private int _scanDepth
private final java.util.Map<java.lang.String,Scanner.Notification> _notifications
public int getScanInterval()
public void setScanInterval(int scanInterval)
scanInterval - pause between scans in seconds, or 0 for no scan after the initial scan.public void setScanDirs(java.util.List<java.io.File> dirs)
public void addScanDir(java.io.File dir)
public java.util.List<java.io.File> getScanDirs()
public void setRecursive(boolean recursive)
recursive - True if scanning is recursivesetScanDepth(int)public boolean getRecursive()
getScanDepth()public int getScanDepth()
public void setScanDepth(int scanDepth)
scanDepth - the scanDepth to setpublic void setFilenameFilter(java.io.FilenameFilter filter)
filter - the filename filter to usepublic java.io.FilenameFilter getFilenameFilter()
public void setReportExistingFilesOnStartup(boolean reportExisting)
reportExisting - if true, all files found on initial scan will be
reported as being added, otherwise notpublic boolean getReportExistingFilesOnStartup()
public void setReportDirs(boolean dirs)
dirs - true to report directory changes as wellpublic boolean getReportDirs()
public void addListener(Scanner.Listener listener)
listener - the listener to addpublic void removeListener(Scanner.Listener listener)
listener - the Listener to be removedpublic void doStart()
doStart in class AbstractLifeCyclepublic java.util.TimerTask newTimerTask()
public java.util.Timer newTimer()
public void schedule()
public void doStop()
doStop in class AbstractLifeCyclepublic boolean exists(java.lang.String path)
path - tests if the path existspublic void scan()
public void scanFiles()
public void reportDifferences(java.util.Map<java.lang.String,Scanner.TimeNSize> currentScan, java.util.Map<java.lang.String,Scanner.TimeNSize> oldScan)
currentScan - the info from the most recent passoldScan - info from the previous passprivate void scanFile(java.io.File f,
java.util.Map<java.lang.String,Scanner.TimeNSize> scanInfoMap,
int depth)
f - file or directoryscanInfoMap - map of filenames to last modified timesprivate void warn(java.lang.Object listener,
java.lang.String filename,
java.lang.Throwable th)
private void reportAddition(java.lang.String filename)
filename - the filenameprivate void reportRemoval(java.lang.String filename)
filename - the filenameprivate void reportChange(java.lang.String filename)
filename - the filenameprivate void reportBulkChanges(java.util.List<java.lang.String> filenames)
private void reportScanStart(int cycle)
private void reportScanEnd(int cycle)