From a98261219091d6e8d0c853affccc65674ebda505 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Thu, 14 Oct 2021 11:49:01 +0200 Subject: [PATCH] =?UTF-8?q?Cargosoft=20Export=20-=20Maximale=20Dateigr?= =?UTF-8?q?=C3=B6=C3=9Fe=2010MB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CargosoftExportAdapter.java | 28 ++++++++++++++++++- .../com/alexanderlogistics/FTPConnector.java | 2 ++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java index 46a25a6..a5e780c 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftExportAdapter.java @@ -50,6 +50,10 @@ public class CargosoftExportAdapter implements SignalAdapter { public static final String REPORT_ERROR = "REPORT_ERROR"; public static final String CONFIG_ERROR = "CONFIG_ERROR"; + @Inject + @ConfigProperty(name = FTPConnector.ENV_EXPORT_FTP_MAX_ATTACHMENT_SIZED, defaultValue = "10485760") + long maxAttachmentSize; + private static Logger logger = Logger.getLogger(CargosoftExportAdapter.class.getName()); @Inject @@ -123,6 +127,11 @@ public class CargosoftExportAdapter implements SignalAdapter { /** * This method lookups the origin snapshot data and add the content of the $file * to the export document + *

+ * Change 14.10.2021 - Wir senden maximal 5MB and Daten, da die Cargosoft + * Schnittstelle größere Datensätze mit großen Dateianhängen einfach verschluckt + * ohne eine Fehlermeldugn zu liefern. + * * * @param document * @return @@ -150,8 +159,25 @@ public class CargosoftExportAdapter implements SignalAdapter { List fileDataList = snapshot.getFileData(); // transfer origin file content result.removeItem("$file"); + long currentAttachmentSize = 0; + // we do only accept .pdf files and a maximum size of 10MB for (FileData filedata : fileDataList) { - result.addFileData(filedata); + if (filedata.getName().toLowerCase().endsWith(".pdf")) { + // test if the size of the file is below the + // "cargosoft.export.ftp.maxattachmentsize" + if ((currentAttachmentSize + filedata.getContent().length) > maxAttachmentSize) { + long maxSizeInMB = maxAttachmentSize / 1024 / 1024; + String message = "Attachment '" + filedata.getName() + + "' can not be exported to cargosoft - max file size exeeded (" + maxSizeInMB + + "MB)!"; + logger.warning(message); + // add comment + document.setItemValue("txtComment", message); + } else { + result.addFileData(filedata); + currentAttachmentSize = currentAttachmentSize + filedata.getContent().length; + } + } } } else { logger.warning("...did not found snapshot for origin workitem " + origin.getUniqueID()); diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/FTPConnector.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/FTPConnector.java index faa3e9f..c3b08bb 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/FTPConnector.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/FTPConnector.java @@ -58,6 +58,8 @@ public class FTPConnector { public static final String ENV_EXPORT_FTP_PORT = "cargosoft.export.ftp.port"; public static final String ENV_EXPORT_FTP_USER = "cargosoft.export.ftp.user"; public static final String ENV_EXPORT_FTP_PASSWORD = "cargosoft.export.ftp.password"; + + public static final String ENV_EXPORT_FTP_MAX_ATTACHMENT_SIZED = "cargosoft.export.ftp.maxattachmentsize"; private static Logger logger = Logger.getLogger(FTPConnector.class.getName());