F - the Type that represents a remote file.public abstract class AbstractInboundFileSynchronizer<F> extends java.lang.Object implements InboundFileSynchronizer, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.InitializingBean, java.io.Closeable
The implementation should run through any configured
FileListFilters to
ensure the file entry is acceptable.
| Modifier and Type | Field and Description |
|---|---|
protected static org.springframework.expression.ExpressionParser |
EXPRESSION_PARSER |
protected org.apache.commons.logging.Log |
logger |
| Constructor and Description |
|---|
AbstractInboundFileSynchronizer(SessionFactory<F> sessionFactory)
Create a synchronizer with the
SessionFactory used to acquire Session instances. |
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet() |
void |
close() |
protected boolean |
copyFileToLocalDirectory(java.lang.String remoteDirectoryPath,
F remoteFile,
java.io.File localDirectory,
Session<F> session) |
protected void |
doInit()
Subclasses can override to perform initialization - called from
InitializingBean.afterPropertiesSet(). |
protected void |
doSetFilter(FileListFilter<F> filterToSet) |
protected void |
doSetRemoteDirectoryExpression(org.springframework.expression.Expression expression) |
protected void |
evaluateRemoteDirectory() |
protected java.util.List<F> |
filterFiles(F[] files) |
protected java.util.Comparator<F> |
getComparator() |
protected abstract java.lang.String |
getFilename(F file) |
protected abstract long |
getModified(F file) |
java.lang.String |
getRemoteFileMetadata(java.io.File localFile)
Obtain a metadata for remote file associated with the provided local file.
|
protected java.lang.String |
getTemporaryFileSuffix() |
protected abstract boolean |
isFile(F file) |
protected abstract java.lang.String |
protocol()
Return the protocol this synchronizer works with.
|
void |
removeRemoteFileMetadata(java.io.File localFile)
Remove a metadata for remote file associated with the provided local file.
|
protected void |
rollbackFromFileToListEnd(java.util.List<F> filteredFiles,
F file) |
void |
setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) |
void |
setBeanName(java.lang.String name) |
void |
setComparator(java.util.Comparator<F> comparator)
Set a comparator to sort the retrieved list of
F (the Type that represents
the remote file) prior to applying filters and max fetch size. |
void |
setDeleteRemoteFiles(boolean deleteRemoteFiles)
Set to true to enable deletion of remote files after successful transfer.
|
void |
setFilter(FileListFilter<F> filter)
Set the filter to be applied to the remote files before transferring.
|
void |
setLocalFilenameGeneratorExpression(org.springframework.expression.Expression localFilenameGeneratorExpression)
Set an expression used to determine the local file name.
|
void |
setLocalFilenameGeneratorExpressionString(java.lang.String localFilenameGeneratorExpression)
Set an expression used to determine the local file name.
|
void |
setMetadataStorePrefix(java.lang.String metadataStorePrefix)
Specify a prefix for keys in metadata store do not clash with other keys in the shared store.
|
void |
setPreserveTimestamp(boolean preserveTimestamp)
Set to true to enable the preservation of the remote file timestamp when
transferring.
|
void |
setRemoteDirectory(java.lang.String remoteDirectory)
Specify the full path to the remote directory.
|
void |
setRemoteDirectoryExpression(org.springframework.expression.Expression remoteDirectoryExpression)
Specify an expression that evaluates to the full path to the remote directory.
|
void |
setRemoteDirectoryExpressionString(java.lang.String remoteDirectoryExpression)
Specify an expression that evaluates to the full path to the remote directory.
|
void |
setRemoteFileMetadataStore(org.springframework.integration.metadata.MetadataStore remoteFileMetadataStore)
Configure a
MetadataStore to hold a remote file info (host, port, remote directory)
to transfer downstream in message headers when local file is pulled. |
void |
setRemoteFileSeparator(java.lang.String remoteFileSeparator) |
void |
setTemporaryFileSuffix(java.lang.String temporaryFileSuffix)
Set a temporary file suffix to be used while transferring files.
|
void |
synchronizeToLocalDirectory(java.io.File localDirectory)
Synchronize all available files to the local directory;
|
void |
synchronizeToLocalDirectory(java.io.File localDirectory,
int maxFetchSize)
Synchronize up to maxFetchSize files to the local directory;
|
protected static final org.springframework.expression.ExpressionParser EXPRESSION_PARSER
protected final org.apache.commons.logging.Log logger
public AbstractInboundFileSynchronizer(SessionFactory<F> sessionFactory)
SessionFactory used to acquire Session instances.sessionFactory - The session factory.@Nullable protected java.util.Comparator<F> getComparator()
public void setComparator(@Nullable
java.util.Comparator<F> comparator)
F (the Type that represents
the remote file) prior to applying filters and max fetch size.comparator - the comparator.public void setRemoteFileSeparator(java.lang.String remoteFileSeparator)
remoteFileSeparator - the remote file separator.RemoteFileTemplate.setRemoteFileSeparator(String)public void setLocalFilenameGeneratorExpression(org.springframework.expression.Expression localFilenameGeneratorExpression)
localFilenameGeneratorExpression - the expression.public void setLocalFilenameGeneratorExpressionString(java.lang.String localFilenameGeneratorExpression)
localFilenameGeneratorExpression - the expression.setRemoteDirectoryExpression(Expression)public void setTemporaryFileSuffix(java.lang.String temporaryFileSuffix)
temporaryFileSuffix - the file suffix.public void setRemoteDirectory(java.lang.String remoteDirectory)
remoteDirectory - The remote directory.public void setRemoteDirectoryExpression(org.springframework.expression.Expression remoteDirectoryExpression)
remoteDirectoryExpression - The remote directory expression.public void setRemoteDirectoryExpressionString(java.lang.String remoteDirectoryExpression)
remoteDirectoryExpression - The remote directory expression.setRemoteDirectoryExpression(Expression)protected final void doSetRemoteDirectoryExpression(org.springframework.expression.Expression expression)
public void setFilter(@Nullable
FileListFilter<F> filter)
filter - the file list filter.protected final void doSetFilter(@Nullable
FileListFilter<F> filterToSet)
public void setDeleteRemoteFiles(boolean deleteRemoteFiles)
deleteRemoteFiles - true to delete.public void setPreserveTimestamp(boolean preserveTimestamp)
preserveTimestamp - true to preserve.public void setRemoteFileMetadataStore(org.springframework.integration.metadata.MetadataStore remoteFileMetadataStore)
MetadataStore to hold a remote file info (host, port, remote directory)
to transfer downstream in message headers when local file is pulled.remoteFileMetadataStore - the MetadataStore to use.public void setMetadataStorePrefix(java.lang.String metadataStorePrefix)
metadataStorePrefix - the prefix to use.setRemoteFileMetadataStore(MetadataStore)public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
throws org.springframework.beans.BeansException
setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAwareorg.springframework.beans.BeansExceptionpublic void setBeanName(java.lang.String name)
setBeanName in interface org.springframework.beans.factory.BeanNameAwarepublic final void afterPropertiesSet()
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanprotected void doInit()
InitializingBean.afterPropertiesSet().protected java.lang.String getTemporaryFileSuffix()
public void close()
throws java.io.IOException
close in interface java.io.Closeableclose in interface java.lang.AutoCloseablejava.io.IOExceptionpublic void synchronizeToLocalDirectory(java.io.File localDirectory)
InboundFileSynchronizersynchronizeToLocalDirectory in interface InboundFileSynchronizerlocalDirectory - the directory.public void synchronizeToLocalDirectory(java.io.File localDirectory,
int maxFetchSize)
InboundFileSynchronizersynchronizeToLocalDirectory in interface InboundFileSynchronizerlocalDirectory - the directory.maxFetchSize - the maximum files to fetch.protected void rollbackFromFileToListEnd(java.util.List<F> filteredFiles, F file)
protected boolean copyFileToLocalDirectory(java.lang.String remoteDirectoryPath,
F remoteFile,
java.io.File localDirectory,
Session<F> session)
throws java.io.IOException
java.io.IOExceptionprotected void evaluateRemoteDirectory()
@Nullable public java.lang.String getRemoteFileMetadata(java.io.File localFile)
localFile - the local file to retrieve metadata for.protocol://host:port/remoteDirectory#remoteFileNamepublic void removeRemoteFileMetadata(java.io.File localFile)
localFile - the local file to remove metadata for.protected abstract boolean isFile(F file)
protected abstract java.lang.String getFilename(F file)
protected abstract long getModified(F file)
protected abstract java.lang.String protocol()