Search in sources :

Example 1 with CompositeFileListFilter

use of org.springframework.integration.file.filters.CompositeFileListFilter in project spring-integration by spring-projects.

the class FileReadingMessageSourceFactoryBean method initSource.

private void initSource() throws Exception {
    synchronized (this.initializationMonitor) {
        if (this.source != null) {
            return;
        }
        boolean comparatorSet = this.comparator != null;
        boolean queueSizeSet = this.queueSize != null;
        if (comparatorSet) {
            if (queueSizeSet) {
                logger.warn("'comparator' and 'queueSize' are mutually exclusive. Ignoring 'queueSize'");
            }
            this.source = new FileReadingMessageSource(this.comparator);
        } else if (queueSizeSet) {
            this.source = new FileReadingMessageSource(this.queueSize);
        } else {
            this.source = new FileReadingMessageSource();
        }
        this.source.setDirectory(this.directory);
        if (this.scanner != null) {
            this.source.setScanner(this.scanner);
        } else {
            this.source.setUseWatchService(this.useWatchService);
            if (this.watchEvents != null) {
                this.source.setWatchEvents(this.watchEvents);
            }
        }
        if (this.filter != null) {
            if (this.locker == null) {
                this.source.setFilter(this.filter);
            } else {
                CompositeFileListFilter<File> compositeFileListFilter = new CompositeFileListFilter<File>();
                compositeFileListFilter.addFilter(this.filter);
                compositeFileListFilter.addFilter(this.locker);
                this.source.setFilter(compositeFileListFilter);
                this.source.setLocker(this.locker);
            }
        } else if (this.locker != null) {
            CompositeFileListFilter<File> compositeFileListFilter = new CompositeFileListFilter<File>();
            compositeFileListFilter.addFilter(new FileListFilterFactoryBean().getObject());
            compositeFileListFilter.addFilter(this.locker);
            this.source.setFilter(compositeFileListFilter);
            this.source.setLocker(this.locker);
        }
        if (this.scanEachPoll != null) {
            this.source.setScanEachPoll(this.scanEachPoll);
        }
        if (this.autoCreateDirectory != null) {
            this.source.setAutoCreateDirectory(this.autoCreateDirectory);
        }
        if (this.beanFactory != null) {
            this.source.setBeanFactory(this.beanFactory);
        }
        this.source.afterPropertiesSet();
    }
}
Also used : CompositeFileListFilter(org.springframework.integration.file.filters.CompositeFileListFilter) File(java.io.File) FileReadingMessageSource(org.springframework.integration.file.FileReadingMessageSource)

Example 2 with CompositeFileListFilter

use of org.springframework.integration.file.filters.CompositeFileListFilter in project spring-integration by spring-projects.

the class FtpInboundRemoteFileSystemSynchronizerTests method testCopyFileToLocalDir.

