From f9fbedbe8e80b50571b564bd379488fe252abba4 Mon Sep 17 00:00:00 2001 From: OZG-Cloud Team <noreply@ozg-sh.de> Date: Tue, 28 May 2024 15:32:29 +0200 Subject: [PATCH] OZG-5412 intelliform-adapter: Fix duplicate key --- .../intelliform/DepositDataMapper.java | 11 ++++--- .../intelliform/DepositDataMapperTest.java | 30 +++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java index 5964b4ce..15999aef 100644 --- a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java @@ -25,6 +25,7 @@ package de.ozgcloud.eingang.intelliform; import java.io.IOException; import java.util.Collection; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -90,12 +91,14 @@ class DepositDataMapper { .build(); } - private Map<String, IncomingFile> mapDepositAttachmentsToIncomingFiles(DepositData depositData) { + Map<String, IncomingFile> mapDepositAttachmentsToIncomingFiles(DepositData depositData) { return depositData.getAttachments() .stream() - .collect( - Collectors.toMap(Attachment::getId, this::mapAttachmentToIncomingFile) - ); + .collect(Collectors.toMap( + Attachment::getId, + this::mapAttachmentToIncomingFile, + (u, v) -> v, + LinkedHashMap::new)); } IncomingFile mapAttachmentToIncomingFile(Attachment attachment) { diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java index d189c43a..52492124 100644 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java @@ -136,6 +136,36 @@ class DepositDataMapperTest { } + @DisplayName("map deposit attachments to incoming files") + @Nested + class TestMapDepositAttachmentsToIncomingFiles { + @DisplayName("should keep entry order") + @Test + void shouldKeepEntryOrder() { + var depositData = DepositDataTestFactory.create(ATTACHMENTS); + + var incomingFileMap = mapper.mapDepositAttachmentsToIncomingFiles(depositData); + + var keys = incomingFileMap.keySet().stream().toList(); + assertThat(keys).containsExactly(XML_ATTACHMENT_ID, PDF_ATTACHMENT_ID, PNG_ATTACHMENT_ID); + } + + @DisplayName("should keep last entry for duplicate key") + @Test + void shouldKeepLastEntryForDuplicateKey() { + var depositData = DepositDataTestFactory.create(List.of( + AttachmentTestFactory.createXmlDaten(), + AttachmentTestFactory.createPdf(), + AttachmentTestFactory.createXmlDaten() + )); + + var incomingFileMap = mapper.mapDepositAttachmentsToIncomingFiles(depositData); + + var keys = incomingFileMap.keySet().stream().toList(); + assertThat(keys).containsExactly(XML_ATTACHMENT_ID, PDF_ATTACHMENT_ID); + } + } + @DisplayName("map attachment to incoming file") @Nested class TestMapAttachmentToIncomingFile { -- GitLab