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());