@Test
public void testCopyFileToLocalDir() throws Exception {
    File localDirectory = new File("test");
    assertFalse(localDirectory.exists());
    TestFtpSessionFactory ftpSessionFactory = new TestFtpSessionFactory();
    ftpSessionFactory.setUsername("kermit");
    ftpSessionFactory.setPassword("frog");
    ftpSessionFactory.setHost("foo.com");
    FtpInboundFileSynchronizer synchronizer = spy(new FtpInboundFileSynchronizer(ftpSessionFactory));
    synchronizer.setDeleteRemoteFiles(true);
    synchronizer.setPreserveTimestamp(true);
    synchronizer.setRemoteDirectory("remote-test-dir");
    FtpRegexPatternFileListFilter patternFilter = new FtpRegexPatternFileListFilter(".*\\.test$");
    PropertiesPersistingMetadataStore store = spy(new PropertiesPersistingMetadataStore());
    store.setBaseDirectory("test");
    store.afterPropertiesSet();
    FtpPersistentAcceptOnceFileListFilter persistFilter = new FtpPersistentAcceptOnceFileListFilter(store, "foo");
    List<FileListFilter<FTPFile>> filters = new ArrayList<FileListFilter<FTPFile>>();
    filters.add(persistFilter);
    filters.add(patternFilter);
    CompositeFileListFilter<FTPFile> filter = new CompositeFileListFilter<FTPFile>(filters);
    synchronizer.setFilter(filter);
    ExpressionParser expressionParser = new SpelExpressionParser(new SpelParserConfiguration(true, true));
    Expression expression = expressionParser.parseExpression("'subdir/' + #this.toUpperCase() + '.a'");
    synchronizer.setLocalFilenameGeneratorExpression(expression);
    synchronizer.setBeanFactory(mock(BeanFactory.class));
    synchronizer.afterPropertiesSet();
    FtpInboundFileSynchronizingMessageSource ms = new FtpInboundFileSynchronizingMessageSource(synchronizer);
    ms.setAutoCreateLocalDirectory(true);
    ms.setLocalDirectory(localDirectory);
    ms.setBeanFactory(mock(BeanFactory.class));
    CompositeFileListFilter<File> localFileListFilter = new CompositeFileListFilter<File>();
    localFileListFilter.addFilter(new RegexPatternFileListFilter(".*\\.TEST\\.a$"));
    AcceptOnceFileListFilter<File> localAcceptOnceFilter = new AcceptOnceFileListFilter<File>();
    localFileListFilter.addFilter(localAcceptOnceFilter);
    RecursiveDirectoryScanner scanner = new RecursiveDirectoryScanner();
    ms.setScanner(scanner);
    ms.setLocalFilter(localFileListFilter);
    ms.afterPropertiesSet();
    ms.start();
    Message<File> atestFile = ms.receive();
    assertNotNull(atestFile);
    assertEquals("A.TEST.a", atestFile.getPayload().getName());
    // The test remote files are created with the current timestamp + 1 day.
    assertThat(atestFile.getPayload().lastModified(), Matchers.greaterThan(System.currentTimeMillis()));
    assertEquals("A.TEST.a", atestFile.getHeaders().get(FileHeaders.FILENAME));
    Message<File> btestFile = ms.receive();
    assertNotNull(btestFile);
    assertEquals("B.TEST.a", btestFile.getPayload().getName());
    // The test remote files are created with the current timestamp + 1 day.
    assertThat(atestFile.getPayload().lastModified(), Matchers.greaterThan(System.currentTimeMillis()));
    Message<File> nothing = ms.receive();
    assertNull(nothing);
    // two times because on the third receive (above) the internal queue will be empty, so it will attempt
    verify(synchronizer, times(2)).synchronizeToLocalDirectory(localDirectory, Integer.MIN_VALUE);
    assertTrue(new File("test/subdir/A.TEST.a").exists());
    assertTrue(new File("test/subdir/B.TEST.a").exists());
    TestUtils.getPropertyValue(localAcceptOnceFilter, "seenSet", Collection.class).clear();
    new File("test/subdir/A.TEST.a").delete();
    new File("test/subdir/B.TEST.a").delete();
    // the remote filter should prevent a re-fetch
    nothing = ms.receive();
    assertNull(nothing);
    ms.stop();
    verify(synchronizer).close();
    verify(store).close();
}
Also used : FtpRegexPatternFileListFilter(org.springframework.integration.ftp.filters.FtpRegexPatternFileListFilter) ArrayList(java.util.ArrayList) FTPFile(org.apache.commons.net.ftp.FTPFile) RegexPatternFileListFilter(org.springframework.integration.file.filters.RegexPatternFileListFilter) FtpRegexPatternFileListFilter(org.springframework.integration.ftp.filters.FtpRegexPatternFileListFilter) FtpPersistentAcceptOnceFileListFilter(org.springframework.integration.ftp.filters.FtpPersistentAcceptOnceFileListFilter) AcceptOnceFileListFilter(org.springframework.integration.file.filters.AcceptOnceFileListFilter) SpelExpressionParser(org.springframework.expression.spel.standard.SpelExpressionParser) BeanFactory(org.springframework.beans.factory.BeanFactory) SpelParserConfiguration(org.springframework.expression.spel.SpelParserConfiguration) CompositeFileListFilter(org.springframework.integration.file.filters.CompositeFileListFilter) FtpPersistentAcceptOnceFileListFilter(org.springframework.integration.ftp.filters.FtpPersistentAcceptOnceFileListFilter) RegexPatternFileListFilter(org.springframework.integration.file.filters.RegexPatternFileListFilter) FileListFilter(org.springframework.integration.file.filters.FileListFilter) CompositeFileListFilter(org.springframework.integration.file.filters.CompositeFileListFilter) FtpRegexPatternFileListFilter(org.springframework.integration.ftp.filters.FtpRegexPatternFileListFilter) AcceptOnceFileListFilter(org.springframework.integration.file.filters.AcceptOnceFileListFilter) FtpPersistentAcceptOnceFileListFilter(org.springframework.integration.ftp.filters.FtpPersistentAcceptOnceFileListFilter) Expression(org.springframework.expression.Expression) Collection(java.util.Collection) ExpressionParser(org.springframework.expression.ExpressionParser) SpelExpressionParser(org.springframework.expression.spel.standard.SpelExpressionParser) File(java.io.File) FTPFile(org.apache.commons.net.ftp.FTPFile) PropertiesPersistingMetadataStore(org.springframework.integration.metadata.PropertiesPersistingMetadataStore) RecursiveDirectoryScanner(org.springframework.integration.file.RecursiveDirectoryScanner) Test(org.junit.Test)

