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 |
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, stop, toString
private 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 AbstractLifeCycle
public java.util.TimerTask newTimerTask()
public java.util.Timer newTimer()
public void schedule()
public void doStop()
doStop
in class AbstractLifeCycle
public 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)