List of usage examples for org.springframework.integration.file.remote.session Session list
F[] list(String path) throws IOException;
From source file:org.opentestsystem.authoring.testitembank.service.impl.SftpFileTransferServiceImpl.java
private final int cleanDirectory(final String baseDirectory, final int maxAge, final Session<ChannelSftp.LsEntry> sftpSession) { final long maxAgeInMillis = Long.valueOf(maxAge) * MILLIS_IN_A_DAY; final long currentTimeInMillis = new Date().getTime(); int remainingFileCount = 0; try {//from w w w . ja v a 2s. co m final LsEntry[] remoteFiles = sftpSession.list(baseDirectory); for (final LsEntry remoteFile : remoteFiles) { if (isSubDirectory(remoteFile)) { final int directoryFileCount = cleanDirectory(baseDirectory + "/" + remoteFile.getFilename(), maxAge, sftpSession); remainingFileCount += directoryFileCount; // if (!remoteFile.getFilename().startsWith(ImportSetServiceImpl.SFTP_TENANT_FOLDER_PREFIX) && (directoryFileCount == 0)) { // TODO - do we need to delete empty sub-directories? // TODO - we'll need a different SFTP library for that, or wait for Spring integration 4.1.0 which has rmdir() method // } } else if (!isDirectory(remoteFile)) { final long lastModifiedTimeInMillis = Long.valueOf(remoteFile.getAttrs().getMTime()) * 1000L; final long fileAgeInMillis = currentTimeInMillis - lastModifiedTimeInMillis; if (fileAgeInMillis > maxAgeInMillis) { sftpSession.remove(baseDirectory + "/" + remoteFile.getFilename()); } else { remainingFileCount++; } } } } catch (final IOException e) { LOGGER.error("unable to clean SFTP directory: " + baseDirectory, e); throw new TestItemBankException("sftp.clean.error", new String[] { baseDirectory }); } return remainingFileCount; }
From source file:org.springframework.batch.integration.x.RemoteFileToHadoopTests.java
@SuppressWarnings({ "unchecked", "rawtypes" }) @Before//from w w w .j a v a 2 s . c o m public void setup() throws Exception { byte[] bytes = "foobarbaz".getBytes(); // using this trick here by getting hadoop minicluster from main test // context and then using it to override 'hadoopConfiguration' bean // which is imported from ftphdfs.xml. ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(); ctx.setConfigLocations("org/springframework/batch/integration/x/RemoteFileToHadoopTests-context.xml", "org/springframework/batch/integration/x/miniclusterconfig.xml"); Properties properties = new Properties(); properties.setProperty("restartable", "false"); properties.setProperty("xd.config.home", "file:../../config"); properties.setProperty("partitionResultsTimeout", "3600000"); PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("props", properties); ctx.getEnvironment().getPropertySources().addLast(propertiesPropertySource); ctx.setParent(context); ctx.refresh(); this.sessionFactory = ctx.getBean(SessionFactory.class); Session session = mock(Session.class); when(this.sessionFactory.getSession()).thenReturn(session); when(session.readRaw("/foo/bar.txt")).thenReturn(new ByteArrayInputStream(bytes)); when(session.readRaw("/foo/baz.txt")).thenReturn(new ByteArrayInputStream(bytes)); when(session.finalizeRaw()).thenReturn(true); Object[] fileList = new FTPFile[2]; FTPFile file = new FTPFile(); file.setName("bar.txt"); fileList[0] = file; file = new FTPFile(); file.setName("baz.txt"); fileList[1] = file; when(session.list("/foo/")).thenReturn(fileList); this.launcher = ctx.getBean(JobLauncher.class); this.job = ctx.getBean(Job.class); this.requestsOut = ctx.getBean("stepExecutionRequests.output", MessageChannel.class); this.requestsIn = ctx.getBean("stepExecutionRequests.input", MessageChannel.class); this.repliesOut = ctx.getBean("stepExecutionReplies.output", MessageChannel.class); this.repliesIn = ctx.getBean("stepExecutionReplies.input", MessageChannel.class); this.bus = new LocalMessageBus(); ((LocalMessageBus) this.bus).setApplicationContext(ctx); this.bus.bindRequestor("foo", this.requestsOut, this.repliesIn, null); this.bus.bindReplier("foo", this.requestsIn, this.repliesOut, null); }
From source file:org.springframework.batch.integration.x.RemoteFileToTmpTests.java
@SuppressWarnings({ "unchecked", "rawtypes" }) @Before//from w w w .j a v a 2s . com public void setup() throws Exception { byte[] bytes = "foo".getBytes(); Session session = mock(Session.class); when(this.sessionFactory.getSession()).thenReturn(session); when(session.readRaw("/foo/bar.txt")).thenReturn(new ByteArrayInputStream(bytes)); when(session.readRaw("/foo/baz.txt")).thenReturn(new ByteArrayInputStream(bytes)); when(session.finalizeRaw()).thenReturn(true); Object[] fileList = new FTPFile[2]; FTPFile file = new FTPFile(); file.setName("bar.txt"); fileList[0] = file; file = new FTPFile(); file.setName("baz.txt"); fileList[1] = file; when(session.list("/foo/")).thenReturn(fileList); this.bus = new LocalMessageBus(); this.bus.setApplicationContext(BusTestUtils.MOCK_AC); this.bus.bindRequestor("foo", this.requestsOut, this.repliesIn, null); this.bus.bindReplier("foo", this.requestsIn, this.repliesOut, null); this.bus.afterPropertiesSet(); }
From source file:org.springframework.integration.file.remote.synchronizer.AbstractInboundFileSynchronizer.java
public void synchronizeToLocalDirectory(File localDirectory) { Session<F> session = null; try {/*from w ww. j av a 2 s.c o m*/ session = this.sessionFactory.getSession(); Assert.state(session != null, "failed to acquire a Session"); F[] files = session.list(this.remoteDirectory); if (!ObjectUtils.isEmpty(files)) { Collection<F> filteredFiles = this.filterFiles(files); for (F file : filteredFiles) { if (file != null) { this.copyFileToLocalDirectory(this.remoteDirectory, file, localDirectory, session); } } } } catch (IOException e) { throw new MessagingException("Problem occurred while synchronizing remote to local directory", e); } finally { if (session != null) { try { session.close(); } catch (Exception ignored) { if (logger.isDebugEnabled()) { logger.debug("failed to close Session", ignored); } } } } }