Example 3 with CompositeFileListFilter

use of org.springframework.integration.file.filters.CompositeFileListFilter in project spring-integration by spring-projects.

the class SftpInboundChannelAdapterSpec method composeFilters.

@SuppressWarnings("unchecked")
private CompositeFileListFilter<ChannelSftp.LsEntry> composeFilters(FileListFilter<ChannelSftp.LsEntry> fileListFilter) {
    CompositeFileListFilter<ChannelSftp.LsEntry> compositeFileListFilter = new CompositeFileListFilter<>();
    compositeFileListFilter.addFilters(fileListFilter, new SftpPersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "sftpMessageSource"));
    return compositeFileListFilter;
}
Also used : CompositeFileListFilter(org.springframework.integration.file.filters.CompositeFileListFilter) SimpleMetadataStore(org.springframework.integration.metadata.SimpleMetadataStore) SftpPersistentAcceptOnceFileListFilter(org.springframework.integration.sftp.filters.SftpPersistentAcceptOnceFileListFilter)

Example 4 with CompositeFileListFilter

use of org.springframework.integration.file.filters.CompositeFileListFilter in project spring-integration by spring-projects.

the class FileInboundChannelAdapterWithPatternParserTests method compositeFilterType.

@Test
public void compositeFilterType() {
    DirectFieldAccessor scannerAccessor = new DirectFieldAccessor(accessor.getPropertyValue("scanner"));
    assertTrue(scannerAccessor.getPropertyValue("filter") instanceof CompositeFileListFilter);
}
Also used : CompositeFileListFilter(org.springframework.integration.file.filters.CompositeFileListFilter) DirectFieldAccessor(org.springframework.beans.DirectFieldAccessor) Test(org.junit.Test)

Example 5 with CompositeFileListFilter

use of org.springframework.integration.file.filters.CompositeFileListFilter in project spring-integration by spring-projects.

the class FileInboundChannelAdapterWithPreventDuplicatesFlagTests method defaultAndNull.

@Test
public void defaultAndNull() throws Exception {
    FileListFilter<File> filter = this.extractFilter("defaultAndNull");
    assertNotNull(filter);
    assertFalse(filter instanceof CompositeFileListFilter);
    assertTrue(filter instanceof AcceptOnceFileListFilter);
    File testFile = new File("test");
    File[] files = new File[] { testFile, testFile, testFile };
    List<File> result = filter.filterFiles(files);
    assertEquals(1, result.size());
}
Also used : CompositeFileListFilter(org.springframework.integration.file.filters.CompositeFileListFilter) AcceptOnceFileListFilter(org.springframework.integration.file.filters.AcceptOnceFileListFilter) File(java.io.File) Test(org.junit.Test)

Aggregations

CompositeFileListFilter (org.springframework.integration.file.filters.CompositeFileListFilter)13 File (java.io.File)7 Test (org.junit.Test)7 AcceptOnceFileListFilter (org.springframework.integration.file.filters.AcceptOnceFileListFilter)6 ArrayList (java.util.ArrayList)4 FileListFilter (org.springframework.integration.file.filters.FileListFilter)4 SimpleMetadataStore (org.springframework.integration.metadata.SimpleMetadataStore)4 Collection (java.util.Collection)3 FTPFile (org.apache.commons.net.ftp.FTPFile)3 RegexPatternFileListFilter (org.springframework.integration.file.filters.RegexPatternFileListFilter)3 FtpPersistentAcceptOnceFileListFilter (org.springframework.integration.ftp.filters.FtpPersistentAcceptOnceFileListFilter)3 SftpPersistentAcceptOnceFileListFilter (org.springframework.integration.sftp.filters.SftpPersistentAcceptOnceFileListFilter)3 LsEntry (com.jcraft.jsch.ChannelSftp.LsEntry)2 BeanFactory (org.springframework.beans.factory.BeanFactory)2 Expression (org.springframework.expression.Expression)2 AcceptAllFileListFilter (org.springframework.integration.file.filters.AcceptAllFileListFilter)2 PropertiesPersistingMetadataStore (org.springframework.integration.metadata.PropertiesPersistingMetadataStore)2 Method (java.lang.reflect.Method)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 DirectFieldAccessor (org.springframework.beans.DirectFieldAccessor)1