Class AbstractPersistentAcceptOnceFileListFilter<F>
java.lang.Object
org.springframework.integration.file.filters.AbstractFileListFilter<F>
org.springframework.integration.file.filters.AbstractPersistentAcceptOnceFileListFilter<F>
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,FileListFilter<F>,ResettableFileListFilter<F>,ReversibleFileListFilter<F>
- Direct Known Subclasses:
FileSystemPersistentAcceptOnceFileListFilter
public abstract class AbstractPersistentAcceptOnceFileListFilter<F> extends AbstractFileListFilter<F> implements ReversibleFileListFilter<F>, ResettableFileListFilter<F>, java.io.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
-
Field Summary
Fields Modifier and Type Field Description protected java.io.FlushableflushableStoreprotected booleanflushOnUpdateprotected java.lang.Stringprefixprotected org.springframework.integration.metadata.ConcurrentMetadataStorestore -
Constructor Summary
Constructors Constructor Description AbstractPersistentAcceptOnceFileListFilter(org.springframework.integration.metadata.ConcurrentMetadataStore store, java.lang.String prefix) -
Method Summary
Modifier and Type Method Description booleanaccept(F file)Subclasses must implement this method.protected java.lang.StringbuildKey(F file)The default key is theprefixplus the full filename.voidclose()protected abstract java.lang.StringfileName(F file)protected booleanfileStillExists(F file)Check if the file still exists; default implementation returns true.protected voidflushIfNeeded()Flush the store if it's aFlushableandflushOnUpdateis true.protected booleanisEqual(F file, java.lang.String value)Override this method if you wish to use something other than the modified timestamp to determine equality.protected abstract longmodified(F file)booleanremove(F fileToRemove)Remove the specified file from the filter so it will pass on the next attempt.voidrollback(F file, java.util.List<F> files)Indicate that not all files previously passed by this filter (inFileListFilter.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.voidsetFlushOnUpdate(boolean flushOnUpdate)Determine whether the metadataStore should be flushed on each update (ifFlushable).Methods inherited from class org.springframework.integration.file.filters.AbstractFileListFilter
filterFiles, supportsSingleFileFilteringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.integration.file.filters.FileListFilter
filterFiles, supportsSingleFileFiltering
-
Field Details
-
store
protected final org.springframework.integration.metadata.ConcurrentMetadataStore store -
prefix
protected final java.lang.String prefix -
flushableStore
@Nullable protected final java.io.Flushable flushableStore -
flushOnUpdate
protected boolean flushOnUpdate
-
-
Constructor Details
-
AbstractPersistentAcceptOnceFileListFilter
public AbstractPersistentAcceptOnceFileListFilter(org.springframework.integration.metadata.ConcurrentMetadataStore store, java.lang.String prefix)
-
-
Method Details
-
setFlushOnUpdate
public void setFlushOnUpdate(boolean flushOnUpdate)Determine whether the metadataStore should be flushed on each update (ifFlushable).- Parameters:
flushOnUpdate- true to flush.- Since:
- 4.1.5
-
accept
Description copied from class:AbstractFileListFilterSubclasses must implement this method.- Specified by:
acceptin interfaceFileListFilter<F>- Specified by:
acceptin classAbstractFileListFilter<F>- Parameters:
file- The file.- Returns:
- true if the file passes the filter.
- See Also:
FileListFilter.supportsSingleFileFiltering()
-
fileStillExists
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
Indicate that not all files previously passed by this filter (inFileListFilter.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:
rollbackin interfaceReversibleFileListFilter<F>- Parameters:
file- the file which failed.files- the list of files that were returned byFileListFilter.filterFiles(Object[]).- Since:
- 4.0.4
-
remove
Description copied from interface:ResettableFileListFilterRemove the specified file from the filter so it will pass on the next attempt.- Specified by:
removein interfaceResettableFileListFilter<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 java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Throws:
java.io.IOException
-
isEqual
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
The default key is theprefixplus the full filename.- Parameters:
file- The file.- Returns:
- The key.
-
flushIfNeeded
protected void flushIfNeeded()Flush the store if it's aFlushableandflushOnUpdateis true.- Since:
- 1.4.5
-
modified
-
fileName
-