This commit is contained in:
Ivan Nikolaev-Axenov 2024-11-21 17:42:17 +03:00
parent dbe967de51
commit aebfc35eb4
14 changed files with 137 additions and 498 deletions

View file

@ -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<Table, ObjectTag<? extends SpcexObjectBase>> objectTagMap;
private final Supplier<KafkaSender> kafkaSender;
private final ExportXMLServiceSettings settings;
private final XmlMapper xmlMapper;
public ExportFromHazelcast(ImdgProvider imdgProvider,
SFTPConfig.XmlGateway gateway,
@Qualifier("mapOfTable") Map<Table, ObjectTag<? extends SpcexObjectBase>> objectTagMap,
Supplier<KafkaSender> 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);

View file

@ -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;
}
}

View file

@ -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<String, Object> 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);

View file

@ -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!");
}
}
}

View file

@ -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!");
}
}
}

View file

@ -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
export-xml-service.kafka-producer.buffer-memory=33554432

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF02" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF02" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT CURR_CODE="test1" ACCOUNT="test2" REMAINDER="test3" DEAL="test4" ACC_CODE="test5" DAT="2024-03-14" MARKET="test6" ACC_NAME="test7" ACC_TYPE="test8" SUMENGAGE="test9" SUMUNBLOK="test10" FILE_TYPE="test11"/>
<OBJECT CURR_CODE="test1" ACCOUNT="test2" REMAINDER="test3" DEAL="test4" ACC_CODE="test5" DAT="2024-03-14" MARKET="test6" ACC_NAME="test7" ACC_TYPE="test8" SUMENGAGE="test9" SUMUNBLOK="test10" FILE_TYPE="test11" RESULT="test12"/>
</OBJECTS>
</DOCUMENT>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF03" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF03" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT SEG_TYPE="test1" DOC_TYPE="test2" DOCNM_REF="test3" DOCNMPREV="test4" C_ACC_DEB="test5" SBANKNAM="test6" C_ACC_CRED="test7" RBANKNAM="test8" PAY_DATE="2024-03-14" PAY_VAL="test9" SUM_DEB="test10" SPECIF_1="test11" IMP_RESULT="test12"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF05" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF05" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT TP="10" DT="2024-03-14" TM="09:22:12" PR="test2"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF07" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF07" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT ACCOUNT="test1" SUM="10" MARKET="test3" TYPE="test4" DEAL="test5" CLIENTN="test6" INN="test7" BIC="test8" SPEC="test9" NUMBER="2" DOC_NUM="test11" DOC_DATE="2024-03-14" PAY_VAL="test12"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF51" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF51" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT NUMBER="1234" UNIXTIME="1710396191" DATETIME="2024-03-14T09:03:11"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF53" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF53" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT ACCOUNT="test1" ACC_NAME="test2" DEAL="test3" DATE="2024-03-14" STATUS="1" ACC_TYPE="test4" RESULT="test5"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF54" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF54" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT SEG_TYPE="test1" DOC_TYPE="test2" DOCNM_REF="test3" DOCNMPREV="test4" SBANKCODE="test5" C_ACC_DEB="test6" SBANKNAM="test7" RBANKCODE="test8" C_ACC_CRED="test9" RBANKNAM="test10" OP_TYPE="test11" OP_ORDER="test12" PAY_DATE="2024-03-14" PAY_VAL="test13" SUM_DEB="test14" SCLIENTN="test15" INN_DEB="test16" KPP_DEB="test17" ACC_DEB="test18" RCLIENTN="test19" INN_CRED="test20" KPP_CRED="test21" ACC_KR_1="test22" SPECIF_1="test23" SEND_TYPE="test24" DOC_RESULT="test25" DOC_NUM="test26" DOC_DATE="2024-03-15" VALUE_DATE="2024-03-16" SWIFT_BEN="test27" SWIFT_INT="test28"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF56" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF56" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT NUMBER="test1" SUNIXTIME="1710396191" SDATETIME="2024-03-14T09:03:11" EUNIXTIME="1713168191" EDATETIME="2024-04-15T11:03:11" ACCOUNT="test4" DEAL="test5"/>