diff --git a/clearing-parent/dbf-importer/pom.xml b/clearing-parent/dbf-importer/pom.xml
index dbc694821..cda816f25 100644
--- a/clearing-parent/dbf-importer/pom.xml
+++ b/clearing-parent/dbf-importer/pom.xml
@@ -30,6 +30,10 @@
org.springframework.boot
spring-boot-autoconfigure
+
+ org.springframework.integration
+ spring-integration-sftp
+
diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPConfig.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPConfig.java
new file mode 100644
index 000000000..b6c467dad
--- /dev/null
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPConfig.java
@@ -0,0 +1,79 @@
+package ru.spcex.clearing.dbf.importer.config;
+
+import com.jcraft.jsch.ChannelSftp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.integration.annotation.InboundChannelAdapter;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.integration.core.MessageSource;
+import org.springframework.integration.file.remote.session.CachingSessionFactory;
+import org.springframework.integration.file.remote.session.SessionFactory;
+import org.springframework.integration.scheduling.PollerMetadata;
+import org.springframework.integration.sftp.inbound.SftpInboundFileSynchronizer;
+import org.springframework.integration.sftp.inbound.SftpInboundFileSynchronizingMessageSource;
+import org.springframework.integration.sftp.session.DefaultSftpSessionFactory;
+import org.springframework.messaging.MessageHandler;
+import org.springframework.scheduling.support.PeriodicTrigger;
+import ru.spcex.clearing.dbf.importer.config.settings.ImportDBFServiceSettings;
+
+import java.io.File;
+import java.util.concurrent.TimeUnit;
+
+@Configuration
+public class SFTPConfig {
+ private final Logger log = LoggerFactory.getLogger(getClass());
+ private final ImportDBFServiceSettings settings;
+
+ @Autowired
+ public SFTPConfig(ImportDBFServiceSettings settings) {
+ this.settings = settings;
+ }
+
+ @Bean
+ public SessionFactory sftpSessionFactory() {
+ DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
+ factory.setHost(settings.getStore().getServerIp());
+ factory.setPort(settings.getStore().getServerPort());
+ factory.setUser(settings.getStore().getUser());
+ factory.setPassword(settings.getStore().getPassword());
+ factory.setAllowUnknownKeys(true);
+ return new CachingSessionFactory<>(factory);
+ }
+
+ @Bean(name = PollerMetadata.DEFAULT_POLLER)
+ public PollerMetadata defaultPoller() {
+ PollerMetadata pollerMetadata = new PollerMetadata();
+ pollerMetadata.setTrigger(new PeriodicTrigger(5, TimeUnit.SECONDS));
+ return pollerMetadata;
+ }
+
+ @Bean
+ SftpInboundFileSynchronizer sftpInboundFileSynchronizer() {
+ SftpInboundFileSynchronizer fileSync = new SftpInboundFileSynchronizer(sftpSessionFactory());
+ fileSync.setDeleteRemoteFiles(true);
+ fileSync.setTemporaryFileSuffix(".tmp");
+ fileSync.setRemoteDirectory(settings.getStore().getSftpSrcDir());
+ return fileSync;
+ }
+
+ @Bean
+ @InboundChannelAdapter("sftpChannel")
+ public MessageSource sftpMessageSource() {
+ SftpInboundFileSynchronizingMessageSource source = new SftpInboundFileSynchronizingMessageSource(sftpInboundFileSynchronizer());
+ source.setLocalDirectory(new File(settings.getStore().getSrcDir()));
+ source.setAutoCreateLocalDirectory(true);
+ return source;
+ }
+
+ @Bean
+ @ServiceActivator(inputChannel="sftpChannel")
+ MessageHandler messageHandler() {
+ return arg0 -> {
+ File f = (File) arg0.getPayload();
+ log.info("copy file '{}' from sftp event", f.getName());
+ };
+ }
+}
diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java
index cc456f796..07a7cbe35 100644
--- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java
+++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java
@@ -6,6 +6,12 @@ public class Store {
private String outDir;
private String outDirError;
private boolean deleteSrcFiles = true;
+ //sftp settings
+ private String sftpSrcDir;
+ private String user;
+ private String password;
+ private String serverIp;
+ private int serverPort;
public String getSrcDir() {
return srcDir;
@@ -38,4 +44,44 @@ public class Store {
public void setOutDirError(String outDirError) {
this.outDirError = outDirError;
}
+
+ public String getUser() {
+ return user;
+ }
+
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getServerIp() {
+ return serverIp;
+ }
+
+ public void setServerIp(String serverIp) {
+ this.serverIp = serverIp;
+ }
+
+ public int getServerPort() {
+ return serverPort;
+ }
+
+ public void setServerPort(int serverPort) {
+ this.serverPort = serverPort;
+ }
+
+ public String getSftpSrcDir() {
+ return sftpSrcDir;
+ }
+
+ public void setSftpSrcDir(String sftpSrcDir) {
+ this.sftpSrcDir = sftpSrcDir;
+ }
}
diff --git a/clearing-parent/dbf-importer/src/main/resources/application.properties b/clearing-parent/dbf-importer/src/main/resources/application.properties
index 2d3916b1d..f7b835461 100644
--- a/clearing-parent/dbf-importer/src/main/resources/application.properties
+++ b/clearing-parent/dbf-importer/src/main/resources/application.properties
@@ -13,6 +13,13 @@ import-dbf-service.common.encoding-source=cp866
import-dbf-service.common.insert-batch-size=100
import-dbf-service.common.threads-count=10
+#sftpSrcDir
+import-dbf-service.store.sftp-src-dir=clearing_importer_sftp
+import-dbf-service.store.user=user
+import-dbf-service.store.password=*********
+import-dbf-service.store.server-ip=127.0.0.1
+import-dbf-service.store.server-port=22
+
import-dbf-service.hazelcast.cluster-members=10.200.200.181:5701
import-dbf-service.hazelcast.login=dev
import-dbf-service.hazelcast.password=dev-pass