From 83756293edc947fbdfa0e43e2e924501691d8ae5 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Wed, 3 Jul 2024 12:21:43 +0200
Subject: [PATCH] OZG-5156 Accept FIM messages in XTA adapter

---
 .../eingang/xta/FimMessageMapper.java         | 38 +++++++++++++++++++
 .../de/ozgcloud/eingang/xta/XtaService.java   | 10 ++---
 2 files changed, 42 insertions(+), 6 deletions(-)
 create mode 100644 xta-adapter/src/main/java/de/ozgcloud/eingang/xta/FimMessageMapper.java

diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/FimMessageMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/FimMessageMapper.java
new file mode 100644
index 000000000..0bd2ef454
--- /dev/null
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/FimMessageMapper.java
@@ -0,0 +1,38 @@
+package de.ozgcloud.eingang.xta;
+
+import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.formdata.FormHeader;
+import de.ozgcloud.eingang.common.formdata.IncomingFile;
+
+import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
+import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import static de.ozgcloud.eingang.xta.XtaMessageMapper.VORGANG_NUMMER_SUFFIX_LENGTH;
+
+@Component
+public class FimMessageMapper {
+
+    /*
+     * FIXME: This is only a quick and dirty implementation for a fim message mapper
+     */
+    public FormData toFormData(final XtaMessageMetaData metaData, final VorgangNummerSupplier vorgangNummerSupplier, final Collection<IncomingFile> incomingFileList) {
+        return FormData.builder()
+                .header(FormHeader.builder()
+                        .formId(metaData.getMessageType())
+                        .requestId(metaData.getMessageId().toString())
+                        .createdAt(metaData.getOrigin())
+                        .vorgangNummer(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH))
+                        .sender("XTA")
+                        .build())
+                .numberOfAttachments(incomingFileList.size())
+                .attachments(Collections.singleton(IncomingFileGroup.builder()
+                        .name("fim_files")
+                        .files(incomingFileList)
+                        .build()))
+                .build();
+    }
+}
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
index a08710f9a..dd3b1daf0 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
@@ -31,6 +31,8 @@ class XtaService {
 	@Autowired
 	private XdomeaMessageDataMapper xdomeaMessageDataMapper;
 	@Autowired
+	private FimMessageMapper fimMessageMapper;
+	@Autowired
 	private XtaIncomingFilesMapper xtaIncomingFilesMapper;
 
 	public Stream<FormData> getMessages() {
@@ -43,10 +45,6 @@ class XtaService {
 	}
 
 	boolean isSupportedMessageType(XtaMessageMetaData metaData) {
-		if (StringUtils.equals(metaData.getMessageType(), XDOMEA_0201_MESSAGE_TYPE)) {
-			return true;
-		}
-
 		if (StringUtils.startsWith(metaData.getMessageType(), ALL_FIM_MESSAGES_PREFIX)) {
 			return true;
 		}
@@ -58,9 +56,9 @@ class XtaService {
 	public FormData getFormData(@NonNull XtaMessageMetaData metaData) {
 		var msg = remoteService.getMessage(metaData.getMessageId());
 		var incomingFiles = xtaIncomingFilesMapper.toIncomingFiles(msg.getMessageFiles());
-		var xdomeaMessageData = xdomeaMessageDataMapper.mapIncomingFilesToXdomeaMessageData(incomingFiles);
 
-		return mapper.toFormData(xdomeaMessageData, metaData, vorgangNummerSupplier);
+		// FIXME should be called based on messageType and not hard coded
+		return fimMessageMapper.toFormData(metaData, vorgangNummerSupplier, incomingFiles);
 	}
 
 	public void acknowledgeReceive(@NonNull XtaMessageId messageId) {
-- 
GitLab