Class AbstractPersistentAcceptOnceFileListFilter<F>

Type Parameters:
F - the file type.
All Implemented Interfaces:
Closeable, AutoCloseable, FileListFilter<F>, ResettableFileListFilter<F>, ReversibleFileListFilter<F>
Direct Known Subclasses:
FileSystemPersistentAcceptOnceFileListFilter, FtpPersistentAcceptOnceFileListFilter, SftpPersistentAcceptOnceFileListFilter, SmbPersistentAcceptOnceFileListFilter

public abstract class AbstractPersistentAcceptOnceFileListFilter<F> extends AbstractDirectoryAwareFileListFilter<F> implements ReversibleFileListFilter<F>, ResettableFileListFilter<F>, Closeable
Stores "seen" files in a MetadataStore to survive application restarts. The default key is 'prefix' plus the absolute file name; value is the timestamp of the file. Files are deemed as already 'seen' if they exist in the store and have the same modified time as the current file.
Since:
3.0
Author:
Gary Russell, Artem Bilan
  • Field Details

  • Constructor Details

  • Method Details

    • setFlushOnUpdate

      public void setFlushOnUpdate(boolean flushOnUpdate)
      Determine whether the metadataStore should be flushed on each update (if Flushable).
      Parameters:
      flushOnUpdate - true to flush.
      Since:
      4.1.5
    • accept

      public boolean accept(F file)
      Description copied from class: AbstractFileListFilter
      Subclasses must implement this method.
      Specified by:
      accept in interface FileListFilter<F>
      Specified by:
      accept in class AbstractFileListFilter<F>
      Parameters:
      file - The file.
      Returns:
      true if the file passes the filter.
      See Also:
    • fileStillExists

      protected boolean fileStillExists(F file)
      Check if the file still exists; default implementation returns true.
      Parameters:
      file - the file.
      Returns:
      true if the filter should return true.
      Since:
      4.3.19
    • rollback

      public void rollback(F file, List<F> files)
      Indicate that not all files previously passed by this filter (in FileListFilter.filterFiles(Object[]) have been processed; the file must be in the list of files; it, and all files after it, will be considered to have not been processed and will be considered next time.
      Specified by:
      rollback in interface ReversibleFileListFilter<F>
      Parameters:
      file - the file which failed.
      files - the list of files that were returned by FileListFilter.filterFiles(Object[]).
      Since:
      4.0.4
    • remove

      public boolean remove(F fileToRemove)
      Description copied from interface: ResettableFileListFilter
      Remove the specified file from the filter, so it will pass on the next attempt.
      Specified by:
      remove in interface ResettableFileListFilter<F>
      Parameters:
      fileToRemove - the element to remove.
      Returns:
      true if the file was removed as a result of this call.
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • isEqual

      protected boolean isEqual(F file, String value)
      Override this method if you wish to use something other than the modified timestamp to determine equality.
      Parameters:
      file - The file.
      value - The current value for the key in the store.
      Returns:
      true if equal.
    • buildKey

      protected String buildKey(F file)
      The default key is the prefix plus the full filename.
      Parameters:
      file - The file.
      Returns:
      The key.
    • flushIfNeeded

      protected void flushIfNeeded()
      Flush the store if it's a Flushable and flushOnUpdate is true.
      Since:
      1.4.5
    • isDirectory

      protected boolean isDirectory(F file)
      Description copied from class: AbstractDirectoryAwareFileListFilter
      Subclasses must implement this method to indicate whether the file is a directory or not.
      Specified by:
      isDirectory in class AbstractDirectoryAwareFileListFilter<F>
      Parameters:
      file - the file.
      Returns:
      true if it's a directory.
    • modified

      protected abstract long modified(F file)
    • fileName

      protected abstract String fileName(F file)