From 046a9bc4e75fd24a46915e6d338ebeb0c89f36a4 Mon Sep 17 00:00:00 2001
From: "Zickermann, Jan" <jan.zickermann@dataport.de>
Date: Wed, 8 May 2024 08:44:11 +0200
Subject: [PATCH] OZG-5413 xta: Fix number of files

---
 .../java/de/ozgcloud/eingang/xta/XtaMessageMapper.java    | 8 ++++----
 .../de/ozgcloud/eingang/xta/XtaMessageMapperTest.java     | 7 +++++++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java
index 8a4735345..af561ff94 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java
@@ -11,9 +11,10 @@ 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.vorgang.VorgangNummerSupplier;
+import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper;
 import de.ozgcloud.eingang.xdomea.XdomeaMessageData;
 
-@Mapper
+@Mapper(imports = FilesMapperHelper.class)
 interface XtaMessageMapper {
 	int VORGANG_NUMMER_SUFFIX_LENGTH = 4;
 
@@ -22,9 +23,8 @@ interface XtaMessageMapper {
 	@Mapping(target = "id", ignore = true)
 	@Mapping(target = "zustaendigeStelle", ignore = true)
 	@Mapping(target = "header", source = "metaData")
-	@Mapping(target = "numberOfAttachments", ignore = true)
-	// TODO: Eine Lösung, bei der fromData nicht zweimal gebaut wird wäre gut
-	@Mapping(target = "numberOfRepresentations", dependsOn = "representations", expression = "java(formData.build().getRepresentations().size())")
+	@Mapping(target = "numberOfAttachments", expression = "java(FilesMapperHelper.countAttachedFiles(xdomeaMessageData.attachments()))")
+	@Mapping(target = "numberOfRepresentations", dependsOn = "representations", expression = "java(getRepresentations(xdomeaMessageData).size())")
 	@Mapping(target = "representations", source = "xdomeaMessageData")
 	@Mapping(target = "representation", ignore = true)
 	@Mapping(target = "attachment", ignore = true)
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java
index d96b24823..b9bcda822 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java
@@ -46,6 +46,13 @@ class XtaMessageMapperTest {
 			assertThat(formData.getRepresentations()).containsExactly(xdomeaMessageData.metadataFile(), xdomeaMessageData.representations().getFirst());
 		}
 
+		@Test
+		void shouldSetNumberOfAttachments() {
+			var formData = doMapping();
+
+			assertThat(formData.getNumberOfAttachments()).isEqualTo(1);
+		}
+
 		@Test
 		void shouldSetNumberOfRepresentations() {
 			var formData = doMapping();
-- 
GitLab