diff --git a/clearing-parent/snapshot-maker/pom.xml b/clearing-parent/snapshot-maker/pom.xml
index 1db3214c6..239fa4421 100644
--- a/clearing-parent/snapshot-maker/pom.xml
+++ b/clearing-parent/snapshot-maker/pom.xml
@@ -18,17 +18,13 @@
17
17
-
- 5.1.0
- 2.5.0
- 2.16.1
org.springframework.boot
- spring-boot-starter-web
+ spring-boot-starter
@@ -38,11 +34,6 @@
-
- commons-io
- commons-io
- ${commons-io.version}
-
ru.spcex.clearing
classes
diff --git a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/config/settings/LocationSettings.java b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/config/settings/LocationSettings.java
deleted file mode 100644
index 78bf0ecf2..000000000
--- a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/config/settings/LocationSettings.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package ru.spcex.clearing.snapshot.maker.config.settings;
-
-public class LocationSettings {
- private String localStore;
- private String dbfImporterFolder;
- private String dbfExporterFolder;
- private String swtImporterFolder;
- private String swtExporterFolder;
- private String xmlImporterFolder;
- private String xmlExporterFolder;
-
- public String getLocalStore() {
- return localStore;
- }
-
- public void setLocalStore(String localStore) {
- this.localStore = localStore;
- }
-
- public String getDbfImporterFolder() {
- return dbfImporterFolder;
- }
-
- public void setDbfImporterFolder(String dbfImporterFolder) {
- this.dbfImporterFolder = dbfImporterFolder;
- }
-
- public String getDbfExporterFolder() {
- return dbfExporterFolder;
- }
-
- public void setDbfExporterFolder(String dbfExporterFolder) {
- this.dbfExporterFolder = dbfExporterFolder;
- }
-
- public String getSwtImporterFolder() {
- return swtImporterFolder;
- }
-
- public void setSwtImporterFolder(String swtImporterFolder) {
- this.swtImporterFolder = swtImporterFolder;
- }
-
- public String getSwtExporterFolder() {
- return swtExporterFolder;
- }
-
- public void setSwtExporterFolder(String swtExporterFolder) {
- this.swtExporterFolder = swtExporterFolder;
- }
-
- public String getXmlImporterFolder() {
- return xmlImporterFolder;
- }
-
- public void setXmlImporterFolder(String xmlImporterFolder) {
- this.xmlImporterFolder = xmlImporterFolder;
- }
-
- public String getXmlExporterFolder() {
- return xmlExporterFolder;
- }
-
- public void setXmlExporterFolder(String xmlExporterFolder) {
- this.xmlExporterFolder = xmlExporterFolder;
- }
-}
diff --git a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/config/settings/SnapshotMakerSettings.java b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/config/settings/SnapshotMakerSettings.java
index c3c241601..ff505d639 100644
--- a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/config/settings/SnapshotMakerSettings.java
+++ b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/config/settings/SnapshotMakerSettings.java
@@ -13,7 +13,7 @@ public class SnapshotMakerSettings {
private DatabaseSettings database;
private KafkaConsumerSettings kafkaConsumer;
private KafkaProducerSettings kafkaProducer;
- private LocationSettings location;
+ private String storeLocation;
public DatabaseSettings getDatabase() {
return database;
@@ -39,11 +39,11 @@ public class SnapshotMakerSettings {
this.kafkaProducer = kafkaProducer;
}
- public LocationSettings getLocation() {
- return location;
+ public String getStoreLocation() {
+ return storeLocation;
}
- public void setLocation(LocationSettings location) {
- this.location = location;
+ public void setStoreLocation(String storeLocation) {
+ this.storeLocation = storeLocation;
}
}
diff --git a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/service/CommandService.java b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/service/CommandService.java
index 221be4499..afbd2d421 100644
--- a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/service/CommandService.java
+++ b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/service/CommandService.java
@@ -9,20 +9,25 @@ import org.springframework.stereotype.Service;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
+import ru.spcex.clearing.platform.messaging.domain.cud.utilities.ExportedSDFFile;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.platform.messaging.service.Status;
+import ru.spcex.clearing.snapshot.maker.utils.FileStore;
@Service
public class CommandService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final SessionService sessionService;
+ private final FileStore fileStore;
public CommandService(Consumer kafkaQueue,
Producer kafkaResponseQueue,
- SessionService sessionService) {
+ SessionService sessionService,
+ FileStore fileStore) {
super(kafkaQueue, kafkaResponseQueue);
this.sessionService = sessionService;
+ this.fileStore = fileStore;
}
@Override
@@ -30,7 +35,16 @@ public class CommandService extends QueueConsumer implements InitializingBean {
callback(LauncherCommandRequest.class)
.setFunction(this::process)
.forDestination(Consts.LAUNCHER_NEW, callbacks::put);
-
+ callback(ExportedSDFFile.class)
+ .setConsumer(r -> {
+ if (fileStore.isSessionStarted()) {
+ log.info("Adding {} to files list", r.getRequestPayload());
+ } else {
+ log.info("Session hasn't been started, ignoring {}", r.getRequestPayload());
+ }
+ fileStore.addFile(r.getRequestPayload());
+ })
+ .forDestination(Consts.FILE_CREATED, callbacks::put);
init();
}
diff --git a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/service/SessionService.java b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/service/SessionService.java
index e1cd71142..c1d549a3a 100644
--- a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/service/SessionService.java
+++ b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/service/SessionService.java
@@ -1,6 +1,7 @@
package ru.spcex.clearing.snapshot.maker.service;
import java.io.BufferedReader;
+import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
@@ -11,30 +12,35 @@ import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
+import ru.spcex.clearing.platform.messaging.domain.cud.utilities.ExportedSDFFile;
+import ru.spcex.clearing.platform.messaging.service.FileType;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.platform.messaging.service.Status;
import ru.spcex.clearing.snapshot.maker.config.settings.SnapshotMakerSettings;
+import ru.spcex.clearing.snapshot.maker.utils.FileStore;
@Service
public class SessionService {
+ private final static Pattern JDBC_URL_PATTERN = Pattern.compile("(?<=//)(.+?)(?=:):(.+?)(?=/)/(.+?)(?=\\?|$)");
private final Logger log = LoggerFactory.getLogger(getClass());
private final SnapshotMakerSettings settings;
private final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH-mm-ss");
- private final static Pattern JDBC_URL_PATTERN = Pattern.compile("(?<=//)(.+?)(?=:):(.+?)(?=/)/(.+?)(?=\\?|$)");
+ private final FileStore fileStore;
private Path currentPath;
- public SessionService(SnapshotMakerSettings settings) {
+ public SessionService(SnapshotMakerSettings settings,
+ FileStore fileStore) {
this.settings = settings;
+ this.fileStore = fileStore;
}
public RequestInfoUpdate startSession() {
RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate();
- if (currentPath != null) {
+ if (currentPath != null || fileStore.isSessionStarted()) {
log.info("You need to stop session first!");
requestInfoUpdate.setStatus(Status.Error);
requestInfoUpdate.setMessage("You need to stop session first!");
@@ -44,7 +50,7 @@ public class SessionService {
log.info("Starting making snapshot");
try {
- this.currentPath = Files.createDirectories(Paths.get(settings.getLocation().getLocalStore()).resolve(LocalDateTime.now().format(dtf)));
+ this.currentPath = Files.createDirectories(Paths.get(settings.getStoreLocation()).resolve(LocalDateTime.now().format(dtf)));
log.info("Session folder created: {}", this.currentPath);
} catch (IOException e) {
log.info("Can't create directory, error={}", e.getMessage());
@@ -58,6 +64,8 @@ public class SessionService {
return requestInfoUpdate;
}
+ this.fileStore.setSessionStarted(true);
+
requestInfoUpdate.setStatus(Status.Success);
requestInfoUpdate.setMessage("Snapshot created successfully in folder " + this.currentPath.toAbsolutePath());
return requestInfoUpdate;
@@ -66,7 +74,7 @@ public class SessionService {
public RequestInfoUpdate stopSession() {
RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate();
- if (currentPath == null) {
+ if (currentPath == null || !fileStore.isSessionStarted()) {
log.info("You need to start session first!");
requestInfoUpdate.setStatus(Status.Error);
requestInfoUpdate.setMessage("You need to start session first!");
@@ -75,8 +83,10 @@ public class SessionService {
log.info("Stopping session");
+ this.fileStore.setSessionStarted(false);
copyDirectories(requestInfoUpdate);
this.currentPath = null;
+ this.fileStore.clearFiles();
if (requestInfoUpdate.getStatus() == Status.Error) {
return requestInfoUpdate;
@@ -117,7 +127,11 @@ public class SessionService {
out.append(line).append(System.lineSeparator());
}
int statusCode = process.waitFor();
- log.info("Status code={}, output {}", statusCode, out);
+ if (statusCode != 0) {
+ log.info("Can't dump database, status code = {}. Make sure that pg-dump is installed or PostgreSQL version and pg-dump version is the same.", statusCode);
+ requestInfoUpdate.setStatus(Status.Error);
+ requestInfoUpdate.setMessage("Can't dump database, status code = " + statusCode);
+ }
} catch (IOException | InterruptedException e) {
log.info("Can't dump database, error={}", e.getMessage());
requestInfoUpdate.setStatus(Status.Error);
@@ -126,40 +140,45 @@ public class SessionService {
}
private void copyDirectories(RequestInfoUpdate requestInfoUpdate) {
- List directoriesToCopy = List.of(
- Paths.get(settings.getLocation().getDbfImporterFolder()),
- Paths.get(settings.getLocation().getDbfExporterFolder()),
- Paths.get(settings.getLocation().getSwtImporterFolder()),
- Paths.get(settings.getLocation().getSwtExporterFolder()),
- Paths.get(settings.getLocation().getXmlImporterFolder()),
- Paths.get(settings.getLocation().getXmlExporterFolder())
- );
+ Path dbfFolder = this.currentPath.resolve("dbf");
+ Path xmlFolder = this.currentPath.resolve("xml");
+ Path swtFolder = this.currentPath.resolve("swt");
+ try {
+ Files.createDirectories(dbfFolder);
+ Files.createDirectories(xmlFolder);
+ Files.createDirectories(swtFolder);
+ } catch (IOException e) {
+ log.info("Can't create directory, error={}", e.getMessage());
+ requestInfoUpdate.setStatus(Status.Error);
+ requestInfoUpdate.setMessage("Can't create directory, error = " + e.getMessage());
+ return;
+ }
- for (Path directory : directoriesToCopy) {
- if (!Files.exists(directory) || !Files.isDirectory(directory)) {
- log.info("{} is not a directory or does not exist.", directory.toAbsolutePath());
- requestInfoUpdate.setStatus(Status.Error);
- requestInfoUpdate.setMessage(directory.toAbsolutePath() + " is not a directory or does not exist.");
- return;
- }
+ List exportedFiles = this.fileStore.getFiles().stream()
+ .filter(f -> f.getStatus().equals(Status.Success))
+ .toList();
- Path target;
+ for (ExportedSDFFile file : exportedFiles) {
try {
- target = Files.createDirectories(this.currentPath.resolve(directory.getParent().getFileName().toString()).resolve(directory.getFileName().toString()));
+ if (file.getFileType().equals(FileType.DBF) && new File(file.getPath()).exists()) {
+ log.info("Copying from {} to {}", file.getPath(), dbfFolder.resolve(file.getFilename()));
+ Files.copy(Paths.get(file.getPath()), dbfFolder.resolve(file.getFilename()));
+ } else if (file.getFileType().equals(FileType.XML) && new File(file.getPath()).exists()) {
+ log.info("Copying from {} to {}", file.getPath(), xmlFolder.resolve(file.getFilename()));
+ Files.copy(Paths.get(file.getPath()), xmlFolder.resolve(file.getFilename()));
+ } else if (file.getFileType().equals(FileType.SWT) && new File(file.getPath()).exists()) {
+ log.info("Copying from {} to {}", file.getPath(), swtFolder.resolve(file.getFilename()));
+ Files.copy(Paths.get(file.getPath()), swtFolder.resolve(file.getFilename()));
+ } else {
+ log.info("File {} have wrong type {}", file.getPath(), file.getFileType());
+ requestInfoUpdate.setStatus(Status.Error);
+ requestInfoUpdate.setMessage("File " + file.getPath() + "have wrong type " + file.getFileType());
+ return;
+ }
} catch (IOException e) {
- log.info("Can't create directory, error={}", e.getMessage());
+ log.info("Can't copy file {}, error={}", file.getPath(), e.getMessage());
requestInfoUpdate.setStatus(Status.Error);
- requestInfoUpdate.setMessage("Can't create directory, error = " + e.getMessage());
- return;
- }
-
- try {
- log.info("Copying {} to {}", directory.toAbsolutePath(), target.toAbsolutePath());
- FileUtils.copyDirectory(directory.toFile(), target.toFile());
- } catch (IOException e) {
- log.info("Can't copy directory {}, error={}", directory, e.getMessage());
- requestInfoUpdate.setStatus(Status.Error);
- requestInfoUpdate.setMessage("Can't copy directory " + directory + ", error = " + e.getMessage());
+ requestInfoUpdate.setMessage("Can't copy file " + file.getPath() + ", error = " + e.getMessage());
return;
}
}
diff --git a/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/utils/FileStore.java b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/utils/FileStore.java
new file mode 100644
index 000000000..e5cee97be
--- /dev/null
+++ b/clearing-parent/snapshot-maker/src/main/java/ru/spcex/clearing/snapshot/maker/utils/FileStore.java
@@ -0,0 +1,39 @@
+package ru.spcex.clearing.snapshot.maker.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.springframework.stereotype.Component;
+import ru.spcex.clearing.platform.messaging.domain.cud.utilities.ExportedSDFFile;
+
+@Component
+public class FileStore {
+ private final List files;
+ private boolean isSessionStarted;
+
+ public FileStore() {
+ this.files = new ArrayList<>();
+ this.isSessionStarted = false;
+ }
+
+ public List getFiles() {
+ return files;
+ }
+
+ public void addFile(ExportedSDFFile file) {
+ if (isSessionStarted) {
+ files.add(file);
+ }
+ }
+
+ public void clearFiles() {
+ files.clear();
+ }
+
+ public boolean isSessionStarted() {
+ return isSessionStarted;
+ }
+
+ public void setSessionStarted(boolean sessionStarted) {
+ isSessionStarted = sessionStarted;
+ }
+}
diff --git a/clearing-parent/snapshot-maker/src/main/resources/application.properties b/clearing-parent/snapshot-maker/src/main/resources/application.properties
index 9bd5b6b5e..a2568f860 100644
--- a/clearing-parent/snapshot-maker/src/main/resources/application.properties
+++ b/clearing-parent/snapshot-maker/src/main/resources/application.properties
@@ -4,13 +4,7 @@ snapshot-maker.database.username=clearing
snapshot-maker.database.password=Aa111111
# Locations setting
-snapshot-maker.location.local-store=/mnt/c/Users/ivan/Desktop/snapshot-test/out
-snapshot-maker.location.dbf-importer-folder=/mnt/c/Users/ivan/Desktop/snapshot-test/in/dbf/importer
-snapshot-maker.location.dbf-exporter-folder=/mnt/c/Users/ivan/Desktop/snapshot-test/in/dbf/exporter
-snapshot-maker.location.swt-importer-folder=/mnt/c/Users/ivan/Desktop/snapshot-test/in/swt/importer
-snapshot-maker.location.swt-exporter-folder=/mnt/c/Users/ivan/Desktop/snapshot-test/in/swt/exporter
-snapshot-maker.location.xml-importer-folder=/mnt/c/Users/ivan/Desktop/snapshot-test/in/xml/importer
-snapshot-maker.location.xml-exporter-folder=/mnt/c/Users/ivan/Desktop/snapshot-test/in/xml/exporter
+snapshot-maker.store-location=/mnt/c/Users/ivan/Desktop/snapshot-test/out
# Kafka producer settings
snapshot-maker.kafka-producer.bootstrap-servers=localhost:9092
diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java
index cac9e5189..9ba50ad32 100644
--- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java
+++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java
@@ -1,22 +1,10 @@
package ru.spcex.clearing.swt.exporter.services;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import ru.clearing.classes.statics.data.misc.Session;
-import ru.spcex.clearing.imdg.IMDGDistributedNames;
-import ru.spcex.clearing.platform.messaging.domain.cud.importexport.SwtExporterRequest;
-import ru.spcex.clearing.platform.messaging.domain.cud.utilities.JournalEventExportedRequest;
-import ru.spcex.clearing.platform.messaging.serialization.LogFormatter;
-import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
-import ru.spcex.clearing.swt.exporter.util.ConvertionContext;
-import ru.spcex.clearing.swt.exporter.util.SWTHeaderData;
-import ru.spcex.platform.classes.base.SpcexObjectBase;
-import ru.spcex.platform.enumeration.ResultStatuses;
-import ru.spcex.platform.enumeration.SwtTable;
-import ru.spcex.platform.imdg.api.Imdg;
-import ru.spcex.platform.imdg.api.ImdgProvider;
+import static ru.spcex.clearing.platform.messaging.domain.Consts.FILE_CREATED;
+import static ru.spcex.clearing.platform.messaging.domain.Consts.JOURNAL_SERVICE;
import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.nio.charset.Charset;
@@ -25,8 +13,24 @@ import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.Objects;
import java.util.Optional;
-
-import static ru.spcex.clearing.platform.messaging.domain.Consts.JOURNAL_SERVICE;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import ru.clearing.classes.statics.data.misc.Session;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
+import ru.spcex.clearing.platform.messaging.domain.cud.importexport.SwtExporterRequest;
+import ru.spcex.clearing.platform.messaging.domain.cud.utilities.ExportedSDFFile;
+import ru.spcex.clearing.platform.messaging.domain.cud.utilities.JournalEventExportedRequest;
+import ru.spcex.clearing.platform.messaging.serialization.LogFormatter;
+import ru.spcex.clearing.platform.messaging.service.FileType;
+import ru.spcex.clearing.platform.messaging.service.Status;
+import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
+import ru.spcex.clearing.swt.exporter.util.ConvertionContext;
+import ru.spcex.clearing.swt.exporter.util.SWTHeaderData;
+import ru.spcex.platform.classes.base.SpcexObjectBase;
+import ru.spcex.platform.enumeration.ResultStatuses;
+import ru.spcex.platform.enumeration.SwtTable;
+import ru.spcex.platform.imdg.api.Imdg;
+import ru.spcex.platform.imdg.api.ImdgProvider;
public abstract class AbstractExporterService {
protected final Logger log = LoggerFactory.getLogger(getClass());
@@ -83,7 +87,8 @@ public abstract class AbstractExporterService {
makeSWTData(swtHeaderData, records, outBuffer);
data = outBuffer.toByteArray();
}
- fileStorage.saveFile(fileName, data);
+ File createdFile = fileStorage.saveFile(fileName, data);
+ sendFileCreatedNotification(createdFile);
} catch (Exception e) { // IOException, ...
log.error("Failed export {} file", fileName);
sendSwtExportedNotification(exportAt, null, ResultStatuses.notSuccess);
@@ -105,6 +110,16 @@ public abstract class AbstractExporterService {
protected abstract String getDocumentNameForJournal();
+ void sendFileCreatedNotification(File file) {
+ ExportedSDFFile exportedSDFFile = new ExportedSDFFile();
+ exportedSDFFile.setStatus(Status.Success);
+ exportedSDFFile.setFileType(FileType.SWT);
+ exportedSDFFile.setFilename(file.getName());
+ exportedSDFFile.setPath(file.getAbsolutePath());
+ log.debug("Send message to kafka \"{}\": {}", FILE_CREATED, LogFormatter.toStringWrapper(exportedSDFFile));
+ kafkaSender.sendRequestToQueue(FILE_CREATED, exportedSDFFile);
+ }
+
void sendSwtExportedNotification(LocalDateTime registrationAt, Long registrationNumber, ResultStatuses resultStatus) {
JournalEventExportedRequest exportedRequest = new JournalEventExportedRequest();
exportedRequest.setRegistratoinDate(registrationAt.toLocalDate());
diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/FileStorage.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/FileStorage.java
index b75949e88..52404c20d 100644
--- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/FileStorage.java
+++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/FileStorage.java
@@ -37,7 +37,7 @@ public class FileStorage {
this.gateway = gateway;
}
- public void saveFile(String fileName, byte[] data) throws IOException {
+ public File saveFile(String fileName, byte[] data) throws IOException {
File toFile = new File(outPath, fileName);
FileUtils.writeByteArrayToFile(toFile, data);
if (gateway == null) {
@@ -46,5 +46,6 @@ public class FileStorage {
log.debug("sftp is enabled. sending {}", toFile.getAbsolutePath());
gateway.sendToSftp(toFile);
}
+ return toFile;
}
}
diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java
index 3ef59e05a..b2f0fb3a1 100644
--- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java
+++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java
@@ -61,6 +61,7 @@ public enum Task implements IEnumKey {
makeFiles_MTCR("MTCR"), // Формирование файлов с МТКР
startSessionSnapshot("STSS"), // Старт формирования снэпшота сессии
stopSessionSnapshot("SPSS"), // Завершение формирования снэпшота сессии
+ fileCreated("FCRD"), // SDF файл создан
;
private final String key;
diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java
index 293950cc9..cc3b12077 100644
--- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java
+++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java
@@ -161,6 +161,7 @@ public interface Consts {
String BALANCE_ACCOUNT_UPDATE = "balance-account-update";
String CONTINUE_CLEARING = "continue-clearing";
String LAUNCHER_NEW = "launcher-new";
+ String FILE_CREATED = "file-created";
String DESTINATION_DEPO_ACCOUNT_SYMBOLS_NEW = "depo-accounts-symbols-new";
String DESTINATION_DEPO_ACCOUNT_SYMBOLS_DELETE = "depo-accounts-symbols-delete";
diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/ExportedSDFFile.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/ExportedSDFFile.java
new file mode 100644
index 000000000..5bc838338
--- /dev/null
+++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/ExportedSDFFile.java
@@ -0,0 +1,58 @@
+package ru.spcex.clearing.platform.messaging.domain.cud.utilities;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import ru.spcex.clearing.platform.messaging.service.FileType;
+import ru.spcex.clearing.platform.messaging.service.Status;
+
+public class ExportedSDFFile {
+ @JsonProperty
+ private Status status;
+ @JsonProperty
+ private FileType fileType;
+ @JsonProperty
+ private String filename;
+ @JsonProperty
+ private String path;
+
+ public Status getStatus() {
+ return status;
+ }
+
+ public void setStatus(Status status) {
+ this.status = status;
+ }
+
+ public FileType getFileType() {
+ return fileType;
+ }
+
+ public void setFileType(FileType fileType) {
+ this.fileType = fileType;
+ }
+
+ public String getFilename() {
+ return filename;
+ }
+
+ public void setFilename(String filename) {
+ this.filename = filename;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ @Override
+ public String toString() {
+ return "ExportedSDFFile{" +
+ "status=" + status +
+ ", fileType=" + fileType +
+ ", filename='" + filename + '\'' +
+ ", path='" + path + '\'' +
+ '}';
+ }
+}
diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/FileType.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/FileType.java
new file mode 100644
index 000000000..ecc535ac0
--- /dev/null
+++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/FileType.java
@@ -0,0 +1,7 @@
+package ru.spcex.clearing.platform.messaging.service;
+
+public enum FileType {
+ DBF,
+ SWT,
+ XML
+}