diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java b/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java index d372f1a0d86b24281c14dc744074d9c79d9fbbe5..f14139f0c99ecc8e93fe50487b3ac5ab9cdc3af0 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java +++ b/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java @@ -45,6 +45,7 @@ public class FormSolutionsTestFactory { public static final String ZUSTAENDIGE_STELLE_VALUE = "zustaendigeStelle"; public static final String POSTFACH_ID_STELLE = "51522620-03d2-4507-b1f0-08d86920efed"; public static final String FORM_ID_VALUE = "KFAS_KOP_TEST-yCkgCdqG"; + // TODO vereinfachen und in Datei(en acken public static final String SIMPLE_JSON_DATA = "{\"assistant\": " + "{\"identifier\":\"" + IDENTIFIER_VALUE + "\",\n" + "\"panels\": [{\"identifier\":\"" + PANEL_ID + "\",\n" diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java index 2f8aed6556d98f947481a6eac311288457b0aa5d..5639a6000256bcbffa897c137be62ac6323a033b 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java +++ b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java @@ -28,6 +28,7 @@ import java.util.UUID; import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; interface FormSolutionsFileMapper { + // TODO auf utils Klasse umstellen - interface abschaffen default IncomingFile mapFile(byte[] data, String contentType, String fileName) { return IncomingFile.builder() .content(data) diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java index 5a38b0661eece1053f78247321e1489364769121..870f47e40b3dfc7f19484f87634fb863cd96177d 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java +++ b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java @@ -23,10 +23,6 @@ */ package de.itvsh.kop.eingangsadapter.formsolutions; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsAttachmentsMapper.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsRepresentationsMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; - import java.util.Map; import java.util.Optional; @@ -39,9 +35,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import de.itvsh.kop.common.errorhandling.TechnicalException; import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.itvsh.kop.eingangsadapter.semantik.FormDataUtils; +import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; @Component class FormSolutionsRequestMapper { + static final TypeReference<Map<String, Object>> VALUE_TYPE_REF = new TypeReference<Map<String, Object>>() { + }; + @Autowired private FormSolutionsAttachmentsMapper attachmentMapper; @@ -53,31 +54,39 @@ class FormSolutionsRequestMapper { public FormData map(String json) { var formData = mapRequestJson(json); + return mapFiles(formData, json); - formData.getFormData().put(MAPPED_FILES, Map.of( - ATTACHMENTS, attachmentMapper.mapAttachments(formData.getFormData()), - REPRESENTATIONS, representationMapper.mapRepresentations(formData.getFormData(), Optional.of(json)))); - - return removeProcessedData(formData); } private FormData mapRequestJson(String json) { + + return FormData.builder() + .formData(mapFormData(json)) + .build(); + + } + + Map<String, Object> mapFormData(String json) { try { - return FormData.builder().formData(objectMapper.readValue(json, new TypeReference<Map<String, Object>>() { - })).build(); + return objectMapper.readValue(json, VALUE_TYPE_REF); } catch (JsonProcessingException e) { throw new TechnicalException("Error parsing JSON from FormSolutions-Server", e); } } -//TEST - private FormData removeProcessedData(FormData formData) { - Map<String, Object> data = formData.getFormData(); -//TODO immutable berucksichtigen - data.remove(ZIP); - data.remove(PDF); - data.remove(JSON); + FormData mapFiles(FormData formData, String json) { + return FormDataUtils.from(formData) + .put(AbstractFileMapper.FIELD_NAME_MAPPED_FILES, buildMappedFiles(formData, json)) + .remove(FormSolutionsAttachmentsMapper.ZIP) + .remove(FormSolutionsRepresentationsMapper.PDF) + .build(); - return formData.toBuilder().formData(data).build(); } + + private Map<String, Object> buildMappedFiles(FormData formData, String json) { + return Map.of( + AbstractFileMapper.ATTACHMENTS, attachmentMapper.mapAttachments(formData.getFormData()), + AbstractFileMapper.REPRESENTATIONS, representationMapper.mapRepresentations(formData.getFormData(), Optional.of(json))); + } + } \ No newline at end of file diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java index 6f4fb6b1e263ba23912017ded35a96db0128d3a4..d2237c4c57206153f731020d975568033bdf39e4 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java +++ b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java @@ -34,11 +34,14 @@ import static org.mockito.Mockito.*; import java.util.List; import java.util.Map; +import java.util.Optional; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.Spy; import com.fasterxml.jackson.core.JsonProcessingException; @@ -47,7 +50,8 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; +import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; import de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper; class FormSolutionsRequestMapperTest { @@ -56,10 +60,10 @@ class FormSolutionsRequestMapperTest { @Spy @InjectMocks - private FormSolutionsRequestMapper mapper = new FormSolutionsRequestMapper(); + private FormSolutionsRequestMapper mapper; @Mock - private FormSolutionsAttachmentsMapper attachmentsMapper; + private FormSolutionsAttachmentsMapper attachmentMapper; @Mock private FormSolutionsRepresentationsMapper representationsMapper; @@ -70,153 +74,179 @@ class FormSolutionsRequestMapperTest { class TestJsonToMapMapping { @Test void shouldMap() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); assertThat(dataMap).isNotNull(); } - @Test - void shouldNotFillSemantikFields() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); - - assertThat(dataMap.getZustaendigeStelle()).isNull(); - assertThat(dataMap.getAntragsteller()).isNull(); - assertThat(dataMap.getHeader()).isNull(); - } - @Test void shouldContainZustaendigeStelle() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - assertThat((String) dataMap.getFormData().get(ZUSTAENDIGE_STELLE)).isEqualTo(ORGANISATIONSEINHEITEN_ID); + assertThat((String) dataMap.get(ZUSTAENDIGE_STELLE)).isEqualTo(ORGANISATIONSEINHEITEN_ID); } @Test void shouldContainAnsprechpartner() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - assertThat((String) dataMap.getFormData().get(POSTKORBHANDLE)).isEqualTo(POSTFACH_ID); + assertThat((String) dataMap.get(POSTKORBHANDLE)).isEqualTo(POSTFACH_ID); } @Test void shouldContainRequestId() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - assertThat((String) dataMap.getFormData().get(TRANSACTION_ID)).isEqualTo(FORM_ID_VALUE); + assertThat((String) dataMap.get(TRANSACTION_ID)).isEqualTo(FORM_ID_VALUE); } @Test void shouldContainAssitant() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - assertThat(dataMap.getFormData().get(ASSISTANT)).isNotNull(); + assertThat(dataMap.get(ASSISTANT)).isNotNull(); } - @SuppressWarnings("unchecked") @Test void shouldHandleJsonException() throws JsonMappingException, JsonProcessingException { - doThrow(JsonProcessingException.class).when(objectMapper).readValue(anyString(), any(TypeReference.class)); + doThrow(JsonProcessingException.class).when(objectMapper).readValue(anyString(), Mockito.<TypeReference<Map<String, Object>>>any()); - assertThatThrownBy(() -> mapper.map(SIMPLE_JSON_DATA)).isInstanceOf(TechnicalException.class); + assertThatThrownBy(() -> mapper.mapFormData(SIMPLE_JSON_DATA)).isInstanceOf(TechnicalException.class); } @Test @SuppressWarnings("unchecked") void shouldContainFormIdentifier() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - assertThat((String) ((Map<String, Object>) dataMap.getFormData().get(ASSISTANT)) + assertThat((String) ((Map<String, Object>) dataMap.get(ASSISTANT)) .get(IDENTIFIER)) .isEqualTo(IDENTIFIER_VALUE); } - @Test - void shouldRemoveZip() { - var dataMap = mapper.map(ATTACHMENTS_JSON); + @Nested + class TestPanels { + @Test + void shouldContainPanels() { + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - assertThat(dataMap.getFormData().get(FormSolutionsAttachmentsMapper.ZIP)).isNull(); - } + assertThat(getPanels(dataMap)).isNotNull(); + } - @Test - void shouldRemovePdf() { - var dataMap = mapper.map(ATTACHMENTS_JSON); + @Test + void shouldContainPanelIdentifier() { + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - assertThat(dataMap.getFormData().get(FormSolutionsRepresentationsMapper.PDF)).isNull(); - } + assertThat(getPanels(dataMap).get(0)).containsEntry(IDENTIFIER, PANEL_ID); + } - } + @Test + void shouldContainPanelComponets() { + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - @Nested - class TestPanels { - @Test - void shouldContainPanels() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + assertThat(getPanels(dataMap).get(0).get(FormSolutionsPanelMapper.COMPONENTS)).isNotNull(); + } - assertThat(getPanels(dataMap)).isNotNull(); - } + @Test + void shouldContainTextComponets() { + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - @Test - void shouldContainPanelIdentifier() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + assertThat(getComponents(dataMap).get(0)) + .containsEntry(IDENTIFIER, COMPONENT_ID) + .containsEntry(STRING_VALUE, COMPONENT_VALUE); + } - assertThat(getPanels(dataMap).get(0)).containsEntry(IDENTIFIER, PANEL_ID); - } + @Test + void shouldContainDateComponets() { + var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - @Test - void shouldContainPanelComponets() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + assertThat(getComponents(dataMap).get(1)) + .containsEntry(IDENTIFIER, DATE_COMPONENT_ID) + .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); + } - assertThat(getPanels(dataMap).get(0).get(FormSolutionsPanelMapper.COMPONENTS)).isNotNull(); - } + @Nested + class TestNestedPanels { + @Test + void shouldContainGroup() { + var dataMap = mapper.mapFormData(NESTED_COMPONENTS_JSON); - @Test - void shouldContainTextComponets() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + assertThat(getComponents(dataMap).get(0)).containsEntry(IDENTIFIER, OBJEKTGRUPPE_0); + } - assertThat(getComponents(dataMap).get(0)).containsEntry(IDENTIFIER, COMPONENT_ID); - assertThat(getComponents(dataMap).get(0)).containsEntry(STRING_VALUE, COMPONENT_VALUE); + @Test + void shouldContainDateField() { + var dataMap = mapper.mapFormData(NESTED_COMPONENTS_JSON); + + assertThat(getNestedComponents(dataMap).get(0)) + .containsEntry(IDENTIFIER, DATE_COMPONENT_ID) + .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); + } + } } - @Test - void shouldContainDateComponets() { - var dataMap = mapper.map(SIMPLE_JSON_DATA); + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getComponents(Map<String, Object> dataMap) { + return (List<Map<String, Object>>) getPanels(dataMap).get(0).get(COMPONENTS); + } - assertThat(getComponents(dataMap).get(1)).containsEntry(IDENTIFIER, DATE_COMPONENT_ID); - assertThat(getComponents(dataMap).get(1)).containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getNestedComponents(Map<String, Object> dataMap) { + return (List<Map<String, Object>>) ((List<Map<String, Object>>) getPanels(dataMap).get(0).get(COMPONENTS)).get(0).get(COMPONENTS); } + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getPanels(Map<String, Object> dataMap) { + return (List<Map<String, Object>>) ((Map<String, Object>) dataMap.get(ASSISTANT)).get(PANELS); + } + } + + @Nested + class TestFileMapping { + @Nested - class TestNestedPanels { + class TestMapFiles { @Test - void shouldContainGroup() { - var dataMap = mapper.map(NESTED_COMPONENTS_JSON); + void shouldCallAttachmentMappers() { + mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - assertThat(getComponents(dataMap).get(0)).containsEntry(IDENTIFIER, OBJEKTGRUPPE_0); + verify(attachmentMapper).mapAttachments(Mockito.<Map<String, Object>>any()); } + @DisplayName("result should have mapped files field") @Test - void shouldContainDateField() { - var dataMap = mapper.map(NESTED_COMPONENTS_JSON); + void shouldHaveMappedFilesField() { + var result = mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - assertThat(getNestedComponents(dataMap).get(0)).containsEntry(IDENTIFIER, DATE_COMPONENT_ID); - assertThat(getNestedComponents(dataMap).get(0)).containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); + assertThat(result.getFormData()).containsKey(AbstractFileMapper.FIELD_NAME_MAPPED_FILES); } - } - } - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getPanels(FormData dataMap) { - return (List<Map<String, Object>>) ((Map<String, Object>) dataMap.getFormData().get(ASSISTANT)).get(PANELS); - } + @Test + void shouldCallRepresentationMapper() { + mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getComponents(FormData dataMap) { - return (List<Map<String, Object>>) getPanels(dataMap).get(0).get(COMPONENTS); - } + verify(representationsMapper).mapRepresentations(Mockito.<Map<String, Object>>any(), eq(Optional.of(ATTACHMENTS_JSON))); + } + + @Test + void shouldRemoveZip() { + var formData = FormDataTestFactory.withFormDataMaps(Map.of(FormSolutionsAttachmentsMapper.ZIP, "test")); + + var dataMap = mapper.mapFiles(formData, ATTACHMENTS_JSON); + + assertThat(dataMap.getFormData()).doesNotContainKey(FormSolutionsAttachmentsMapper.ZIP); + } + + @Test + void shouldRemovePdf() { + var formData = FormDataTestFactory.withFormDataMaps(Map.of(FormSolutionsRepresentationsMapper.PDF, "test")); + + var dataMap = mapper.mapFiles(formData, ATTACHMENTS_JSON); + + assertThat(dataMap.getFormData()).doesNotContainKey(FormSolutionsRepresentationsMapper.PDF); + } + } - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getNestedComponents(FormData dataMap) { - return (List<Map<String, Object>>) ((List<Map<String, Object>>) getPanels(dataMap).get(0).get(COMPONENTS)).get(0).get(COMPONENTS); } } diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java index 0272bbf580cffe9b032b6d1ba4677ea9ee473214..6f0083b92edca24db4f01333c735b79f9119986a 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java +++ b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java @@ -158,7 +158,7 @@ class SendFormEndpointITCase { @SuppressWarnings("unchecked") private IncomingFile getRepresentation(Map<String, Object> data) { - return ((List<IncomingFile>) ((Map<String, Object>) data.get(MAPPED_FILES)).get(PARSED_REPRESENTATIONS)).get(0); + return ((List<IncomingFile>) ((Map<String, Object>) data.get(FIELD_NAME_MAPPED_FILES)).get(PARSED_REPRESENTATIONS)).get(0); } } @@ -189,6 +189,6 @@ class SendFormEndpointITCase { @SuppressWarnings("unchecked") private Map<String, Object> getFiles(Map<String, Object> data) { - return (Map<String, Object>) data.get(MAPPED_FILES); + return (Map<String, Object>) data.get(FIELD_NAME_MAPPED_FILES); } } diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java b/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java index caad9cd7a5e65a2630d04585ea69c42d1b4774ba..49dcf058b6e371e51a312302ff1b1128006f3557 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java +++ b/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java @@ -111,7 +111,7 @@ class SemantikFormDataMapper { List<IncomingFile> representations = incomingFilesService.calculateRepresentations(attachments, depositRequestFiles); - formDataMap.put(MAPPED_FILES, Map.of( + formDataMap.put(FIELD_NAME_MAPPED_FILES, Map.of( ATTACHMENTS, attachments, REPRESENTATIONS, representations)); diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java b/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java index 42603a449d1ab72777faaa0dd9133aa4d0682a68..e5d9c911d84d54057399985b6619cb1b9bffeab7 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java +++ b/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java @@ -112,7 +112,7 @@ class SemantikFormDataMapperTest { @SuppressWarnings("unchecked") private List<IncomingFile> getRepresentations(FormData formData) { - return (List<IncomingFile>) ((Map<String, Object>) formData.getFormData().get(AbstractFileMapper.MAPPED_FILES)) + return (List<IncomingFile>) ((Map<String, Object>) formData.getFormData().get(AbstractFileMapper.FIELD_NAME_MAPPED_FILES)) .get(AbstractFileMapper.REPRESENTATIONS); } } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/FormDataUtils.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/FormDataUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..6b241a059d4cce531fcf213fbd5e4f3369b9d0a1 --- /dev/null +++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/FormDataUtils.java @@ -0,0 +1,42 @@ +package de.itvsh.kop.eingangsadapter.semantik; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import lombok.NonNull; + +public class FormDataUtils { + + final FormData baseFormData; + final Map<String, Object> modifieableData; + + private FormDataUtils(FormData formData) { + baseFormData = formData; + modifieableData = new HashMap<>(formData.getFormData()); + } + + public static FormDataUtils from(FormData formData) { + return new FormDataUtils(formData); + } + + public FormDataUtils remove(String key) { + modifieableData.remove(key); + return this; + } + + public FormDataUtils put(@NonNull String key, Object value) { + modifieableData.put(key, value); + return this; + } + + public FormData build() { + return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)).build(); + } + + @SuppressWarnings("unchecked") + public static Map<String, Object> getSubMap(FormData formData, String key) { + return (Map<String, Object>) formData.getFormData().get(key); + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java index ab255ec57a6abe56148f27786967e175dbb9b380..c2f36ae6a94d90e9b0e9cab6fe9438302f171307 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java +++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java @@ -23,8 +23,6 @@ */ package de.itvsh.kop.eingangsadapter.semantik.enginebased; -import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -32,11 +30,13 @@ import java.util.Optional; import de.itvsh.kop.eingangsadapter.common.formdata.FormData; import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.itvsh.kop.eingangsadapter.semantik.FormDataUtils; +//TODO Vererbung ausbauen und durch Utils ersetzen public abstract class AbstractFileMapper implements EngineBasedMapper { public static final String ATTACHMENTS = "parsedAttachments"; public static final String REPRESENTATIONS = "parsedRepresentations"; - public static final String MAPPED_FILES = "mappedFiles"; + public static final String FIELD_NAME_MAPPED_FILES = "mappedFiles"; @Override public FormData parseFormData(FormData formData) { @@ -77,16 +77,12 @@ public abstract class AbstractFileMapper implements EngineBasedMapper { return builder; } - @SuppressWarnings("unchecked") protected Map<String, Object> getMappedFiles(FormData formData) { - return (Map<String, Object>) formData.getFormData().get(MAPPED_FILES); + return FormDataUtils.getSubMap(formData, FIELD_NAME_MAPPED_FILES); } protected FormData removeProcessedData(FormData formData) { - var cleanedFormData = new HashMap<String, Object>(formData.getFormData()); - cleanedFormData.remove(MAPPED_FILES); - // TODO copyOf erlaubt keine null values -daher ausbauen + return FormDataUtils.from(formData).remove(FIELD_NAME_MAPPED_FILES).build(); - return formData.toBuilder().formData(Collections.unmodifiableMap(cleanedFormData)).build(); } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java index 6134fe90f49e14a3046a27ce185d13f1c127374a..f2ab3e95d9ffaeb76fb16434079aebdbded5175b 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java +++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java @@ -52,7 +52,7 @@ class AfmFilesMapperTest { private FormData formData = FormDataTestFactory.createBuilder() .clearAttachments() - .formData(Map.of(AbstractFileMapper.MAPPED_FILES, + .formData(Map.of(AbstractFileMapper.FIELD_NAME_MAPPED_FILES, Map.of(AbstractFileMapper.ATTACHMENTS, List.of(IncomingFileGroupTestFactory.create(), attachmentWithMultipleFiles)))) .build(); @@ -93,7 +93,7 @@ class AfmFilesMapperTest { void shouldRemoveFilesFromMap() { var parsedFormData = parseFormData(); - assertThat(parsedFormData.getFormData().get(AbstractFileMapper.MAPPED_FILES)).isNull(); + assertThat(parsedFormData.getFormData().get(AbstractFileMapper.FIELD_NAME_MAPPED_FILES)).isNull(); } private FormData parseFormData() { diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java index 4b2821e48dac810a5cb5b155d89b9a38a25245bf..824c4bc084de21aebc3fa7022a8cc3c8064689af 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java +++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java @@ -98,12 +98,12 @@ public class AttachmentsTestFactory { createAttachments(List.of( createFile(FILE_NAME_ZIP_ATTACHMENT, ZIP_ENCRYPTED_DECODED, ZIP_CONTENT_TYPE)), FILE_GROUP_ZIP_NAME)); - public static final Map<String, Object> FORMDATA_WITH_AFM_FILES = Map.of(MAPPED_FILES, + public static final Map<String, Object> FORMDATA_WITH_AFM_FILES = Map.of(FIELD_NAME_MAPPED_FILES, Map.of( ATTACHMENTS, AFM_ATTACHMMENTS, REPRESENTATIONS, AFM_REPRESENTATIONS)); - public static final Map<String, Object> FORMDATA_WITH_NO_ATTACHMENTS = Map.of(MAPPED_FILES, + public static final Map<String, Object> FORMDATA_WITH_NO_ATTACHMENTS = Map.of(FIELD_NAME_MAPPED_FILES, Map.of( ATTACHMENTS, List.of(), REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS)); diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java index 64bfd77f31ae347f8ae828cf4b53e973649dc702..6ef28c2dc30a107c33fefdd9b9f7a0e01ede4353 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java +++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java @@ -262,7 +262,7 @@ public class FormSolutionsEngineBasedAdapterITCase { createFile(FILE_NAME_ZIP_ATTACHMENT, ZIP_DECODED, ZIP_CONTENT_TYPE)), FILE_GROUP_ZIP_NAME); Map<String, Object> plainMap = getTestDataFromFile(); - plainMap.put(MAPPED_FILES, Map.of( + plainMap.put(FIELD_NAME_MAPPED_FILES, Map.of( ATTACHMENTS, formsolutionsAttachments, REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS)); return FormData.builder().formData(plainMap).build(); diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java index 09f0f4587d9ae87b5b13cb947df4ec0454d77cb3..4686f8d329f78055e89514cbd47b4d40cb80999b 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java +++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java @@ -60,7 +60,7 @@ class FormSolutionsFilesMapperTest { IncomingFileTestFactory.create())) .build()); - private final FormData formData = AttachmentsTestFactory.createBuilder().formData(Map.of(MAPPED_FILES, + private final FormData formData = AttachmentsTestFactory.createBuilder().formData(Map.of(FIELD_NAME_MAPPED_FILES, Map.of( ATTACHMENTS, attachments, REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS))) @@ -123,7 +123,7 @@ class FormSolutionsFilesMapperTest { @Nested class TestEncryptedAttachments { - private final FormData formData = FormData.builder().formData(Map.of(MAPPED_FILES, FORMDATA_WITH_FORMSOLUTIONS_ATTACHMMENTS_ENCRYPTED)) + private final FormData formData = FormData.builder().formData(Map.of(FIELD_NAME_MAPPED_FILES, FORMDATA_WITH_FORMSOLUTIONS_ATTACHMMENTS_ENCRYPTED)) .build(); @Test