F
- the file type.public abstract class AbstractPersistentAcceptOnceFileListFilter<F> extends AbstractDirectoryAwareFileListFilter<F> implements ReversibleFileListFilter<F>, ResettableFileListFilter<F>, Closeable
Modifier and Type | Field and Description |
---|---|
protected Flushable |
flushableStore |
protected boolean |
flushOnUpdate |
protected String |
prefix |
protected ConcurrentMetadataStore |
store |
Constructor and Description |
---|
AbstractPersistentAcceptOnceFileListFilter(ConcurrentMetadataStore store,
String prefix) |
Modifier and Type | Method and Description |
---|---|
boolean |
accept(F file)
Subclasses must implement this method.
|
protected String |
buildKey(F file)
The default key is the
prefix plus the full filename. |
void |
close() |
protected abstract String |
fileName(F file) |
protected boolean |
fileStillExists(F file)
Check if the file still exists; default implementation returns true.
|
protected void |
flushIfNeeded()
Flush the store if it's a
Flushable and
flushOnUpdate is true. |
protected boolean |
isDirectory(F file)
Subclasses must implement this method to indicate whether the file
is a directory or not.
|
protected boolean |
isEqual(F file,
String value)
Override this method if you wish to use something other than the
modified timestamp to determine equality.
|
protected abstract long |
modified(F file) |
boolean |
remove(F fileToRemove)
Remove the specified file from the filter so it will pass on the next attempt.
|
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. |
void |
setFlushOnUpdate(boolean flushOnUpdate)
Determine whether the metadataStore should be flushed on each update (if
Flushable ). |
alwaysAccept, isForRecursion, setAlwaysAcceptDirectories, setForRecursion
filterFiles, supportsSingleFileFiltering
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
filterFiles, isForRecursion, supportsSingleFileFiltering
protected final ConcurrentMetadataStore store
protected final String prefix
protected boolean flushOnUpdate
public AbstractPersistentAcceptOnceFileListFilter(ConcurrentMetadataStore store, String prefix)
public void setFlushOnUpdate(boolean flushOnUpdate)
Flushable
).flushOnUpdate
- true to flush.public boolean accept(F file)
AbstractFileListFilter
accept
in interface FileListFilter<F>
accept
in class AbstractFileListFilter<F>
file
- The file.FileListFilter.supportsSingleFileFiltering()
protected boolean fileStillExists(F file)
file
- the file.public void rollback(F file, List<F> files)
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.rollback
in interface ReversibleFileListFilter<F>
file
- the file which failed.files
- the list of files that were returned by FileListFilter.filterFiles(Object[])
.public boolean remove(F fileToRemove)
ResettableFileListFilter
remove
in interface ResettableFileListFilter<F>
fileToRemove
- the element to remove.public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
IOException
protected boolean isEqual(F file, String value)
file
- The file.value
- The current value for the key in the store.protected String buildKey(F file)
prefix
plus the full filename.file
- The file.protected void flushIfNeeded()
Flushable
and
flushOnUpdate
is true.protected boolean isDirectory(F file)
AbstractDirectoryAwareFileListFilter
isDirectory
in class AbstractDirectoryAwareFileListFilter<F>
file
- the file.protected abstract long modified(F file)