From 70036d214b7b56de69bcc6287baca3dbd5e6b6e3 Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Wed, 20 Nov 2024 17:51:27 +0300 Subject: [PATCH 1/8] xml-importer updated --- .../xml/importer/config/SFTPConfig.java | 18 +++--- .../xml/importer/config/SFTPMockConfig.java | 2 +- .../importer/config/XMLImporterConfig.java | 2 +- .../settings/ImportXMLServiceSettings.java | 20 +++---- .../logic/steps/ChangeDirOfFileStage.java | 6 +- .../xml/importer/services/FileChecker.java | 41 ++++++++------ .../importer/services/XMLImporterService.java | 4 +- .../src/main/resources/application.properties | 56 +++++++++---------- .../src/test/resources/application.properties | 56 +++++++++---------- 9 files changed, 107 insertions(+), 98 deletions(-) diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPConfig.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPConfig.java index eb05d8a31..1c30485ed 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPConfig.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPConfig.java @@ -31,13 +31,13 @@ public class SFTPConfig { private final Logger log = LoggerFactory.getLogger(getClass()); @Bean("sftpSessionFactorySdf") - @ConditionalOnProperty(value = "import-xml-service.process-sdf-files", havingValue = "true") + @ConditionalOnProperty(value = "import-xml-service.process-files", havingValue = "true") public SessionFactory sftpSessionFactorySdf(ImportXMLServiceSettings settings) { DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true); - factory.setHost(settings.getStoreSdf().getSftpIn().getServerIp()); - factory.setPort(settings.getStoreSdf().getSftpIn().getServerPort()); - factory.setUser(settings.getStoreSdf().getSftpIn().getUser()); - factory.setPassword(settings.getStoreSdf().getSftpIn().getPassword()); + factory.setHost(settings.getStore().getSftpIn().getServerIp()); + factory.setPort(settings.getStore().getSftpIn().getServerPort()); + factory.setUser(settings.getStore().getSftpIn().getUser()); + factory.setPassword(settings.getStore().getSftpIn().getPassword()); factory.setAllowUnknownKeys(true); return new CachingSessionFactory<>(factory); } @@ -66,7 +66,7 @@ public class SFTPConfig { } @Bean("xmlGatewaySdf") - @ConditionalOnProperty(value = "import-xml-service.process-sdf-files", havingValue = "true") + @ConditionalOnProperty(value = "import-xml-service.process-files", havingValue = "true") public AnnotationGatewayProxyFactoryBean xmlGatewaySdf() { return new AnnotationGatewayProxyFactoryBean(XmlGatewaySdf.class); } @@ -78,7 +78,7 @@ public class SFTPConfig { } @Bean("listSftpChannelSdf") - @ConditionalOnProperty(value = "import-xml-service.process-sdf-files", havingValue = "true") + @ConditionalOnProperty(value = "import-xml-service.process-files", havingValue = "true") public MessageChannel listSftpChannelSdf(@Qualifier("sftpSessionFactorySdf") SessionFactory sessionFactory, ImportXMLServiceSettings settings) { DirectChannel dc = new DirectChannel(); @@ -96,12 +96,12 @@ public class SFTPConfig { } @Bean - @ConditionalOnProperty(value = "import-xml-service.process-sdf-files", havingValue = "true") + @ConditionalOnProperty(value = "import-xml-service.process-files", havingValue = "true") @ServiceActivator(inputChannel = "listSftpChannelSdf") public MessageHandler handlerListSdf(@Qualifier("sftpSessionFactorySdf") SessionFactory sessionFactory, ImportXMLServiceSettings settings) { SftpOutboundGateway sftpOutboundGateway = new SftpOutboundGateway(sessionFactory, MGET.getCommand(), null); - sftpOutboundGateway.setLocalDirectory(new File(settings.getStoreSdf().getSrcDir())); + sftpOutboundGateway.setLocalDirectory(new File(settings.getStore().getSrcDir())); sftpOutboundGateway.setAutoCreateLocalDirectory(true); sftpOutboundGateway.setOption(AbstractRemoteFileOutboundGateway.Option.DELETE); return sftpOutboundGateway; diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPMockConfig.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPMockConfig.java index 4d3421c79..019d3b1e4 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPMockConfig.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPMockConfig.java @@ -12,7 +12,7 @@ import org.springframework.context.annotation.Profile; @Configuration public class SFTPMockConfig { @Bean("xmlGatewaySdf") - @ConditionalOnProperty(value = "import-xml-service.process-sdf-files", havingValue = "true") + @ConditionalOnProperty(value = "import-xml-service.process-files", havingValue = "true") public SFTPConfig.XmlGatewaySdf xmlGatewaySdf(){ return new XGatewaySdf(); } diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/XMLImporterConfig.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/XMLImporterConfig.java index bbde9098d..d1507b679 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/XMLImporterConfig.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/XMLImporterConfig.java @@ -60,7 +60,7 @@ public class XMLImporterConfig { } @Bean("mapOfTable") - @ConditionalOnProperty(value = "import-xml-service.process-sdf-files", havingValue = "true") + @ConditionalOnProperty(value = "import-xml-service.process-files", havingValue = "true") public Map> getMapOfTables() { Map> map = new HashMap<>(); map.put(ETable.DF_01, (ImdgHazelcast) hazelcastService.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class)); diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/settings/ImportXMLServiceSettings.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/settings/ImportXMLServiceSettings.java index 121f2eb40..25c4a5482 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/settings/ImportXMLServiceSettings.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/settings/ImportXMLServiceSettings.java @@ -20,7 +20,7 @@ public class ImportXMLServiceSettings { private KafkaConsumerSettings kafkaConsumer; @NestedConfigurationProperty - private StoreSettings storeSdf; + private StoreSettings store; @NestedConfigurationProperty private StoreSettings storeLks; @@ -29,7 +29,7 @@ public class ImportXMLServiceSettings { @NestedConfigurationProperty private Cron cron; - private boolean processSdfFiles; + private boolean processFiles; private boolean processLksFiles; public HazelcastClientParams getHazelcast() { @@ -56,12 +56,12 @@ public class ImportXMLServiceSettings { this.kafkaConsumer = kafkaConsumer; } - public StoreSettings getStoreSdf() { - return storeSdf; + public StoreSettings getStore() { + return store; } - public void setStoreSdf(StoreSettings storeSdf) { - this.storeSdf = storeSdf; + public void setStore(StoreSettings store) { + this.store = store; } public StoreSettings getStoreLks() { @@ -88,12 +88,12 @@ public class ImportXMLServiceSettings { this.cron = cron; } - public boolean isProcessSdfFiles() { - return processSdfFiles; + public boolean isProcessFiles() { + return processFiles; } - public void setProcessSdfFiles(boolean processSdfFiles) { - this.processSdfFiles = processSdfFiles; + public void setProcessFiles(boolean processFiles) { + this.processFiles = processFiles; } public boolean isProcessLksFiles() { diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ChangeDirOfFileStage.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ChangeDirOfFileStage.java index b54918397..327e80c3a 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ChangeDirOfFileStage.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ChangeDirOfFileStage.java @@ -30,16 +30,16 @@ public class ChangeDirOfFileStage { log.info("uuid {}. Stage: Change directory of file", resultContainer.getUuid()); File srcDir = new File(resultContainer.getXmlTable().getFileType().equals(FileType.SDF) ? - settings.getStoreSdf().getSrcDir() : + settings.getStore().getSrcDir() : settings.getStoreLks().getSrcDir()); File outDir; if (resultContainer.getLastStageStatus().equals(StageResult.ERROR)) { outDir = new File(resultContainer.getXmlTable().getFileType().equals(FileType.SDF) ? - settings.getStoreSdf().getOutDirError() : + settings.getStore().getOutDirError() : settings.getStoreLks().getOutDirError()); } else { outDir = new File(resultContainer.getXmlTable().getFileType().equals(FileType.SDF) ? - settings.getStoreSdf().getOutDir() : + settings.getStore().getOutDir() : settings.getStoreLks().getOutDir()); } File xmlFile = resultContainer.getXmlFilePath(); diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/FileChecker.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/FileChecker.java index 8f602b73c..eaec96429 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/FileChecker.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/FileChecker.java @@ -12,6 +12,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Optional; import java.util.stream.Stream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,12 +27,12 @@ import ru.spcex.platform.utils.log.ExceptionUtils; public class FileChecker { private final Logger log = LoggerFactory.getLogger(this.getClass()); private final ImportXMLServiceSettings settings; - private final SFTPConfig.XmlGatewaySdf gatewaySdf; - private final SFTPConfig.XmlGatewayLks gatewayLks; + private final Optional gatewaySdf; + private final Optional gatewayLks; public FileChecker(ImportXMLServiceSettings settings, - SFTPConfig.XmlGatewaySdf gatewaySdf, - SFTPConfig.XmlGatewayLks gatewayLks) { + Optional gatewaySdf, + Optional gatewayLks) { this.settings = settings; this.gatewaySdf = gatewaySdf; this.gatewayLks = gatewayLks; @@ -42,15 +43,15 @@ public class FileChecker { List srcDir = new ArrayList<>(); if (specificTable == null) { - if (settings.isProcessSdfFiles()) { - srcDir.add(settings.getStoreSdf().getSrcDir()); + if (settings.isProcessFiles()) { + srcDir.add(settings.getStore().getSrcDir()); } if (settings.isProcessLksFiles()) { srcDir.add(settings.getStoreLks().getSrcDir()); } } else { srcDir.add(specificTable.getFileType().equals(FileType.SDF) ? - settings.getStoreSdf().getSrcDir() : + settings.getStore().getSrcDir() : settings.getStoreLks().getSrcDir()); } @@ -90,7 +91,7 @@ public class FileChecker { } public void checkAndLoadSFTP() { - if (settings.isProcessSdfFiles() && (settings.getStoreSdf().getSftpIn().getSftpSrcPayValDir() == null || settings.getStoreSdf().getSftpIn().getSftpSrcPayValDir().isEmpty())) { + if (settings.isProcessFiles() && (settings.getStore().getSftpIn().getSftpSrcPayValDir() == null || settings.getStore().getSftpIn().getSftpSrcPayValDir().isEmpty())) { log.error("No SFTP scanning directories, need will be adding setting like 'import-xml-service.store-sdf.sftp-in.sftp-src-pay-val-dir.VAL=/VAL' and restart app"); return; } @@ -100,19 +101,27 @@ public class FileChecker { } List files = new ArrayList<>(); - if (settings.isProcessSdfFiles()) { - log.trace("Load from SFTP paths: {}", settings.getStoreSdf().getSftpIn().getSftpSrcPayValDir().values()); - for (String path : settings.getStoreSdf().getSftpIn().getSftpSrcPayValDir().values()) { - files.addAll(gatewaySdf.listFiles(path)); - } + if (settings.isProcessFiles()) { + log.trace("Load from SFTP paths: {}", settings.getStore().getSftpIn().getSftpSrcPayValDir().values()); + + gatewaySdf.ifPresent(gateway -> { + for (String path : settings.getStore().getSftpIn().getSftpSrcPayValDir().values()) { + files.addAll(gateway.listFiles(path)); + } + }); + if (!files.isEmpty()) log.info("Loaded from SFTP SDF files count={}", files.size()); } if (settings.isProcessLksFiles()) { log.trace("Load from SFTP paths: {}", settings.getStoreLks().getSftpIn().getSftpSrcPayValDir().values()); - for (String path : settings.getStoreLks().getSftpIn().getSftpSrcPayValDir().values()) { - files.addAll(gatewayLks.listFiles(path)); - } + + gatewayLks.ifPresent(gateway -> { + for (String path : settings.getStoreLks().getSftpIn().getSftpSrcPayValDir().values()) { + files.addAll(gateway.listFiles(path)); + } + }); + if (!files.isEmpty()) log.info("Loaded from SFTP LKS files count={}", files.size()); } diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/XMLImporterService.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/XMLImporterService.java index 2ee47a039..75b861db1 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/XMLImporterService.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/XMLImporterService.java @@ -59,9 +59,9 @@ public class XMLImporterService { this.filesCurrentlyInProcess = new HashSet<>(); } - @Scheduled(cron = "${import-xml-service.cron.check-src-dir-cron}") + @Scheduled(cron = "${import-xml-service.scheduler.check-src-dir-cron}") public void run() { - if (settings.isProcessSdfFiles() || settings.isProcessLksFiles()) { + if (settings.isProcessFiles() || settings.isProcessLksFiles()) { processTable(null); } else { log.warn("Turn on SDF or LKS file processing in application.properties!"); diff --git a/clearing-parent/xml-importer/src/main/resources/application.properties b/clearing-parent/xml-importer/src/main/resources/application.properties index c67a3ba19..f05c92ac1 100644 --- a/clearing-parent/xml-importer/src/main/resources/application.properties +++ b/clearing-parent/xml-importer/src/main/resources/application.properties @@ -2,44 +2,44 @@ server.port=8081 server.servlet.context-path=/xml-importer spring.main.web-application-type=servlet -import-xml-service.process-sdf-files=true -import-xml-service.process-lks-files=true +import-xml-service.process-files=true +import-xml-service.process-lks-files=false -import-xml-service.cron.check-src-dir-cron=* * * * 1 ? +import-xml-service.scheduler.check-src-dir-cron=* * * * 1 ? import-xml-service.common.encoding-source=cp866 import-xml-service.common.insert-batch-size=100 import-xml-service.common.threads-count=10 # Store directories for SDf -import-xml-service.store-sdf.delete-src-files=false -import-xml-service.store-sdf.src-dir=/opt/clearing/file/xml-importer/ -import-xml-service.store-sdf.out-dir=/opt/clearing/file/xml-importer/loaded/ -import-xml-service.store-sdf.out-dir-error=/opt/clearing/file/xml-importer/error/ +import-xml-service.store.delete-src-files=false +import-xml-service.store.src-dir=/opt/clearing/file/xml-importer/ +import-xml-service.store.out-dir=/opt/clearing/file/xml-importer/loaded/ +import-xml-service.store.out-dir-error=/opt/clearing/file/xml-importer/error/ # Sftp directories and credentials for SDf -import-xml-service.store-sdf.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/ -import-xml-service.store-sdf.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/ -import-xml-service.store-sdf.sftp-in.sftp-src-dir=clearing_xml-importer_sftp -import-xml-service.store-sdf.sftp-in.user=user -import-xml-service.store-sdf.sftp-in.password=********* -import-xml-service.store-sdf.sftp-in.server-ip=127.0.0.1 -import-xml-service.store-sdf.sftp-in.server-port=22 +import-xml-service.store.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/ +import-xml-service.store.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/ +import-xml-service.store.sftp-in.sftp-src-dir=clearing_xml-importer_sftp +import-xml-service.store.sftp-in.user=user +import-xml-service.store.sftp-in.password=********* +import-xml-service.store.sftp-in.server-ip=127.0.0.1 +import-xml-service.store.sftp-in.server-port=22 -# Store directories for LKS -import-xml-service.store-lks.delete-src-files=false -import-xml-service.store-lks.src-dir=/opt/clearing/file/xml-importer/ -import-xml-service.store-lks.out-dir=/opt/clearing/file/xml-importer/loaded/ -import-xml-service.store-lks.out-dir-error=/opt/clearing/file/xml-importer/error/ - -# Sftp directories and credentials for LKS -import-xml-service.store-lks.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/ -import-xml-service.store-lks.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/ -import-xml-service.store-lks.sftp-in.sftp-src-dir=clearing_xml-importer_sftp -import-xml-service.store-lks.sftp-in.user=user -import-xml-service.store-lks.sftp-in.password=********* -import-xml-service.store-lks.sftp-in.server-ip=127.0.0.1 -import-xml-service.store-lks.sftp-in.server-port=22 +## Store directories for LKS +#import-xml-service.store-lks.delete-src-files=false +#import-xml-service.store-lks.src-dir=/opt/clearing/file/xml-importer/ +#import-xml-service.store-lks.out-dir=/opt/clearing/file/xml-importer/loaded/ +#import-xml-service.store-lks.out-dir-error=/opt/clearing/file/xml-importer/error/ +# +## Sftp directories and credentials for LKS +#import-xml-service.store-lks.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/ +#import-xml-service.store-lks.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/ +#import-xml-service.store-lks.sftp-in.sftp-src-dir=clearing_xml-importer_sftp +#import-xml-service.store-lks.sftp-in.user=user +#import-xml-service.store-lks.sftp-in.password=********* +#import-xml-service.store-lks.sftp-in.server-ip=127.0.0.1 +#import-xml-service.store-lks.sftp-in.server-port=22 # Hazelcast cluster import-xml-service.hazelcast.cluster-members=10.200.200.181:5701 diff --git a/clearing-parent/xml-importer/src/test/resources/application.properties b/clearing-parent/xml-importer/src/test/resources/application.properties index c67a3ba19..f05c92ac1 100644 --- a/clearing-parent/xml-importer/src/test/resources/application.properties +++ b/clearing-parent/xml-importer/src/test/resources/application.properties @@ -2,44 +2,44 @@ server.port=8081 server.servlet.context-path=/xml-importer spring.main.web-application-type=servlet -import-xml-service.process-sdf-files=true -import-xml-service.process-lks-files=true +import-xml-service.process-files=true +import-xml-service.process-lks-files=false -import-xml-service.cron.check-src-dir-cron=* * * * 1 ? +import-xml-service.scheduler.check-src-dir-cron=* * * * 1 ? import-xml-service.common.encoding-source=cp866 import-xml-service.common.insert-batch-size=100 import-xml-service.common.threads-count=10 # Store directories for SDf -import-xml-service.store-sdf.delete-src-files=false -import-xml-service.store-sdf.src-dir=/opt/clearing/file/xml-importer/ -import-xml-service.store-sdf.out-dir=/opt/clearing/file/xml-importer/loaded/ -import-xml-service.store-sdf.out-dir-error=/opt/clearing/file/xml-importer/error/ +import-xml-service.store.delete-src-files=false +import-xml-service.store.src-dir=/opt/clearing/file/xml-importer/ +import-xml-service.store.out-dir=/opt/clearing/file/xml-importer/loaded/ +import-xml-service.store.out-dir-error=/opt/clearing/file/xml-importer/error/ # Sftp directories and credentials for SDf -import-xml-service.store-sdf.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/ -import-xml-service.store-sdf.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/ -import-xml-service.store-sdf.sftp-in.sftp-src-dir=clearing_xml-importer_sftp -import-xml-service.store-sdf.sftp-in.user=user -import-xml-service.store-sdf.sftp-in.password=********* -import-xml-service.store-sdf.sftp-in.server-ip=127.0.0.1 -import-xml-service.store-sdf.sftp-in.server-port=22 +import-xml-service.store.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/ +import-xml-service.store.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/ +import-xml-service.store.sftp-in.sftp-src-dir=clearing_xml-importer_sftp +import-xml-service.store.sftp-in.user=user +import-xml-service.store.sftp-in.password=********* +import-xml-service.store.sftp-in.server-ip=127.0.0.1 +import-xml-service.store.sftp-in.server-port=22 -# Store directories for LKS -import-xml-service.store-lks.delete-src-files=false -import-xml-service.store-lks.src-dir=/opt/clearing/file/xml-importer/ -import-xml-service.store-lks.out-dir=/opt/clearing/file/xml-importer/loaded/ -import-xml-service.store-lks.out-dir-error=/opt/clearing/file/xml-importer/error/ - -# Sftp directories and credentials for LKS -import-xml-service.store-lks.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/ -import-xml-service.store-lks.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/ -import-xml-service.store-lks.sftp-in.sftp-src-dir=clearing_xml-importer_sftp -import-xml-service.store-lks.sftp-in.user=user -import-xml-service.store-lks.sftp-in.password=********* -import-xml-service.store-lks.sftp-in.server-ip=127.0.0.1 -import-xml-service.store-lks.sftp-in.server-port=22 +## Store directories for LKS +#import-xml-service.store-lks.delete-src-files=false +#import-xml-service.store-lks.src-dir=/opt/clearing/file/xml-importer/ +#import-xml-service.store-lks.out-dir=/opt/clearing/file/xml-importer/loaded/ +#import-xml-service.store-lks.out-dir-error=/opt/clearing/file/xml-importer/error/ +# +## Sftp directories and credentials for LKS +#import-xml-service.store-lks.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/ +#import-xml-service.store-lks.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/ +#import-xml-service.store-lks.sftp-in.sftp-src-dir=clearing_xml-importer_sftp +#import-xml-service.store-lks.sftp-in.user=user +#import-xml-service.store-lks.sftp-in.password=********* +#import-xml-service.store-lks.sftp-in.server-ip=127.0.0.1 +#import-xml-service.store-lks.sftp-in.server-port=22 # Hazelcast cluster import-xml-service.hazelcast.cluster-members=10.200.200.181:5701 From 939c545365711eb695b5ae6efa6b30986847359d Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Wed, 20 Nov 2024 18:34:22 +0300 Subject: [PATCH 2/8] tag attribute renamed in xml-importer/exporter --- .../clearing/xml/exporter/logic/data/tags/DocumentTag.java | 2 +- .../clearing/xml/importer/logic/data/tags/sdf/DocumentTag.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/DocumentTag.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/DocumentTag.java index 2adc35988..2109a1ef6 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/DocumentTag.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/DocumentTag.java @@ -33,7 +33,7 @@ public class DocumentTag { @JacksonXmlProperty(isAttribute = true, localName = "SENDER") private String sender; - @JacksonXmlProperty(isAttribute = true, localName = "RECEIVER") + @JacksonXmlProperty(isAttribute = true, localName = "RECIEVER") private String receiver; @JacksonXmlProperty(localName = "PARENTDOC") diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/sdf/DocumentTag.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/sdf/DocumentTag.java index 214f71321..6da8a4e9a 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/sdf/DocumentTag.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/sdf/DocumentTag.java @@ -33,7 +33,7 @@ public class DocumentTag implements ru.spcex.clearing.xml.importer.logic.data.ta @JacksonXmlProperty(isAttribute = true, localName = "SENDER") private String sender; - @JacksonXmlProperty(isAttribute = true, localName = "RECEIVER") + @JacksonXmlProperty(isAttribute = true, localName = "RECIEVER") private String receiver; @JacksonXmlProperty(localName = "PARENTDOC") From e3099abb424cfe9e1f846be360af7abbe7776086 Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Thu, 21 Nov 2024 12:58:50 +0300 Subject: [PATCH 3/8] http://jira.mfd.msk:8088/browse/CLS-790 sftp folder path trailing slash bug fixed --- .../clearing/xml/importer/config/SFTPConfig.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPConfig.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPConfig.java index 1c30485ed..1d7188a7c 100644 --- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPConfig.java +++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/SFTPConfig.java @@ -100,8 +100,13 @@ public class SFTPConfig { @ServiceActivator(inputChannel = "listSftpChannelSdf") public MessageHandler handlerListSdf(@Qualifier("sftpSessionFactorySdf") SessionFactory sessionFactory, ImportXMLServiceSettings settings) { + String localDirLocation = settings.getStore().getSrcDir(); + if (!List.of("/", "\\").contains(localDirLocation.substring(localDirLocation.length() - 1))) { + localDirLocation += File.separator; + } + SftpOutboundGateway sftpOutboundGateway = new SftpOutboundGateway(sessionFactory, MGET.getCommand(), null); - sftpOutboundGateway.setLocalDirectory(new File(settings.getStore().getSrcDir())); + sftpOutboundGateway.setLocalDirectory(new File(localDirLocation)); sftpOutboundGateway.setAutoCreateLocalDirectory(true); sftpOutboundGateway.setOption(AbstractRemoteFileOutboundGateway.Option.DELETE); return sftpOutboundGateway; @@ -112,8 +117,13 @@ public class SFTPConfig { @ServiceActivator(inputChannel = "listSftpChannelLks") public MessageHandler handlerListLks(@Qualifier("sftpSessionFactoryLks") SessionFactory sessionFactory, ImportXMLServiceSettings settings) { + String localDirLocation = settings.getStore().getSrcDir(); + if (!List.of("/", "\\").contains(localDirLocation.substring(localDirLocation.length() - 1))) { + localDirLocation += File.separator; + } + SftpOutboundGateway sftpOutboundGateway = new SftpOutboundGateway(sessionFactory, MGET.getCommand(), null); - sftpOutboundGateway.setLocalDirectory(new File(settings.getStoreLks().getSrcDir())); + sftpOutboundGateway.setLocalDirectory(new File(localDirLocation)); sftpOutboundGateway.setAutoCreateLocalDirectory(true); sftpOutboundGateway.setOption(AbstractRemoteFileOutboundGateway.Option.DELETE); return sftpOutboundGateway; From 9db8a6f4a86c22e89ff56a45ced64f22b4b7573f Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Thu, 21 Nov 2024 13:00:05 +0300 Subject: [PATCH 4/8] http://jira.mfd.msk:8088/browse/CLS-791 setting section to filename added --- .../settings/ExportXMLServiceSettings.java | 17 +++++++++++++++++ .../exporter/logic/data/ResultContainer.java | 12 +++++++++++- .../logic/data/enums/FilenameTemplate.java | 5 ++--- .../exporter/logic/stages/PrepareXMLFile.java | 9 ++++----- .../xml/exporter/services/CommandService.java | 12 ++++++++---- .../src/main/resources/application.properties | 2 ++ .../logic/stages/ExportFromHazelcastTest.java | 16 ++++++++-------- .../exporter/logic/stages/WriteXMLFileTest.java | 16 ++++++++-------- .../xml-original/DF-02_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-03_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-05_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-07_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-51_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-53_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-54_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-56_S_PRC1604240915_1.xml | 2 +- 16 files changed, 68 insertions(+), 37 deletions(-) diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/settings/ExportXMLServiceSettings.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/settings/ExportXMLServiceSettings.java index 52ac3bca9..eaf22daeb 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/settings/ExportXMLServiceSettings.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/settings/ExportXMLServiceSettings.java @@ -1,6 +1,7 @@ package ru.spcex.clearing.xml.exporter.config.settings; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings; @@ -11,13 +12,21 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; @PropertySource("file:${spring.config.location}/application.properties") @ConfigurationProperties("export-xml-service") public class ExportXMLServiceSettings { + @NestedConfigurationProperty private HazelcastClientParams hazelcast; + @NestedConfigurationProperty private KafkaConsumerSettings kafkaConsumer; + @NestedConfigurationProperty private KafkaProducerSettings kafkaProducer; + @NestedConfigurationProperty private Common common; + @NestedConfigurationProperty private Store store; + @NestedConfigurationProperty private Cron cron; + private String section; + public HazelcastClientParams getHazelcast() { return hazelcast; } @@ -65,4 +74,12 @@ public class ExportXMLServiceSettings { public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { this.kafkaProducer = kafkaProducer; } + + public String getSection() { + return section; + } + + public void setSection(String section) { + this.section = section; + } } diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/ResultContainer.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/ResultContainer.java index b2b3a92b6..a8a84c88a 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/ResultContainer.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/ResultContainer.java @@ -17,10 +17,12 @@ public class ResultContainer { private LocalDateTime registrationDateTime; private String memberCode; private DocumentTag documentTag; + private String section; - public ResultContainer(Table tableForExport) { + public ResultContainer(Table tableForExport, String section) { this.tableForExport = tableForExport; this.uuid = UUID.randomUUID(); + this.section = section; } public Table getTableForExport() { @@ -94,4 +96,12 @@ public class ResultContainer { public void setDocumentTag(DocumentTag documentTag) { this.documentTag = documentTag; } + + public String getSection() { + return section; + } + + public void setSection(String section) { + this.section = section; + } } diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/enums/FilenameTemplate.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/enums/FilenameTemplate.java index 58f406480..7d415ea43 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/enums/FilenameTemplate.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/enums/FilenameTemplate.java @@ -1,6 +1,5 @@ package ru.spcex.clearing.xml.exporter.logic.data.enums; -import static ru.spcex.clearing.xml.exporter.logic.stages.PrepareXMLFile.SECTION; import static ru.spcex.clearing.xml.exporter.logic.stages.PrepareXMLFile.outDir; import java.io.File; @@ -46,7 +45,7 @@ public enum FilenameTemplate { name.substring(i); } }, - df_section_dateTime_counter_mamberCode { + df_section_dateTime_counter_memberCode { @Override public String getFileName(ResultContainer resultContainer, List files) { return appendSection(resultContainer) @@ -63,7 +62,7 @@ public enum FilenameTemplate { result.append(File.separator); result.append(resultContainer.getTableForExport().getFilePrefix().toUpperCase(Locale.ROOT)); result.append('_'); - result.append(SECTION); + result.append(resultContainer.getSection()); return result; } diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/PrepareXMLFile.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/PrepareXMLFile.java index 09601c0c8..a1205180d 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/PrepareXMLFile.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/PrepareXMLFile.java @@ -25,7 +25,6 @@ import ru.spcex.clearing.xml.exporter.logic.data.enums.Table; @Component public class PrepareXMLFile implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); - public static final String SECTION = "S"; private final ExportXMLServiceSettings settings; public static String outDir; private final SFTPConfig.XmlGateway gateway; @@ -83,12 +82,12 @@ public class PrepareXMLFile implements InitializingBean { private static final Map nameTemplates = new EnumMap<>(Table.class); static { - nameTemplates.put(Table.S_DF02, FilenameTemplate.df_section_sameName); + nameTemplates.put(Table.S_DF02, FilenameTemplate.df_section_dateTime_counter); // df_section_sameName nameTemplates.put(Table.S_DF03, FilenameTemplate.df_section_dateTime_counter); - nameTemplates.put(Table.S_DF05, FilenameTemplate.df_section_dateTime); - nameTemplates.put(Table.S_DF07, FilenameTemplate.df_section_sameName); + nameTemplates.put(Table.S_DF05, FilenameTemplate.df_section_dateTime_counter); // df_section_dateTime + nameTemplates.put(Table.S_DF07, FilenameTemplate.df_section_dateTime_counter); // df_section_sameName nameTemplates.put(Table.S_DF51, FilenameTemplate.df_section_dateTime_counter); - nameTemplates.put(Table.S_DF53, FilenameTemplate.df_section_sameName); + nameTemplates.put(Table.S_DF53, FilenameTemplate.df_section_dateTime_counter); // df_section_sameName nameTemplates.put(Table.S_DF54, FilenameTemplate.df_section_dateTime_counter); nameTemplates.put(Table.S_DF56, FilenameTemplate.df_section_dateTime_counter); } diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/services/CommandService.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/services/CommandService.java index 5c3f8ef62..76e29bb98 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/services/CommandService.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/services/CommandService.java @@ -6,6 +6,7 @@ import org.apache.kafka.clients.consumer.Consumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.StopWatch; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; @@ -31,17 +32,20 @@ public class CommandService extends QueueConsumer implements InitializingBean { private final ExportFromHazelcast exportFromHazelcast; private final WriteXMLFile writeXMLFile; private final Journal journal; + private final String section; public CommandService(Consumer kafkaQueue, PrepareXMLFile prepareXMLFile, ExportFromHazelcast exportFromHazelcast, WriteXMLFile writeXMLFile, - Journal journal) { + Journal journal, + @Value("${export-xml-service.section:S}") String section) { super(kafkaQueue); this.prepareXMLFile = prepareXMLFile; this.exportFromHazelcast = exportFromHazelcast; this.writeXMLFile = writeXMLFile; this.journal = journal; + this.section = section; } @Override @@ -88,7 +92,7 @@ public class CommandService extends QueueConsumer implements InitializingBean { if (tableForExport.isEmpty()) { throw new IllegalStateException(String.format("Unsupported table prefix: %s", request.getNameOfTable())); } - ResultContainer resultContainer = new ResultContainer(tableForExport.get()); + ResultContainer resultContainer = new ResultContainer(tableForExport.get(), section); resultContainer.setGroupId(request.getSdfGroupId()); resultContainer.setSourceName(request.getFileName()); runProcess(resultContainer); @@ -96,7 +100,7 @@ public class CommandService extends QueueConsumer implements InitializingBean { private void processSpecial(Table table, BaseRequest systemRequest) { SdfClearingRequest request = systemRequest.getRequestPayload(); - ResultContainer resultContainer = new ResultContainer(table); + ResultContainer resultContainer = new ResultContainer(table, section); resultContainer.setGroupId(request.getGroupId()); resultContainer.setSourceName(null); runProcess(resultContainer); @@ -105,7 +109,7 @@ public class CommandService extends QueueConsumer implements InitializingBean { private void processByLauncher(Table table, BaseRequest systemRequest) { LauncherCommandRequest request = systemRequest.getRequestPayload(); log.info("RequestId={}, LauncherCommandRequest task={}. Table {}", systemRequest.getId(), request.getTaskName(), table); - ResultContainer resultContainer = new ResultContainer(table); + ResultContainer resultContainer = new ResultContainer(table, section); resultContainer.setGroupId(null); resultContainer.setSourceName(null); runProcess(resultContainer); diff --git a/clearing-parent/xml-exporter/src/main/resources/application.properties b/clearing-parent/xml-exporter/src/main/resources/application.properties index 8501f4510..a8def90af 100644 --- a/clearing-parent/xml-exporter/src/main/resources/application.properties +++ b/clearing-parent/xml-exporter/src/main/resources/application.properties @@ -30,3 +30,5 @@ export-xml-service.kafka-producer.retries=0 export-xml-service.kafka-producer.batch-size=16384 export-xml-service.kafka-producer.linger-ms=1 export-xml-service.kafka-producer.buffer-memory=33554432 + +export-xml-service.section=S diff --git a/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcastTest.java b/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcastTest.java index be0282fb5..c1ed724cc 100644 --- a/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcastTest.java +++ b/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcastTest.java @@ -110,7 +110,7 @@ class ExportFromHazelcastTest { Imdg imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class); imdg.insert(expectedSDf02); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml")); StageResult stageResult = exportFromHazelcast.process(actualResultContainer); @@ -152,7 +152,7 @@ class ExportFromHazelcastTest { Imdg imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf03, SDf03.class); imdg.insert(expectedSDf03); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-03_S_PRC1604240915_1.xml")); StageResult stageResult = exportFromHazelcast.process(actualResultContainer); @@ -186,7 +186,7 @@ class ExportFromHazelcastTest { Imdg imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf05, SDf05.class); imdg.insert(expectedSDf05); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-05_S_PRC1604240915_1.xml")); StageResult stageResult = exportFromHazelcast.process(actualResultContainer); @@ -220,7 +220,7 @@ class ExportFromHazelcastTest { Imdg imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf07, SDf07.class); imdg.insert(expectedSDf07); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-07_S_PRC1604240915_1.xml")); StageResult stageResult = exportFromHazelcast.process(actualResultContainer); @@ -252,7 +252,7 @@ class ExportFromHazelcastTest { Imdg imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf51, SDf51.class); imdg.insert(expectedSDf51); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-51_S_PRC1604240915_1.xml")); StageResult stageResult = exportFromHazelcast.process(actualResultContainer); @@ -279,7 +279,7 @@ class ExportFromHazelcastTest { Imdg imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf53, SDf53.class); imdg.insert(expectedSDf53); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-53_S_PRC1604240915_1.xml")); StageResult stageResult = exportFromHazelcast.process(actualResultContainer); @@ -334,7 +334,7 @@ class ExportFromHazelcastTest { Imdg imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf54, SDf54.class); imdg.insert(expectedSDf54); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-54_S_PRC1604240915_1.xml")); StageResult stageResult = exportFromHazelcast.process(actualResultContainer); @@ -387,7 +387,7 @@ class ExportFromHazelcastTest { Imdg imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf56, SDf56.class); imdg.insert(expectedSDf56); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-56_S_PRC1604240915_1.xml")); StageResult stageResult = exportFromHazelcast.process(actualResultContainer); diff --git a/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFileTest.java b/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFileTest.java index 457dfa6e3..71cdcf3d1 100644 --- a/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFileTest.java +++ b/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFileTest.java @@ -99,7 +99,7 @@ class WriteXMLFileTest { expectedDocumentTag.setParentDoc(expectedParentDocTag); expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml")); actualResultContainer.setDocumentTag(expectedDocumentTag); @@ -146,7 +146,7 @@ class WriteXMLFileTest { expectedDocumentTag.setParentDoc(expectedParentDocTag); expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-03_S_PRC1604240915_1.xml")); actualResultContainer.setDocumentTag(expectedDocumentTag); @@ -184,7 +184,7 @@ class WriteXMLFileTest { expectedDocumentTag.setParentDoc(expectedParentDocTag); expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-05_S_PRC1604240915_1.xml")); actualResultContainer.setDocumentTag(expectedDocumentTag); @@ -231,7 +231,7 @@ class WriteXMLFileTest { expectedDocumentTag.setParentDoc(expectedParentDocTag); expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-07_S_PRC1604240915_1.xml")); actualResultContainer.setDocumentTag(expectedDocumentTag); @@ -268,7 +268,7 @@ class WriteXMLFileTest { expectedDocumentTag.setParentDoc(expectedParentDocTag); expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-51_S_PRC1604240915_1.xml")); actualResultContainer.setDocumentTag(expectedDocumentTag); @@ -309,7 +309,7 @@ class WriteXMLFileTest { expectedDocumentTag.setParentDoc(expectedParentDocTag); expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-53_S_PRC1604240915_1.xml")); actualResultContainer.setDocumentTag(expectedDocumentTag); @@ -374,7 +374,7 @@ class WriteXMLFileTest { expectedDocumentTag.setParentDoc(expectedParentDocTag); expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-54_S_PRC1604240915_1.xml")); actualResultContainer.setDocumentTag(expectedDocumentTag); @@ -415,7 +415,7 @@ class WriteXMLFileTest { expectedDocumentTag.setParentDoc(expectedParentDocTag); expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56); + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56, "S"); actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-56_S_PRC1604240915_1.xml")); actualResultContainer.setDocumentTag(expectedDocumentTag); diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml index 090d5af81..f6173c6b4 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml index 565b4b9ec..222643ca5 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml index 84bc8c61c..88dc88539 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml index fc452f087..e1434de47 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml index 98aad253f..9d4012b21 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml index 42dfacf8d..62f94a3ec 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml index bda341726..04ad3f081 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml index 091c8c513..49c829c14 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + From a2bf45e2921e54162f79ae76aae4cfa7b9341faa Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Thu, 21 Nov 2024 16:50:40 +0300 Subject: [PATCH 5/8] http://jira.mfd.msk:8088/browse/CLS-791 sender and receiver added to application.properties --- .../settings/ExportXMLServiceSettings.java | 18 +++++++ .../xml/exporter/logic/data/enums/Sender.java | 16 +++++++ .../logic/stages/ExportFromHazelcast.java | 47 +++++++++---------- .../src/main/resources/application.properties | 4 +- .../src/test/resources/application.properties | 6 ++- 5 files changed, 64 insertions(+), 27 deletions(-) create mode 100644 clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/enums/Sender.java diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/settings/ExportXMLServiceSettings.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/settings/ExportXMLServiceSettings.java index eaf22daeb..c7dd58726 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/settings/ExportXMLServiceSettings.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/settings/ExportXMLServiceSettings.java @@ -26,6 +26,8 @@ public class ExportXMLServiceSettings { private Cron cron; private String section; + private String sender; + private String receiver; public HazelcastClientParams getHazelcast() { return hazelcast; @@ -82,4 +84,20 @@ public class ExportXMLServiceSettings { public void setSection(String section) { this.section = section; } + + public String getSender() { + return sender; + } + + public void setSender(String sender) { + this.sender = sender; + } + + public String getReceiver() { + return receiver; + } + + public void setReceiver(String receiver) { + this.receiver = receiver; + } } diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/enums/Sender.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/enums/Sender.java new file mode 100644 index 000000000..319ae9bf7 --- /dev/null +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/enums/Sender.java @@ -0,0 +1,16 @@ +package ru.spcex.clearing.xml.exporter.logic.data.enums; + +public enum Sender { + LCC("ЛЦК"), + SPVB("СПВБ"); + + Sender(String text) { + this.text = text; + } + + private String text; + + public String getText() { + return text; + } +} diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java index db11b0543..d0253c084 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java @@ -23,6 +23,7 @@ import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.xml.exporter.config.SFTPConfig; import ru.spcex.clearing.xml.exporter.config.settings.ExportXMLServiceSettings; import ru.spcex.clearing.xml.exporter.logic.data.ResultContainer; +import ru.spcex.clearing.xml.exporter.logic.data.enums.Sender; import ru.spcex.clearing.xml.exporter.logic.data.enums.StageResult; import ru.spcex.clearing.xml.exporter.logic.data.enums.Table; import ru.spcex.clearing.xml.exporter.logic.data.tags.DocumentTag; @@ -59,17 +60,25 @@ public class ExportFromHazelcast { Table table = Objects.requireNonNull(resultContainer.getTableForExport()); File xmlFile = Objects.requireNonNull(resultContainer.getFileForExport()); + String path; + String currency = ruCurrency; //todo: rewrite currency logic + if (CurrencyCode.isRub(currency)) { + path = settings.getStore().getOutPayValDir().get(ruCurrency); + } else { + path = settings.getStore().getOutPayValDir().get(currency); + } + DocumentTag documentTag = new DocumentTag(); ParentDocTag parentDocTag = new ParentDocTag(); parentDocTag.setParentId(""); // todo: Добавить данные DocumentTag'а - documentTag.setMessageId(""); + documentTag.setMessageId(String.valueOf(resultContainer.getGroupId())); documentTag.setMessageType(table.getFilePrefix().replace("-", "")); documentTag.setMessageName(""); documentTag.setMessageDate(LocalDate.now()); documentTag.setMessageTime(LocalTime.now()); - documentTag.setSender(""); - documentTag.setReceiver(""); + documentTag.setSender(settings.getSender() != null ? Sender.valueOf(settings.getSender().toUpperCase()).getText() : ""); + documentTag.setReceiver(settings.getReceiver() != null ? settings.getReceiver() : ""); documentTag.setParentDoc(parentDocTag); Imdg map = imdgProvider.getImdg(table.getHazelcastMapName(), table.getEntityClass()); @@ -83,7 +92,12 @@ public class ExportFromHazelcast { } if (tableRows.isEmpty()) { log.info("uuid {}. Map {} is empty, generationId {}", resultContainer.getUuid(), resultContainer.getTableForExport().getHazelcastMapName(), resultContainer.getGroupId()); - return StageResult.COMPLETE; + log.debug("uuid {}, send to SFTP path \"{}\"", resultContainer.getUuid(), path); + + documentTag.setObjects(List.of()); + resultContainer.setDocumentTag(documentTag); + gateway.sendToSftp(xmlFile, path); + return StageResult.OK; } else { log.debug("uuid {}. Selected {} records from map {}, generationId {}", resultContainer.getUuid(), tableRows.size(), resultContainer.getTableForExport().getHazelcastMapName(), resultContainer.getGroupId()); @@ -97,27 +111,10 @@ public class ExportFromHazelcast { documentTag.setObjects(addObjectTags(tableRows, table)); resultContainer.setDocumentTag(documentTag); - boolean emptyMap = tableRows.isEmpty(); - String path; - String currency = ruCurrency; //todo: rewrite currency logic - if (CurrencyCode.isRub(currency)) { - path = settings.getStore().getOutPayValDir().get(ruCurrency); - } else { - path = settings.getStore().getOutPayValDir().get(currency); - } - - if (emptyMap) { - log.debug("Delete empty XML temp file \"{}\"", resultContainer.getFileForExport()); - boolean deleteOk = resultContainer.getFileForExport().delete(); - if (!deleteOk) { - log.warn("Can't delete file {}", resultContainer.getFileForExport().getName()); - } - } else { - log.debug("uuid {}, send to SFTP path \"{}\"", resultContainer.getUuid(), path); - gateway.sendToSftp(xmlFile, path); - if (Table.S_DF02.equals(resultContainer.getTableForExport())) { - sendPairSdfRequest(resultContainer); - } + log.debug("uuid {}, send to SFTP path \"{}\"", resultContainer.getUuid(), path); + gateway.sendToSftp(xmlFile, path); + if (Table.S_DF02.equals(resultContainer.getTableForExport())) { + sendPairSdfRequest(resultContainer); } return StageResult.OK; diff --git a/clearing-parent/xml-exporter/src/main/resources/application.properties b/clearing-parent/xml-exporter/src/main/resources/application.properties index a8def90af..87f754e52 100644 --- a/clearing-parent/xml-exporter/src/main/resources/application.properties +++ b/clearing-parent/xml-exporter/src/main/resources/application.properties @@ -8,7 +8,7 @@ export-xml-service.common.encoding=cp866 export-xml-service.common.threads-count=10 export-xml-service.store.local-temp-dir=D:\\docs and T3\\clearing\\xml\\ -# код валюты должен быть в верхнем регистре, например для рублей - "RUB" (*.RUB=export/rub/).RUB=export/rub/ +# \u043A\u043E\u0434 \u0432\u0430\u043B\u044E\u0442\u044B \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u0432 \u0432\u0435\u0440\u0445\u043D\u0435\u043C \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0434\u043B\u044F \u0440\u0443\u0431\u043B\u0435\u0439 - "RUB" (*.RUB=export/rub/).RUB=export/rub/ export-xml-service.store.out-pay-val-dir.RUB=export/rub/ export-xml-service.store.out-pay-val-dir.EUR=export/eur/ export-xml-service.store.user:tester @@ -32,3 +32,5 @@ export-xml-service.kafka-producer.linger-ms=1 export-xml-service.kafka-producer.buffer-memory=33554432 export-xml-service.section=S +export-xml-service.sender=LCC +export-xml-service.receiver=\u0422\u0435\u0441\u0442 diff --git a/clearing-parent/xml-exporter/src/test/resources/application.properties b/clearing-parent/xml-exporter/src/test/resources/application.properties index ed48caa14..0202082f0 100644 --- a/clearing-parent/xml-exporter/src/test/resources/application.properties +++ b/clearing-parent/xml-exporter/src/test/resources/application.properties @@ -8,7 +8,7 @@ export-xml-service.common.encoding=cp866 export-xml-service.common.threads-count=10 export-xml-service.store.local-temp-dir=D:\\docs and T3\\clearing\\xml\\ -# код валюты должен быть в верхнем регистре, например для рублей - "RUB" (*.RUB=export/rub/).RUB=export/rub/ +# \u043A\u043E\u0434 \u0432\u0430\u043B\u044E\u0442\u044B \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u0432 \u0432\u0435\u0440\u0445\u043D\u0435\u043C \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0434\u043B\u044F \u0440\u0443\u0431\u043B\u0435\u0439 - "RUB" (*.RUB=export/rub/).RUB=export/rub/ export-xml-service.store.out-pay-val-dir.RUB=export/rub/ export-xml-service.store.out-pay-val-dir.EUR=export/eur/ export-xml-service.store.user:tester @@ -30,3 +30,7 @@ export-xml-service.kafka-producer.retries=0 export-xml-service.kafka-producer.batch-size=16384 export-xml-service.kafka-producer.linger-ms=1 export-xml-service.kafka-producer.buffer-memory=33554432 + +export-xml-service.section=S +export-xml-service.sender=LCC +export-xml-service.receiver=\u0439\u0439\u0439 \u0446\u0446\u0446 \ No newline at end of file From dbe967de51ab35bc76d66d44374e9c969f124e96 Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Thu, 21 Nov 2024 17:14:30 +0300 Subject: [PATCH 6/8] http://jira.mfd.msk:8088/browse/CLS-791 DF56 empty values fixed --- .../xml/exporter/logic/data/tags/objects/DF56ObjectTag.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/objects/DF56ObjectTag.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/objects/DF56ObjectTag.java index 705da1f38..3d930d78f 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/objects/DF56ObjectTag.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/data/tags/objects/DF56ObjectTag.java @@ -5,7 +5,6 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.Objects; import org.springframework.format.annotation.DateTimeFormat; import ru.clearing.classes.statics.data.sdf.SDf56; @@ -48,8 +47,8 @@ public class DF56ObjectTag extends ObjectTag { this.startDatetime = Instant.ofEpochMilli(this.startUnixtime).atZone(ZoneId.systemDefault()).toLocalDateTime(); this.endUnixtime = Long.valueOf(entity.getEnd_datetime()); this.endDatetime = Instant.ofEpochMilli(this.endUnixtime).atZone(ZoneId.systemDefault()).toLocalDateTime(); - this.account = entity.getAccount(); - this.deal = entity.getDeal(); + this.account = entity.getAccount() == null ? "" : entity.getAccount(); + this.deal = entity.getDeal() == null ? "" : entity.getDeal(); } @Override From aebfc35eb415b9ff99a3a7028c76c9de5baf1b2f Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Thu, 21 Nov 2024 17:42:17 +0300 Subject: [PATCH 7/8] http://jira.mfd.msk:8088/browse/CLS-792 SFTP export fixed, tests updated --- .../logic/stages/ExportFromHazelcast.java | 21 +- .../exporter/logic/stages/WriteXMLFile.java | 42 -- .../xml/exporter/services/CommandService.java | 8 - .../logic/stages/ExportFromHazelcastTest.java | 107 +++++ .../logic/stages/WriteXMLFileTest.java | 433 ------------------ .../src/test/resources/application.properties | 6 +- .../xml-original/DF-02_S_PRC1604240915_1.xml | 4 +- .../xml-original/DF-03_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-05_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-07_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-51_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-53_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-54_S_PRC1604240915_1.xml | 2 +- .../xml-original/DF-56_S_PRC1604240915_1.xml | 2 +- 14 files changed, 137 insertions(+), 498 deletions(-) delete mode 100644 clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFile.java delete mode 100644 clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFileTest.java diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java index d0253c084..97ae19f4a 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcast.java @@ -3,7 +3,9 @@ package ru.spcex.clearing.xml.exporter.logic.stages; import static ru.spcex.clearing.platform.messaging.domain.Consts.PAIR_SDF; import static ru.spcex.clearing.xml.exporter.logic.data.tags.objects.ObjectTag.ruCurrency; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; import java.io.File; +import java.io.IOException; import java.time.LocalDate; import java.time.LocalTime; import java.util.ArrayList; @@ -42,17 +44,20 @@ public class ExportFromHazelcast { private final Map> objectTagMap; private final Supplier kafkaSender; private final ExportXMLServiceSettings settings; + private final XmlMapper xmlMapper; public ExportFromHazelcast(ImdgProvider imdgProvider, SFTPConfig.XmlGateway gateway, @Qualifier("mapOfTable") Map> objectTagMap, Supplier kafkaSender, - ExportXMLServiceSettings settings) { + ExportXMLServiceSettings settings, + XmlMapper xmlMapper) { this.imdgProvider = imdgProvider; this.gateway = gateway; this.objectTagMap = objectTagMap; this.kafkaSender = kafkaSender; this.settings = settings; + this.xmlMapper = xmlMapper; } public StageResult process(ResultContainer resultContainer) { @@ -96,6 +101,13 @@ public class ExportFromHazelcast { documentTag.setObjects(List.of()); resultContainer.setDocumentTag(documentTag); + try { + xmlMapper.writeValue(xmlFile, documentTag); + } catch (IOException e) { + log.error(String.format("uuid %s. Can't export table %s (map %s) to file %s. Table was skipped.", + resultContainer.getUuid(), table, table.getHazelcastMapName(), xmlFile), e); + return StageResult.ERROR; + } gateway.sendToSftp(xmlFile, path); return StageResult.OK; } else { @@ -110,6 +122,13 @@ public class ExportFromHazelcast { documentTag.setObjects(addObjectTags(tableRows, table)); resultContainer.setDocumentTag(documentTag); + try { + xmlMapper.writeValue(xmlFile, documentTag); + } catch (IOException e) { + log.error(String.format("uuid %s. Can't export table %s (map %s) to file %s. Table was skipped.", + resultContainer.getUuid(), table, table.getHazelcastMapName(), xmlFile), e); + return StageResult.ERROR; + } log.debug("uuid {}, send to SFTP path \"{}\"", resultContainer.getUuid(), path); gateway.sendToSftp(xmlFile, path); diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFile.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFile.java deleted file mode 100644 index 78aaa12f6..000000000 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFile.java +++ /dev/null @@ -1,42 +0,0 @@ -package ru.spcex.clearing.xml.exporter.logic.stages; - -import com.fasterxml.jackson.dataformat.xml.XmlMapper; -import java.io.File; -import java.util.Objects; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Component; -import ru.spcex.clearing.xml.exporter.logic.data.ResultContainer; -import ru.spcex.clearing.xml.exporter.logic.data.enums.StageResult; -import ru.spcex.clearing.xml.exporter.logic.data.enums.Table; -import ru.spcex.clearing.xml.exporter.logic.data.tags.DocumentTag; - -@Component -public class WriteXMLFile { - private final Logger log = LoggerFactory.getLogger(getClass()); - private final XmlMapper xmlMapper; - - public WriteXMLFile(@Qualifier("xmlMapper") XmlMapper xmlMapper) { - this.xmlMapper = xmlMapper; - } - - public StageResult process(ResultContainer resultContainer) { - log.info("uuid {}. Stage: {}", resultContainer.getUuid(), this.getClass().getSimpleName()); - Table table = Objects.requireNonNull(resultContainer.getTableForExport()); - File xmlFile = Objects.requireNonNull(resultContainer.getFileForExport()); - - DocumentTag documentTag = Objects.requireNonNull(resultContainer.getDocumentTag()); - - log.info("DOCUMENT TAG = {}", documentTag); - try { - xmlMapper.writeValue(xmlFile, documentTag); - } catch (Exception e) { - log.error(String.format("uuid %s. Can't export table %s (map %s) to file %s. Table was skipped.", - resultContainer.getUuid(), table, table.getHazelcastMapName(), xmlFile), e); - return StageResult.ERROR; - } - - return StageResult.OK; - } -} diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/services/CommandService.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/services/CommandService.java index 76e29bb98..6ffd447ec 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/services/CommandService.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/services/CommandService.java @@ -21,7 +21,6 @@ import ru.spcex.clearing.xml.exporter.logic.data.enums.Table; import ru.spcex.clearing.xml.exporter.logic.stages.ExportFromHazelcast; import ru.spcex.clearing.xml.exporter.logic.stages.Journal; import ru.spcex.clearing.xml.exporter.logic.stages.PrepareXMLFile; -import ru.spcex.clearing.xml.exporter.logic.stages.WriteXMLFile; import ru.spcex.platform.enumeration.Task; @Service @@ -30,20 +29,17 @@ public class CommandService extends QueueConsumer implements InitializingBean { private final PrepareXMLFile prepareXMLFile; private final ExportFromHazelcast exportFromHazelcast; - private final WriteXMLFile writeXMLFile; private final Journal journal; private final String section; public CommandService(Consumer kafkaQueue, PrepareXMLFile prepareXMLFile, ExportFromHazelcast exportFromHazelcast, - WriteXMLFile writeXMLFile, Journal journal, @Value("${export-xml-service.section:S}") String section) { super(kafkaQueue); this.prepareXMLFile = prepareXMLFile; this.exportFromHazelcast = exportFromHazelcast; - this.writeXMLFile = writeXMLFile; this.journal = journal; this.section = section; } @@ -127,10 +123,6 @@ public class CommandService extends QueueConsumer implements InitializingBean { result = exportFromHazelcast.process(resultContainer); resultContainer.setLastStageResult(result); } - if (result == StageResult.OK) { - result = writeXMLFile.process(resultContainer); - resultContainer.setLastStageResult(result); - } if (result == StageResult.OK) { result = journal.process(resultContainer); resultContainer.setLastStageResult(result); diff --git a/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcastTest.java b/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcastTest.java index c1ed724cc..e978c3374 100644 --- a/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcastTest.java +++ b/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/ExportFromHazelcastTest.java @@ -1,8 +1,13 @@ package ru.spcex.clearing.xml.exporter.logic.stages; +import static org.junit.jupiter.api.Assertions.fail; + import java.io.File; +import java.io.IOException; import java.math.BigDecimal; import java.math.BigInteger; +import java.nio.file.Files; +import java.nio.file.Path; import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; @@ -12,6 +17,7 @@ import org.apache.kafka.clients.producer.MockProducer; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import org.mockito.Captor; @@ -90,6 +96,22 @@ class ExportFromHazelcastTest { new TestObjectCreator(hazelcastService).createUserAdmin(1000L); } + @AfterEach + void tearDown() { + try { + Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml")); + Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-03_S_PRC1604240915_1.xml")); + Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-05_S_PRC1604240915_1.xml")); + Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-07_S_PRC1604240915_1.xml")); + Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-51_S_PRC1604240915_1.xml")); + Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-53_S_PRC1604240915_1.xml")); + Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-54_S_PRC1604240915_1.xml")); + Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-56_S_PRC1604240915_1.xml")); + } catch (IOException e) { + fail(e.getMessage()); + } + } + @Test void process_shouldExportSDf02ToObjectTag() { SDf02 expectedSDf02 = new SDf02(); @@ -130,6 +152,35 @@ class ExportFromHazelcastTest { Assertions.assertThat(actualObjectTag.getSumengage()).isEqualTo(expectedSDf02.getSumengage()); Assertions.assertThat(actualObjectTag.getSumunblock()).isEqualTo(expectedSDf02.getSumunblock()); Assertions.assertThat(actualObjectTag.getFileType()).isEqualTo(expectedSDf02.getFile_type()); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } + } + + @Test + void process_shouldExportEmptySDf02ToObjectTag() { + ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02, "S"); + actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml")); + + StageResult stageResult = exportFromHazelcast.process(actualResultContainer); + DF02ObjectTag actualObjectTag = (DF02ObjectTag) actualResultContainer.getDocumentTag().getObjects(); + + Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); + Assertions.assertThat(actualResultContainer.getDocumentTag().getMessageType()).isEqualTo("DF02"); + Assertions.assertThat(actualObjectTag).isEqualTo(null); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } } @Test @@ -173,6 +224,14 @@ class ExportFromHazelcastTest { Assertions.assertThat(actualObjectTag.getSumDeb()).isEqualTo(expectedSDf03.getSum_deb()); Assertions.assertThat(actualObjectTag.getSpecif1()).isEqualTo(expectedSDf03.getSpecif_1()); Assertions.assertThat(actualObjectTag.getImpResult()).isEqualTo(expectedSDf03.getImp_result()); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } } @Test @@ -198,6 +257,14 @@ class ExportFromHazelcastTest { Assertions.assertThat(actualObjectTag.getDt()).isEqualTo(expectedSDf05.getDt()); Assertions.assertThat(actualObjectTag.getTm()).isEqualTo(expectedSDf05.getTm()); Assertions.assertThat(actualObjectTag.getPr()).isEqualTo(expectedSDf05.getPr()); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } } @Test @@ -241,6 +308,14 @@ class ExportFromHazelcastTest { Assertions.assertThat(actualObjectTag.getDocNum()).isEqualTo(expectedSDf07.getDoc_num()); Assertions.assertThat(actualObjectTag.getDocDate().format(formatter)).isEqualTo(expectedSDf07.getDoc_date()); Assertions.assertThat(actualObjectTag.getPayVal()).isEqualTo(expectedSDf07.getPay_val()); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } } @Test @@ -263,6 +338,14 @@ class ExportFromHazelcastTest { Assertions.assertThat(actualObjectTag.getNumber()).isEqualTo(expectedSDf51.getNumber()); Assertions.assertThat(actualObjectTag.getUnixtime()).isEqualTo(Long.parseLong(expectedSDf51.getDatetime())); Assertions.assertThat(actualObjectTag.getDatetime()).isEqualTo(Instant.ofEpochMilli(Long.parseLong(expectedSDf51.getDatetime())).atZone(ZoneId.systemDefault()).toLocalDateTime()); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } } @Test @@ -294,6 +377,14 @@ class ExportFromHazelcastTest { Assertions.assertThat(actualObjectTag.getStatus()).isEqualTo(expectedSDf53.getStatus()); Assertions.assertThat(actualObjectTag.getAccType()).isEqualTo(expectedSDf53.getAccType()); Assertions.assertThat(actualObjectTag.getResult()).isEqualTo(expectedSDf53.getResult()); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } } @Test @@ -373,6 +464,14 @@ class ExportFromHazelcastTest { Assertions.assertThat(actualObjectTag.getValueDate().format(formatter)).isEqualTo(expectedSDf54.getValue_date()); Assertions.assertThat(actualObjectTag.getSwiftBen()).isEqualTo(expectedSDf54.getSwift_ben()); Assertions.assertThat(actualObjectTag.getSwiftInt()).isEqualTo(expectedSDf54.getSwift_int()); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } } @Test @@ -402,5 +501,13 @@ class ExportFromHazelcastTest { Assertions.assertThat(actualObjectTag.getEndDatetime()).isEqualTo(Instant.ofEpochMilli(Long.parseLong(expectedSDf56.getEnd_datetime())).atZone(ZoneId.systemDefault()).toLocalDateTime()); Assertions.assertThat(actualObjectTag.getAccount()).isEqualTo(expectedSDf56.getAccount()); Assertions.assertThat(actualObjectTag.getDeal()).isEqualTo(expectedSDf56.getDeal()); + + try { + Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), + Path.of("./src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml"))) + .isEqualTo(-1L); + } catch (IOException e) { + fail("File comparison failed!"); + } } } \ No newline at end of file diff --git a/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFileTest.java b/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFileTest.java deleted file mode 100644 index 71cdcf3d1..000000000 --- a/clearing-parent/xml-exporter/src/test/java/ru/spcex/clearing/xml/exporter/logic/stages/WriteXMLFileTest.java +++ /dev/null @@ -1,433 +0,0 @@ -package ru.spcex.clearing.xml.exporter.logic.stages; - -import static org.junit.jupiter.api.Assertions.fail; - -import java.io.File; -import java.io.IOException; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.nio.file.Files; -import java.nio.file.Path; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; -import java.util.List; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.TestPropertySource; -import ru.spcex.clearing.test.config.ImdgTestConfig; -import ru.spcex.clearing.xml.exporter.config.XMLExporterConfig; -import ru.spcex.clearing.xml.exporter.config.settings.ExportXMLServiceSettings; -import ru.spcex.clearing.xml.exporter.logic.data.ResultContainer; -import ru.spcex.clearing.xml.exporter.logic.data.enums.StageResult; -import ru.spcex.clearing.xml.exporter.logic.data.enums.Table; -import ru.spcex.clearing.xml.exporter.logic.data.tags.DocumentTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.ParentDocTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.DF02ObjectTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.DF03ObjectTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.DF05ObjectTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.DF07ObjectTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.DF51ObjectTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.DF53ObjectTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.DF54ObjectTag; -import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.DF56ObjectTag; - -@SpringBootTest(classes = { - WriteXMLFile.class, - ExportXMLServiceSettings.class, - XMLExporterConfig.class, - ImdgTestConfig.class, -}) -@TestPropertySource(properties = {"spring.config.location=./src/test/resources/"}) -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) -class WriteXMLFileTest { - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Autowired - private WriteXMLFile writeXMLFile; - - @AfterEach - void tearDown() { - try { - Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml")); - Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-03_S_PRC1604240915_1.xml")); - Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-05_S_PRC1604240915_1.xml")); - Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-07_S_PRC1604240915_1.xml")); - Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-51_S_PRC1604240915_1.xml")); - Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-53_S_PRC1604240915_1.xml")); - Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-54_S_PRC1604240915_1.xml")); - Files.deleteIfExists(Path.of("./src/test/resources/xml/DF-56_S_PRC1604240915_1.xml")); - } catch (IOException e) { - fail(e.getMessage()); - } - } - - @Test - void process_shouldWriteSDf02ToXMLFile() { - DF02ObjectTag expectedObjectTag = new DF02ObjectTag(); - expectedObjectTag.setCurrCode("test1"); - expectedObjectTag.setAccount("test2"); - expectedObjectTag.setRemainder("test3"); - expectedObjectTag.setDeal("test4"); - expectedObjectTag.setAccCode("test5"); - expectedObjectTag.setDat(LocalDate.parse("2024-03-14")); - expectedObjectTag.setMarket("test6"); - expectedObjectTag.setAccName("test7"); - expectedObjectTag.setAccType("test8"); - expectedObjectTag.setSumengage("test9"); - expectedObjectTag.setSumunblock("test10"); - expectedObjectTag.setFileType("test11"); - - ParentDocTag expectedParentDocTag = new ParentDocTag(); - expectedParentDocTag.setParentId(""); - - DocumentTag expectedDocumentTag = new DocumentTag(); - expectedDocumentTag.setMessageId(""); - expectedDocumentTag.setMessageType("DF02"); - expectedDocumentTag.setMessageName(""); - expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14")); - expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31")); - expectedDocumentTag.setSender(""); - expectedDocumentTag.setReceiver(""); - expectedDocumentTag.setParentDoc(expectedParentDocTag); - expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02, "S"); - actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml")); - actualResultContainer.setDocumentTag(expectedDocumentTag); - - StageResult stageResult = writeXMLFile.process(actualResultContainer); - Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); - - try { - Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), - Path.of("./src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml"))) - .isEqualTo(-1L); - } catch (IOException e) { - fail("File comparison failed!"); - } - } - - @Test - void process_shouldWriteSDf03ToXMLFile() { - DF03ObjectTag expectedObjectTag = new DF03ObjectTag(); - expectedObjectTag.setSegType("test1"); - expectedObjectTag.setDocType("test2"); - expectedObjectTag.setDocnmRef("test3"); - expectedObjectTag.setDocnmprev("test4"); - expectedObjectTag.setcAccDeb("test5"); - expectedObjectTag.setSbanknam1("test6"); - expectedObjectTag.setcAccCred("test7"); - expectedObjectTag.setRbanknam1("test8"); - expectedObjectTag.setPayDate(LocalDate.parse("2024-03-14")); - expectedObjectTag.setPayVal("test9"); - expectedObjectTag.setSumDeb("test10"); - expectedObjectTag.setSpecif1("test11"); - expectedObjectTag.setImpResult("test12"); - - ParentDocTag expectedParentDocTag = new ParentDocTag(); - expectedParentDocTag.setParentId(""); - - DocumentTag expectedDocumentTag = new DocumentTag(); - expectedDocumentTag.setMessageId(""); - expectedDocumentTag.setMessageType("DF03"); - expectedDocumentTag.setMessageName(""); - expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14")); - expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31")); - expectedDocumentTag.setSender(""); - expectedDocumentTag.setReceiver(""); - expectedDocumentTag.setParentDoc(expectedParentDocTag); - expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03, "S"); - actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-03_S_PRC1604240915_1.xml")); - actualResultContainer.setDocumentTag(expectedDocumentTag); - - StageResult stageResult = writeXMLFile.process(actualResultContainer); - Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); - - try { - Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), - Path.of("./src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml"))) - .isEqualTo(-1L); - } catch (IOException e) { - fail("File comparison failed!"); - } - } - - @Test - void process_shouldWriteSDf05ToXMLFile() { - DF05ObjectTag expectedObjectTag = new DF05ObjectTag(); - expectedObjectTag.setTp(BigDecimal.TEN); - expectedObjectTag.setDt(LocalDate.parse("2024-03-14")); - expectedObjectTag.setTm(LocalTime.parse("09:22:12")); - expectedObjectTag.setPr("test2"); - - ParentDocTag expectedParentDocTag = new ParentDocTag(); - expectedParentDocTag.setParentId(""); - - DocumentTag expectedDocumentTag = new DocumentTag(); - expectedDocumentTag.setMessageId(""); - expectedDocumentTag.setMessageType("DF05"); - expectedDocumentTag.setMessageName(""); - expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14")); - expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31")); - expectedDocumentTag.setSender(""); - expectedDocumentTag.setReceiver(""); - expectedDocumentTag.setParentDoc(expectedParentDocTag); - expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05, "S"); - actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-05_S_PRC1604240915_1.xml")); - actualResultContainer.setDocumentTag(expectedDocumentTag); - - StageResult stageResult = writeXMLFile.process(actualResultContainer); - Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); - - try { - Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), - Path.of("./src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml"))) - .isEqualTo(-1L); - } catch (IOException e) { - fail("File comparison failed!"); - } - } - - @Test - void process_shouldWriteSDf07ToXMLFile() { - DF07ObjectTag expectedObjectTag = new DF07ObjectTag(); - expectedObjectTag.setAccount("test1"); - expectedObjectTag.setSum(new BigDecimal(BigInteger.TEN)); - expectedObjectTag.setMarket("test3"); - expectedObjectTag.setType("test4"); - expectedObjectTag.setDeal("test5"); - expectedObjectTag.setClientN("test6"); - expectedObjectTag.setInn("test7"); - expectedObjectTag.setBic("test8"); - expectedObjectTag.setSpec("test9"); - expectedObjectTag.setNumber(new BigDecimal(BigInteger.TWO)); - expectedObjectTag.setDocNum("test11"); - expectedObjectTag.setDocDate(LocalDate.parse("2024-03-14")); - expectedObjectTag.setPayVal("test12"); - - ParentDocTag expectedParentDocTag = new ParentDocTag(); - expectedParentDocTag.setParentId(""); - - DocumentTag expectedDocumentTag = new DocumentTag(); - expectedDocumentTag.setMessageId(""); - expectedDocumentTag.setMessageType("DF07"); - expectedDocumentTag.setMessageName(""); - expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14")); - expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31")); - expectedDocumentTag.setSender(""); - expectedDocumentTag.setReceiver(""); - expectedDocumentTag.setParentDoc(expectedParentDocTag); - expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07, "S"); - actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-07_S_PRC1604240915_1.xml")); - actualResultContainer.setDocumentTag(expectedDocumentTag); - - StageResult stageResult = writeXMLFile.process(actualResultContainer); - Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); - - try { - Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), - Path.of("./src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml"))) - .isEqualTo(-1L); - } catch (IOException e) { - fail("File comparison failed!"); - } - } - - @Test - void process_shouldWriteSDf51ToXMLFile() { - DF51ObjectTag expectedObjectTag = new DF51ObjectTag(); - expectedObjectTag.setNumber("1234"); - expectedObjectTag.setDatetime(LocalDateTime.parse("2024-03-14T09:03:11")); - expectedObjectTag.setUnixtime(expectedObjectTag.getDatetime().atZone(ZoneId.systemDefault()).toEpochSecond()); - - ParentDocTag expectedParentDocTag = new ParentDocTag(); - expectedParentDocTag.setParentId(""); - - DocumentTag expectedDocumentTag = new DocumentTag(); - expectedDocumentTag.setMessageId(""); - expectedDocumentTag.setMessageType("DF51"); - expectedDocumentTag.setMessageName(""); - expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14")); - expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31")); - expectedDocumentTag.setSender(""); - expectedDocumentTag.setReceiver(""); - expectedDocumentTag.setParentDoc(expectedParentDocTag); - expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51, "S"); - actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-51_S_PRC1604240915_1.xml")); - actualResultContainer.setDocumentTag(expectedDocumentTag); - - StageResult stageResult = writeXMLFile.process(actualResultContainer); - Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); - - try { - Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), - Path.of("./src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml"))) - .isEqualTo(-1L); - } catch (IOException e) { - fail("File comparison failed!"); - } - } - - @Test - void process_shouldWriteSDf53ToXMLFile() { - DF53ObjectTag expectedObjectTag = new DF53ObjectTag(); - expectedObjectTag.setAccount("test1"); - expectedObjectTag.setAccName("test2"); - expectedObjectTag.setDeal("test3"); - expectedObjectTag.setDate(LocalDate.parse("2024-03-14")); - expectedObjectTag.setStatus(1L); - expectedObjectTag.setAccType("test4"); - expectedObjectTag.setResult("test5"); - - ParentDocTag expectedParentDocTag = new ParentDocTag(); - expectedParentDocTag.setParentId(""); - - DocumentTag expectedDocumentTag = new DocumentTag(); - expectedDocumentTag.setMessageId(""); - expectedDocumentTag.setMessageType("DF53"); - expectedDocumentTag.setMessageName(""); - expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14")); - expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31")); - expectedDocumentTag.setSender(""); - expectedDocumentTag.setReceiver(""); - expectedDocumentTag.setParentDoc(expectedParentDocTag); - expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53, "S"); - actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-53_S_PRC1604240915_1.xml")); - actualResultContainer.setDocumentTag(expectedDocumentTag); - - StageResult stageResult = writeXMLFile.process(actualResultContainer); - Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); - - try { - Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), - Path.of("./src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml"))) - .isEqualTo(-1L); - } catch (IOException e) { - fail("File comparison failed!"); - } - } - - @Test - void process_shouldWriteSDf54ToXMLFile() { - DF54ObjectTag expectedObjectTag = new DF54ObjectTag(); - expectedObjectTag.setSegType("test1"); - expectedObjectTag.setDocType("test2"); - expectedObjectTag.setDocnmRef("test3"); - expectedObjectTag.setDocnmprev("test4"); - expectedObjectTag.setSbankcode("test5"); - expectedObjectTag.setcAccDeb("test6"); - expectedObjectTag.setSbanknam1("test7"); - expectedObjectTag.setRbankcode("test8"); - expectedObjectTag.setcAccCred("test9"); - expectedObjectTag.setRbanknam1("test10"); - expectedObjectTag.setOpType("test11"); - expectedObjectTag.setOpOrder("test12"); - expectedObjectTag.setPayDate(LocalDate.parse("2024-03-14")); - expectedObjectTag.setPayVal("test13"); - expectedObjectTag.setSumDeb("test14"); - expectedObjectTag.setSclientn1("test15"); - expectedObjectTag.setInnDeb("test16"); - expectedObjectTag.setKppDeb("test17"); - expectedObjectTag.setAccDeb("test18"); - expectedObjectTag.setRclientn1("test19"); - expectedObjectTag.setInnCred("test20"); - expectedObjectTag.setKppCred("test21"); - expectedObjectTag.setAccKr1("test22"); - expectedObjectTag.setSpecif1("test23"); - expectedObjectTag.setSendType("test24"); - expectedObjectTag.setDocResult("test25"); - expectedObjectTag.setDocNum("test26"); - expectedObjectTag.setDocDate(LocalDate.parse("2024-03-15")); - expectedObjectTag.setValueDate(LocalDate.parse("2024-03-16")); - expectedObjectTag.setSwiftBen("test27"); - expectedObjectTag.setSwiftInt("test28"); - - ParentDocTag expectedParentDocTag = new ParentDocTag(); - expectedParentDocTag.setParentId(""); - - DocumentTag expectedDocumentTag = new DocumentTag(); - expectedDocumentTag.setMessageId(""); - expectedDocumentTag.setMessageType("DF54"); - expectedDocumentTag.setMessageName(""); - expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14")); - expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31")); - expectedDocumentTag.setSender(""); - expectedDocumentTag.setReceiver(""); - expectedDocumentTag.setParentDoc(expectedParentDocTag); - expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54, "S"); - actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-54_S_PRC1604240915_1.xml")); - actualResultContainer.setDocumentTag(expectedDocumentTag); - - StageResult stageResult = writeXMLFile.process(actualResultContainer); - Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); - - try { - Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), - Path.of("./src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml"))) - .isEqualTo(-1L); - } catch (IOException e) { - fail("File comparison failed!"); - } - } - - @Test - void process_shouldWriteSDf56ToXMLFile() { - DF56ObjectTag expectedObjectTag = new DF56ObjectTag(); - expectedObjectTag.setNumber("test1"); - expectedObjectTag.setStartDatetime(LocalDateTime.parse("2024-03-14T09:03:11")); - expectedObjectTag.setEndDatetime(LocalDateTime.parse("2024-04-15T11:03:11")); - expectedObjectTag.setAccount("test4"); - expectedObjectTag.setDeal("test5"); - expectedObjectTag.setStartUnixtime(expectedObjectTag.getStartDatetime().atZone(ZoneId.systemDefault()).toEpochSecond()); - expectedObjectTag.setEndUnixtime(expectedObjectTag.getEndDatetime().atZone(ZoneId.systemDefault()).toEpochSecond()); - - ParentDocTag expectedParentDocTag = new ParentDocTag(); - expectedParentDocTag.setParentId(""); - - DocumentTag expectedDocumentTag = new DocumentTag(); - expectedDocumentTag.setMessageId(""); - expectedDocumentTag.setMessageType("DF56"); - expectedDocumentTag.setMessageName(""); - expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14")); - expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31")); - expectedDocumentTag.setSender(""); - expectedDocumentTag.setReceiver(""); - expectedDocumentTag.setParentDoc(expectedParentDocTag); - expectedDocumentTag.setObjects(List.of(expectedObjectTag)); - - ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56, "S"); - actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-56_S_PRC1604240915_1.xml")); - actualResultContainer.setDocumentTag(expectedDocumentTag); - - StageResult stageResult = writeXMLFile.process(actualResultContainer); - Assertions.assertThat(stageResult).isEqualTo(StageResult.OK); - - try { - Assertions.assertThat(Files.mismatch(actualResultContainer.getFileForExport().toPath(), - Path.of("./src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml"))) - .isEqualTo(-1L); - } catch (IOException e) { - fail("File comparison failed!"); - } - } -} \ No newline at end of file diff --git a/clearing-parent/xml-exporter/src/test/resources/application.properties b/clearing-parent/xml-exporter/src/test/resources/application.properties index 0202082f0..03c6c6e6b 100644 --- a/clearing-parent/xml-exporter/src/test/resources/application.properties +++ b/clearing-parent/xml-exporter/src/test/resources/application.properties @@ -29,8 +29,4 @@ export-xml-service.kafka-producer.acks=all export-xml-service.kafka-producer.retries=0 export-xml-service.kafka-producer.batch-size=16384 export-xml-service.kafka-producer.linger-ms=1 -export-xml-service.kafka-producer.buffer-memory=33554432 - -export-xml-service.section=S -export-xml-service.sender=LCC -export-xml-service.receiver=\u0439\u0439\u0439 \u0446\u0446\u0446 \ No newline at end of file +export-xml-service.kafka-producer.buffer-memory=33554432 \ No newline at end of file diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml index f6173c6b4..1304d3431 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-02_S_PRC1604240915_1.xml @@ -1,7 +1,7 @@ - + - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml index 222643ca5..b20b240d8 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-03_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml index 88dc88539..e6c54e03c 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-05_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml index e1434de47..9a3af18a7 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-07_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml index 9d4012b21..0b54e318d 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-51_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml index 62f94a3ec..cf3b9e9e3 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-53_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml index 04ad3f081..c4d8d252b 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-54_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + diff --git a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml index 49c829c14..be6cb751f 100644 --- a/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml +++ b/clearing-parent/xml-exporter/src/test/resources/xml-original/DF-56_S_PRC1604240915_1.xml @@ -1,5 +1,5 @@ - + From a0f4a5d8f2524a402708f9ef8324fa5b9a7365e1 Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Thu, 21 Nov 2024 18:07:23 +0300 Subject: [PATCH 8/8] double quoted xml declaration added --- .../spcex/clearing/xml/exporter/config/XMLExporterConfig.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/XMLExporterConfig.java b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/XMLExporterConfig.java index 267c4076f..4ee4d443d 100644 --- a/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/XMLExporterConfig.java +++ b/clearing-parent/xml-exporter/src/main/java/ru/spcex/clearing/xml/exporter/config/XMLExporterConfig.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.xml.exporter.config; +import com.ctc.wstx.api.WstxOutputProperties; import com.ctc.wstx.stax.WstxInputFactory; import com.ctc.wstx.stax.WstxOutputFactory; import com.fasterxml.jackson.databind.SerializationFeature; @@ -57,6 +58,7 @@ public class XMLExporterConfig { xmlMapper.registerModule(new JavaTimeModule()); xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true); xmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true); + xmlMapper.getFactory().getXMLOutputFactory().setProperty(WstxOutputProperties.P_USE_DOUBLE_QUOTES_IN_XML_DECL, true); return xmlMapper; }