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.
    • Field Detail

      • DEFAULT_SCAN_DEPTH

        public static final int DEFAULT_SCAN_DEPTH
        When walking a directory, a depth of 1 ensures that the directory's descendants are visited, not just the directory itself (as a file).
        See Also:
        FileVisitor.preVisitDirectory(java.nio.file.Path, java.nio.file.attribute.BasicFileAttributes), Constant Field Values
    • 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

        @Deprecated
        public void addScanDir​(java.io.File dir)
        Deprecated.
      • addFile

        public void addFile​(java.nio.file.Path p)
                     throws java.io.IOException
        Add a file to be scanned. The file must not be null, and must exist.
        Parameters:
        p - the Path of the file to scan.
        Throws:
        java.io.IOException
      • addDirectory

        public IncludeExcludeSet<java.nio.file.PathMatcher,​java.nio.file.Path> addDirectory​(java.nio.file.Path p)
                                                                                           throws java.io.IOException
        Add a directory to be scanned. The directory must not be null and must exist.
        Parameters:
        p - the directory to scan.
        Returns:
        an IncludeExcludeSet to which the caller can add PathMatcher patterns to match
        Throws:
        java.io.IOException
      • getScanDirs

        @Deprecated
        public java.util.List<java.io.File> getScanDirs()
        Deprecated.
      • getScannables

        public java.util.Set<java.nio.file.Path> getScannables()
      • setRecursive

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

        @Deprecated
        public boolean getRecursive()
        Deprecated.
        Returns:
        True if scanning is recursive
        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

        @Deprecated
        public void setFilenameFilter​(java.io.FilenameFilter filter)
        Deprecated.
        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

        @Deprecated
        public java.io.FilenameFilter getFilenameFilter()
        Deprecated.
        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
      • doStart

        public void doStart()
        Start the scanning action.
      • newTimerTask

        public java.util.TimerTask newTimerTask()
      • newTimer

        public java.util.Timer newTimer()
      • schedule

        public void schedule()
      • doStop

        public void doStop()
        Stop the scanning.
      • reset

        public void reset()
        Clear the list of scannables. The scanner must first be in the stopped state.
      • 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()
        Scan all of the given paths.