diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPConfig.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPConfig.java index 2402aa45c..636a9f201 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPConfig.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPConfig.java @@ -1,19 +1,23 @@ package ru.spcex.clearing.dbf.exporter.config; +import java.io.File; +import java.util.List; import com.jcraft.jsch.ChannelSftp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.integration.annotation.Gateway; -import org.springframework.integration.annotation.MessagingGateway; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway; +import static org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.Command.LS; import org.springframework.integration.file.remote.session.CachingSessionFactory; import org.springframework.integration.file.remote.session.SessionFactory; +import org.springframework.integration.gateway.AnnotationGatewayProxyFactoryBean; import org.springframework.integration.sftp.gateway.SftpOutboundGateway; import org.springframework.integration.sftp.outbound.SftpMessageHandler; import org.springframework.integration.sftp.session.DefaultSftpSessionFactory; @@ -24,11 +28,7 @@ import org.springframework.messaging.handler.annotation.Header; import org.springframework.messaging.handler.annotation.Payload; import ru.spcex.clearing.dbf.exporter.config.settings.ExportDBFServiceSettings; -import java.io.File; -import java.util.List; - -import static org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.Command.LS; - +@Profile("!test") @Configuration public class SFTPConfig { protected Logger log = LoggerFactory.getLogger(getClass()); @@ -60,7 +60,11 @@ public class SFTPConfig { return handler; } - @MessagingGateway + // https://stackoverflow.com/questions/53655208/profile-doesnt-work-with-messaging-gateway + @Bean("dbfGateway") + public AnnotationGatewayProxyFactoryBean dbfGateway() { + return new AnnotationGatewayProxyFactoryBean(DbfGateway.class); + } public interface DbfGateway { @Gateway(requestChannel = "toSftpChannel") void sendToSftp(@Payload File file, @Header("path") String path); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPMockConfig.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPMockConfig.java new file mode 100644 index 000000000..7ee6e2ec0 --- /dev/null +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPMockConfig.java @@ -0,0 +1,32 @@ +package ru.spcex.clearing.dbf.exporter.config; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.integration.sftp.session.SftpFileInfo; + +@Profile("test") +@Configuration +public class SFTPMockConfig { + @Bean("dbfGateway") + public SFTPConfig.DbfGateway dbfGateway(){ + return new DGateway(); + } + + public static class DGateway implements SFTPConfig.DbfGateway{ + + @Override + public void sendToSftp(File file, String path) { + + } + + @Override + public List listFiles(String dir) { + return new ArrayList<>(); + } + } + +} diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java index 482e4aef8..eeaf67dd0 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java @@ -1,7 +1,17 @@ package ru.spcex.clearing.dbf.exporter.logic.stages; +import java.io.File; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.function.Supplier; import com.linuxense.javadbf.DBFWriter; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import ru.spcex.clearing.dbf.exporter.config.SFTPConfig; import ru.spcex.clearing.dbf.exporter.config.settings.ExportDBFServiceSettings; @@ -10,6 +20,8 @@ import ru.spcex.clearing.dbf.exporter.logic.data.ResultContainer; import ru.spcex.clearing.dbf.exporter.logic.data.enums.StageResult; import ru.spcex.clearing.dbf.exporter.logic.data.enums.Table; import ru.spcex.clearing.dbf.exporter.services.converters.DFConverter; +import static ru.spcex.clearing.dbf.exporter.services.converters.DFConverter.ruCurrency; +import static ru.spcex.clearing.platform.messaging.domain.Consts.PAIR_SDF; import ru.spcex.clearing.platform.messaging.domain.cud.utilities.PairSdfRequest; import ru.spcex.clearing.platform.messaging.serialization.LogFormatter; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; @@ -18,14 +30,6 @@ import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import java.io.File; -import java.nio.charset.Charset; -import java.util.*; -import java.util.function.Supplier; - -import static ru.spcex.clearing.dbf.exporter.services.converters.DFConverter.ruCurrency; -import static ru.spcex.clearing.platform.messaging.domain.Consts.PAIR_SDF; - /** * Выгрузка данных из мапы hazelcast и их запись в файлы */ @@ -41,7 +45,7 @@ public class ExportFromHazelcast extends Stage implements InitializingBean { public ExportFromHazelcast(ExportDBFServiceSettings settings, ImdgProvider imdgProvider, - SFTPConfig.DbfGateway gateway, + @Qualifier("dbfGateway") SFTPConfig.DbfGateway gateway, List converters, Supplier kafkaSender) { this.settings = settings; diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java index 253f0b6a4..0a04e133e 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java @@ -1,6 +1,17 @@ package ru.spcex.clearing.dbf.exporter.logic.stages; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.integration.sftp.session.SftpFileInfo; import org.springframework.stereotype.Component; import ru.spcex.clearing.dbf.exporter.config.SFTPConfig; @@ -10,13 +21,6 @@ import ru.spcex.clearing.dbf.exporter.logic.data.enums.FilenameTemplate; import ru.spcex.clearing.dbf.exporter.logic.data.enums.StageResult; import ru.spcex.clearing.dbf.exporter.logic.data.enums.Table; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.time.LocalDateTime; -import java.util.*; - /** * Создание DBF файла */ @@ -27,7 +31,8 @@ public class PrepareDBFFile extends Stage implements InitializingBean { public static String outDir; private final SFTPConfig.DbfGateway gateway; - public PrepareDBFFile(ExportDBFServiceSettings settings, SFTPConfig.DbfGateway gateway) { + public PrepareDBFFile(ExportDBFServiceSettings settings, + @Qualifier("dbfGateway") SFTPConfig.DbfGateway gateway) { this.settings = settings; this.gateway = gateway; } 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 index 593108f98..257525394 100644 --- 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 @@ -1,29 +1,29 @@ package ru.spcex.clearing.dbf.importer.config; +import java.io.File; +import java.util.List; 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.context.annotation.Profile; import org.springframework.integration.annotation.Gateway; -import org.springframework.integration.annotation.MessagingGateway; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway; +import static org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.Command.MGET; import org.springframework.integration.file.remote.session.CachingSessionFactory; import org.springframework.integration.file.remote.session.SessionFactory; +import org.springframework.integration.gateway.AnnotationGatewayProxyFactoryBean; import org.springframework.integration.sftp.gateway.SftpOutboundGateway; import org.springframework.integration.sftp.session.DefaultSftpSessionFactory; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHandler; import ru.spcex.clearing.dbf.importer.config.settings.ImportDBFServiceSettings; -import java.io.File; -import java.util.List; - -import static org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.Command.MGET; - +@Profile("!test") @Configuration public class SFTPConfig { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -45,7 +45,12 @@ public class SFTPConfig { return new CachingSessionFactory<>(factory); } - @MessagingGateway + // https://stackoverflow.com/questions/53655208/profile-doesnt-work-with-messaging-gateway + @Bean("dbfGateway") + public AnnotationGatewayProxyFactoryBean dbfGateway() { + return new AnnotationGatewayProxyFactoryBean(DbfGateway.class); + } + public interface DbfGateway { @Gateway(requestChannel = "listSftpChannel") List listFiles(String dir); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPMockConfig.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPMockConfig.java new file mode 100644 index 000000000..d46cb4952 --- /dev/null +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPMockConfig.java @@ -0,0 +1,26 @@ +package ru.spcex.clearing.dbf.importer.config; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +@Profile("test") +@Configuration +public class SFTPMockConfig { + @Bean("dbfGateway") + public SFTPConfig.DbfGateway dbfGateway(){ + return new DGateway(); + } + + public static class DGateway implements SFTPConfig.DbfGateway{ + + @Override + public List listFiles(String dir) { + return new ArrayList<>(); + } + } + +} diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java index ad20d9537..778b5b04e 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java @@ -1,21 +1,27 @@ package ru.spcex.clearing.dbf.importer.services; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -import ru.spcex.clearing.dbf.importer.config.SFTPConfig; -import ru.spcex.clearing.dbf.importer.config.settings.ImportDBFServiceSettings; -import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; -import ru.spcex.platform.utils.log.ExceptionUtils; - import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.EnumMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; +import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import ru.spcex.clearing.dbf.importer.config.SFTPConfig; +import ru.spcex.clearing.dbf.importer.config.settings.ImportDBFServiceSettings; +import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; +import ru.spcex.platform.utils.log.ExceptionUtils; @Service("fileChecker") public class FileChecker { @@ -23,7 +29,7 @@ public class FileChecker { private final Logger log = LoggerFactory.getLogger(this.getClass()); private final SFTPConfig.DbfGateway gateway; - public FileChecker(SFTPConfig.DbfGateway gateway, + public FileChecker(@Qualifier("dbfGateway") SFTPConfig.DbfGateway gateway, ImportDBFServiceSettings settings) { this.gateway = gateway; this.settings = settings; diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPConfig.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPConfig.java index e5557aa57..2e49d1e39 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPConfig.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPConfig.java @@ -1,5 +1,7 @@ package ru.spcex.clearing.swt.exporter.config; +import java.io.File; +import java.util.List; import com.jcraft.jsch.ChannelSftp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -7,15 +9,17 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.expression.common.LiteralExpression; import org.springframework.integration.annotation.Gateway; -import org.springframework.integration.annotation.MessagingGateway; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.dsl.IntegrationFlow; import org.springframework.integration.dsl.IntegrationFlows; +import static org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.Command.LS; import org.springframework.integration.file.remote.session.CachingSessionFactory; import org.springframework.integration.file.remote.session.SessionFactory; +import org.springframework.integration.gateway.AnnotationGatewayProxyFactoryBean; import org.springframework.integration.sftp.gateway.SftpOutboundGateway; import org.springframework.integration.sftp.outbound.SftpMessageHandler; import org.springframework.integration.sftp.session.DefaultSftpSessionFactory; @@ -24,11 +28,7 @@ import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHandler; import ru.spcex.clearing.swt.exporter.config.settings.ExportSwtServiceSettings; -import java.io.File; -import java.util.List; - -import static org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.Command.LS; - +@Profile("!test") @Configuration @ConditionalOnProperty(value="export-swt-service.sftp-out.sftp-out-dir") public class SFTPConfig { @@ -95,7 +95,12 @@ public class SFTPConfig { .get(); } - @MessagingGateway(name = "notificationsSftpGateway") + // https://stackoverflow.com/questions/53655208/profile-doesnt-work-with-messaging-gateway + @Bean("notificationsSftpGateway") + public AnnotationGatewayProxyFactoryBean dbfGateway() { + return new AnnotationGatewayProxyFactoryBean(SftpGateway.class); + } + public interface SftpGateway { @Gateway(requestChannel = "toSftpChannel") void sendToSftp(File file); diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPMockConfig.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPMockConfig.java new file mode 100644 index 000000000..e32412272 --- /dev/null +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPMockConfig.java @@ -0,0 +1,32 @@ +package ru.spcex.clearing.swt.exporter.config; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.integration.sftp.session.SftpFileInfo; + +@Profile("test") +@Configuration +public class SFTPMockConfig { + @Bean("notificationsSftpGateway") + public SFTPConfig.SftpGateway dbfGateway(){ + return new SftpGateway(); + } + + public static class SftpGateway implements SFTPConfig.SftpGateway{ + + @Override + public void sendToSftp(File file) { + + } + + @Override + public List listFiles(String dir) { + return new ArrayList<>(); + } + } + +} diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/config/SFTPConfig.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/config/SFTPConfig.java index d96dfb250..b8d99b159 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/config/SFTPConfig.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/config/SFTPConfig.java @@ -1,5 +1,8 @@ package ru.spcex.clearing.swt.importer.config; +import java.io.File; +import java.util.Comparator; +import java.util.concurrent.TimeUnit; import com.jcraft.jsch.ChannelSftp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -7,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.integration.annotation.InboundChannelAdapter; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.core.MessageSource; @@ -21,10 +25,7 @@ import org.springframework.messaging.MessageHandler; import org.springframework.scheduling.support.PeriodicTrigger; import ru.spcex.clearing.swt.importer.config.settings.ImportSWTServiceSettings; -import java.io.File; -import java.util.Comparator; -import java.util.concurrent.TimeUnit; - +@Profile("!test") @Configuration @ConditionalOnProperty(value="import-swt-service.store.sftp-in.sftp-src-dir") public class SFTPConfig {