swt-exporter http://jira.mfd.msk:8088/browse/CLS-317 улучшил перенос строк, поправил вывод в файл
This commit is contained in:
parent
d7400624fa
commit
1710d25188
6 changed files with 107 additions and 28 deletions
|
|
@ -29,6 +29,7 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
|
|||
private final KafkaSender kafkaSender;
|
||||
protected final FileStorage fileStorage;
|
||||
protected final Class<T> mapClass;
|
||||
protected final String lineSeparator = "\n";
|
||||
|
||||
protected AbstractExporterService(FileStorage fileStorage,
|
||||
KafkaSender kafkaSender, ImdgProvider imdgProvider,
|
||||
|
|
@ -86,7 +87,7 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
|
|||
protected SWTHeaderData makeSwtHeader(Collection<T> records) {
|
||||
Optional<T> optional = records.stream().findAny();
|
||||
T value = null;
|
||||
if(optional.isPresent()){
|
||||
if (optional.isPresent()) {
|
||||
value = optional.get();
|
||||
}
|
||||
return getHeader(value);
|
||||
|
|
@ -132,16 +133,19 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
|
|||
// protected abstract String[] swtHeader();
|
||||
|
||||
protected void makeSWTData(SWTHeaderData header, Collection<T> records, OutputStream outStream) {
|
||||
PrintWriter out = new PrintWriter(outStream);
|
||||
out.print(header.buildString());
|
||||
int counter = 0;
|
||||
int totalSize = records.size();
|
||||
for (T row : records) {
|
||||
ConvertionContext context = new ConvertionContext(mapClass, counter, totalSize);
|
||||
String data = convertRecord(row, context);
|
||||
out.println(data);
|
||||
counter++;
|
||||
try (PrintWriter out = new PrintWriter(outStream)) {
|
||||
out.print(header.buildString());
|
||||
int counter = 0;
|
||||
int totalSize = records.size();
|
||||
for (T row : records) {
|
||||
ConvertionContext context = new ConvertionContext(mapClass, counter, totalSize);
|
||||
String data = convertRecord(row, context);
|
||||
out.print(data);
|
||||
counter++;
|
||||
}
|
||||
out.print(totalSize);
|
||||
out.print(lineSeparator);
|
||||
out.flush();
|
||||
}
|
||||
out.println(totalSize);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public class DF09Exporter extends AbstractExporterService<SDf09> {
|
|||
stringBuilder.append(record.getQuantity()).append(':');
|
||||
stringBuilder.append(record.getSecurityCode()).append(':');
|
||||
stringBuilder.append(record.getClientName()).append(':');
|
||||
stringBuilder.append(record.getResult()).append('\n');
|
||||
stringBuilder.append(record.getResult()).append(lineSeparator);
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,24 +48,25 @@ public class DF11Exporter extends AbstractExporterService<SDf11> {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String convertRecord(SDf11 record, ConvertionContext context) {
|
||||
protected String convertRecord(SDf11 record, ConvertionContext context) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(record.getDepoCode()).append(':');
|
||||
stringBuilder.append(record.getQuantity()).append(':');
|
||||
stringBuilder.append(record.getSecurityCode()).append(':');
|
||||
stringBuilder.append(record.getClientName()).append(':');
|
||||
stringBuilder.append(record.getResult()).append('\n');
|
||||
stringBuilder.append(record.getResult()).append(lineSeparator);
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SWTHeaderData getHeader(SDf11 record){
|
||||
protected SWTHeaderData getHeader(SDf11 record) {
|
||||
SWTHeaderData swtHeaderData = new SWTHeaderData();
|
||||
swtHeaderData.setTo("CSO");
|
||||
swtHeaderData.setFrom("SPCE");
|
||||
swtHeaderData.setType(typeForHeader());
|
||||
swtHeaderData.setDateTime(LocalDateTime.now());
|
||||
swtHeaderData.setValFor20Tag(java.util.UUID.randomUUID().toString());
|
||||
if(record!=null){
|
||||
if (record != null) {
|
||||
swtHeaderData.setValFor21Tag(record.getInDocument());
|
||||
}
|
||||
return swtHeaderData;
|
||||
|
|
|
|||
|
|
@ -19,8 +19,6 @@ import java.util.LinkedHashMap;
|
|||
@Service
|
||||
public class DF12Exporter extends AbstractExporterService<SDf12> {
|
||||
|
||||
public static final String DIRECTION_CONST = "DELFREE";
|
||||
|
||||
public DF12Exporter(FileStorage fileStorage,
|
||||
KafkaSender kafkaSender,
|
||||
ImdgProvider imdgProvider) {
|
||||
|
|
@ -56,13 +54,13 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
|
|||
@Override
|
||||
protected String convertRecord(SDf12 record, ConvertionContext context) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(context.getCountOfRecord()).append('\n');
|
||||
stringBuilder.append(context.getTotalCountOfRecords()).append('\n');
|
||||
stringBuilder.append(":23:").append(DIRECTION_CONST).append('\n'); //fixme
|
||||
stringBuilder.append(":35A:").append(record.getQuantity()).append('\n');
|
||||
stringBuilder.append(":35B:").append(record.getSecurityCode()).append('\n');
|
||||
stringBuilder.append(":82D:").append(record.getDepoCodeSender()).append('\n');
|
||||
stringBuilder.append(":87C:").append(record.getDepoCodeAdressee()).append('\n');
|
||||
stringBuilder.append(context.getCountOfRecord()).append(lineSeparator);
|
||||
stringBuilder.append(context.getTotalCountOfRecords()).append(lineSeparator);
|
||||
stringBuilder.append(":23:").append(record.getDirection()).append(lineSeparator);
|
||||
stringBuilder.append(":35A:").append(record.getQuantity()).append(lineSeparator);
|
||||
stringBuilder.append(":35B:").append(record.getSecurityCode()).append(lineSeparator);
|
||||
stringBuilder.append(":82D:").append(record.getDepoCodeSender()).append(lineSeparator);
|
||||
stringBuilder.append(":87C:").append(record.getDepoCodeAdressee()).append(lineSeparator);
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
|
|
@ -75,7 +73,7 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
|
|||
swtHeaderData.setDateTime(LocalDateTime.now());
|
||||
if (record != null) {
|
||||
swtHeaderData.setValFor20Tag(record.getOutDocument());
|
||||
swtHeaderData.setValFor23Tag(DIRECTION_CONST); //FIXME
|
||||
swtHeaderData.setValFor23Tag(record.getDirection());
|
||||
swtHeaderData.setValFor35ATag(record.getQuantity());
|
||||
swtHeaderData.setValFor35BTag(record.getSecurityCode());
|
||||
swtHeaderData.setValFor82DTag(record.getDepoCodeSender());
|
||||
|
|
|
|||
|
|
@ -57,12 +57,12 @@ public class DF14Exporter extends AbstractExporterService<SDf14> {
|
|||
@Override
|
||||
protected String convertRecord(SDf14 record, ConvertionContext context) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(RESULT_CONST).append('\n');
|
||||
stringBuilder.append(RESULT_CONST).append(lineSeparator);
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SWTHeaderData getHeader(SDf14 record){
|
||||
protected SWTHeaderData getHeader(SDf14 record) {
|
||||
SWTHeaderData swtHeaderData = new SWTHeaderData();
|
||||
swtHeaderData.setTo("CSO");
|
||||
swtHeaderData.setFrom("SPCE");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,76 @@
|
|||
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.Mockito;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf09;
|
||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||
import ru.spcex.clearing.swt.exporter.services.FileStorage;
|
||||
import ru.spcex.clearing.swt.exporter.util.SWTHeaderData;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.time.TimeUtil;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class DF09ExporterTest {
|
||||
|
||||
@Test
|
||||
void convertRecord() {
|
||||
Collection<SDf09> records = new ArrayList<>();
|
||||
SDf09 rec1 = new SDf09();
|
||||
rec1.setOutDocument("test1");
|
||||
rec1.setInDocument("test2");
|
||||
rec1.setDepoCode("test3");
|
||||
rec1.setQuantity("test4");
|
||||
rec1.setSecurityCode("test5");
|
||||
rec1.setClientName("test6");
|
||||
rec1.setResult("test7");
|
||||
LocalDate dt = LocalDate.of(2023, 10, 12);
|
||||
rec1.setGenerationTime(TimeUtil.localDateToInstant(dt));
|
||||
rec1.setGenerationId(1234L);
|
||||
records.add(rec1);
|
||||
|
||||
ImdgProvider mockImdg = Mockito.mock(ImdgProvider.class);
|
||||
TestableExporter exporter = new TestableExporter(null, null, mockImdg) {
|
||||
|
||||
};
|
||||
|
||||
SWTHeaderData header = exporter.makeSwtHeader(records);
|
||||
ByteArrayOutputStream outBytes = new ByteArrayOutputStream();
|
||||
exporter.makeSWTData(header, records, outBytes);
|
||||
String out = outBytes.toString();
|
||||
assertTrue(out.length() > 35);
|
||||
// assertEquals("To:CSO\n" +
|
||||
// "From:SPCE\n" +
|
||||
// "Type:009\n" +
|
||||
// "Date/Time:20230530/1457\n" +
|
||||
// ":20:7cf8af93-1a5e-456e-85c7-bca92dd36797\n" + // random UUID
|
||||
// ":21:test2\n" +
|
||||
// "test3:test4:test5:test6:test7\n" +
|
||||
// "1\n", out);
|
||||
}
|
||||
|
||||
private static class TestableExporter extends DF09Exporter {
|
||||
|
||||
public TestableExporter(FileStorage fileStorage, KafkaSender kafkaSender, ImdgProvider imdgProvider) {
|
||||
super(fileStorage, kafkaSender, imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void makeSWTData(SWTHeaderData header, Collection<SDf09> records, OutputStream outStream) {
|
||||
super.makeSWTData(header, records, outStream);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public SWTHeaderData makeSwtHeader(Collection<SDf09> records) {
|
||||
return super.makeSwtHeader(records);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue