aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/a1pesimulator/service/fileready/FtpServerService.java
diff options
context:
space:
mode:
authorStanislav Marszalek <s.marszalek2@partner.samsung.com>2021-07-09 09:41:08 +0200
committerStanislav Marszalek <s.marszalek2@partner.samsung.com>2021-07-28 13:47:46 +0200
commit0b06291c6c0c6f8f1e8240c8c6b1175648a177aa (patch)
tree6a0a50a7836727dbe96259282550679876186219 /src/main/java/org/onap/a1pesimulator/service/fileready/FtpServerService.java
parentde818385611ad0afb133996a4afe5b1b00ab1c57 (diff)
O1 PM Bulk support - collecting events, basic structure for PM Bulk File creation
Issue-ID: INT-1945 Signed-off-by: Stanislav Marszalek <s.marszalek2@partner.samsung.com> Change-Id: If08908035719798d8d7b129ddcdb6ef62f1787fe
Diffstat (limited to 'src/main/java/org/onap/a1pesimulator/service/fileready/FtpServerService.java')
-rw-r--r--src/main/java/org/onap/a1pesimulator/service/fileready/FtpServerService.java103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/main/java/org/onap/a1pesimulator/service/fileready/FtpServerService.java b/src/main/java/org/onap/a1pesimulator/service/fileready/FtpServerService.java
new file mode 100644
index 0000000..56735fd
--- /dev/null
+++ b/src/main/java/org/onap/a1pesimulator/service/fileready/FtpServerService.java
@@ -0,0 +1,103 @@
+package org.onap.a1pesimulator.service.fileready;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+
+import org.onap.a1pesimulator.data.fileready.FileData;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Service;
+
+import reactor.core.publisher.Mono;
+
+@Service
+@PropertySource("classpath:application.properties")
+public class FtpServerService {
+
+ private static final Logger log = LoggerFactory.getLogger(FtpServerService.class);
+
+ @Value("${ftp.server.url}")
+ private String ftpServerUrl;
+
+ @Value("${ftp.server.protocol}")
+ private String ftpServerProtocol;
+
+ @Value("${ftp.server.port}")
+ private String ftpServerPort;
+
+ @Value("${ftp.server.filepath}")
+ private String ftpServerFilepath;
+
+ @Value("${ftp.server.username}")
+ private String ftpServerUsername;
+
+ @Value("${ftp.server.password}")
+ private String ftpServerPassword;
+
+ public Mono<FileData> uploadFileToFtp(FileData fileData) {
+ return Mono.just(fileData)
+ .flatMap(this::tryToCompressFile)
+ .flatMap(this::tryToUploadFileToFtp)
+ .onErrorResume(throwable -> resumeError(throwable, fileData))
+ .doOnNext(file -> deletePMBulkFile(file.getPmBulkFile()));
+ }
+
+ /**
+ * Trying to compress file into .gz
+ *
+ * @param fileData file to be archived
+ * @return archived file
+ */
+ private Mono<FileData> tryToCompressFile(FileData fileData) {
+ fileData.setArchivedPmBulkFile(fileData.getPmBulkFile());
+ return Mono.just(fileData);
+ }
+
+ /**
+ * Upload file to FTP
+ *
+ * @param fileData archived file in Mono
+ * @return archived file for fileReadyEvent
+ */
+ private Mono<FileData> tryToUploadFileToFtp(FileData fileData) {
+ return Mono.just(fileData);
+ }
+
+
+ /**
+ * Deletes created PM Bulk File xml from temp storage after successful upload to FTP
+ *
+ * @param file file which we gonna delete
+ */
+ public static void deletePMBulkFile(File file) {
+ try {
+ log.trace("Deleting file: {}", file.getAbsoluteFile());
+ Files.delete(file.toPath());
+ } catch (IOException e) {
+ log.warn("Could not delete file: {}", file.getName(), e);
+ }
+ }
+
+ /**
+ * Get path to FTP server
+ *
+ * @return for example: "sftp://foo:pass@106.120.119.170:2222/upload/"
+ */
+ public String getFtpPath() {
+ return ftpServerProtocol + "://" + ftpServerUsername + ":" + ftpServerPassword + "@" + ftpServerUrl + ":" + ftpServerPort + "/" + ftpServerFilepath
+ + "/";
+ }
+
+ /**
+ * Try to clean up things after an exception
+ */
+ private Mono<FileData> resumeError(Throwable throwable, FileData fileData) {
+ log.error("Error occurs while uploading file to FTP server", throwable);
+ deletePMBulkFile(fileData.getPmBulkFile());
+ deletePMBulkFile(fileData.getArchivedPmBulkFile());
+ return Mono.empty();
+ }
+}