Class Scanner

  • All Implemented Interfaces:
    LifeCycle

    public class Scanner
    extends AbstractLifeCycle
    Scanner Utility for scanning a directory for added, removed and changed files and reporting these events via registered Listeners.
    • 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, or 0 for no scan after the initial scan.
      • setScanDirs

        public void setScanDirs​(java.util.List<java.io.File> dirs)
      • addScanDir

        public void addScanDir​(java.io.File dir)
      • getScanDirs

        public java.util.List<java.io.File> getScanDirs()
      • setRecursive

        public void setRecursive​(boolean recursive)
        Parameters:
        recursive - True if scanning is recursive
        See Also:
        setScanDepth(int)
      • getRecursive

        public boolean getRecursive()
        Returns:
        True if scanning is fully recursive (scandepth==-1)
        See Also:
        getScanDepth()
      • getScanDepth

        public int getScanDepth()
        Get the scanDepth.
        Returns:
        the scanDepth
      • setScanDepth

        public void setScanDepth​(int scanDepth)
        Set the scanDepth.
        Parameters:
        scanDepth - the scanDepth to set
      • setFilenameFilter

        public void setFilenameFilter​(java.io.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 - the filename filter to use
      • getFilenameFilter

        public java.io.FilenameFilter getFilenameFilter()
        Get any filter applied to files in the scan dir.
        Returns:
        the filename filter
      • 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
      • getReportExistingFilesOnStartup

        public boolean getReportExistingFilesOnStartup()
      • setReportDirs

        public void setReportDirs​(boolean dirs)
        Set if found directories should be reported.
        Parameters:
        dirs - true to report directory changes as well
      • getReportDirs

        public boolean getReportDirs()
      • addListener

        public void addListener​(Scanner.Listener listener)
        Add an added/removed/changed listener
        Parameters:
        listener - the listener to add
      • removeListener

        public void removeListener​(Scanner.Listener listener)
        Remove a registered listener
        Parameters:
        listener - the Listener to be removed
      • newTimerTask

        public java.util.TimerTask newTimerTask()
      • newTimer

        public java.util.Timer newTimer()
      • schedule

        public void schedule()
      • exists

        public boolean exists​(java.lang.String path)
        Parameters:
        path - tests if the path exists
        Returns:
        true if the path exists in one of the scandirs
      • scan

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

        public void scanFiles()
        Recursively scan all files in the designated directories.
      • reportDifferences

        public void reportDifferences​(java.util.Map<java.lang.String,​org.eclipse.jetty.util.Scanner.TimeNSize> currentScan,
                                      java.util.Map<java.lang.String,​org.eclipse.jetty.util.Scanner.TimeNSize> 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