diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java b/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java index 4da278f1a965ab9231806c179dd00970eb09ab78..17ec9b5f4098836e04019baf4a4733294fa089c0 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java +++ b/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java @@ -30,8 +30,12 @@ public class FormDataUtils { return this; } + public FormData.FormDataBuilder builder() { + return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)); + } + public FormData build() { - return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)).build(); + return builder().build(); } @SuppressWarnings("unchecked") 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 49dcf058b6e371e51a312302ff1b1128006f3557..7810c2ef5c918e971e13243c9951ff8dcbf028f7 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 @@ -26,6 +26,7 @@ package de.itvsh.kop.eingangsadapter.intelliform; import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; import java.io.ByteArrayInputStream; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,6 +42,7 @@ import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; import lombok.RequiredArgsConstructor; +//TODO Naming prüfen - er scheint mir nicht semantik zu mappen und befindet sich auch nicht im entsprechenden Modul @Component @RequiredArgsConstructor class SemantikFormDataMapper { @@ -94,7 +96,7 @@ class SemantikFormDataMapper { addHeader(document, formDataMap); - return FormData.builder().formData(formDataMap).build(); + return FormData.builder().formData(Collections.unmodifiableMap(formDataMap)).build(); } private byte[] getXmlFormData(DepositData depositData) { diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java index aa6a12d2f132f2ebb0c1f5d149a514935da0e118..5aea6ce1d47d063f9a596ec96ecb41754b6b81a1 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java +++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java @@ -26,7 +26,6 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased; import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -36,6 +35,7 @@ import org.springframework.stereotype.Component; import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; @Component public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBasedMapper { @@ -49,9 +49,10 @@ public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBase @Override public FormData parseFormData(FormData formData) { - return formData.toBuilder() + return FormDataUtils.from(formData) + .remove(POSTKORBHANDLE) + .builder() .antragsteller(buildAntragsteller(formData)) - .formData(removeProcessedData(formData)) .build(); } @@ -105,10 +106,4 @@ public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBase return ((List<Map<String, Object>>) ((Map<String, Object>) formData.get(ASSISTANT)).get(PANELS)); } - Map<String, Object> removeProcessedData(FormData formData) { - var formDataMap = new HashMap<String, Object>(formData.getFormData()); - formDataMap.remove(POSTKORBHANDLE); - - return Collections.unmodifiableMap(formDataMap); - } } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java index 4eab80ffbca842cd543facc2de7659b94c554e6a..99e0b79f7af4fc813d9785c985e7379d725992d9 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java +++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java @@ -23,13 +23,12 @@ */ package de.itvsh.kop.eingangsadapter.semantik.enginebased; -import java.util.Collections; -import java.util.HashMap; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapter { @@ -54,11 +53,10 @@ public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapt } FormData removeProcessedData(FormData formData) { - var formDataMap = new HashMap<String, Object>(formData.getFormData()); - formDataMap.remove(ASSISTANT); - formDataMap.remove(ANLIEGEN_ID); - formDataMap.remove(KOMMUNALVERWALTUNG_ID); - - return formData.toBuilder().formData(Collections.unmodifiableMap(formDataMap)).build(); + return FormDataUtils.from(formData) + .remove(ASSISTANT) + .remove(ANLIEGEN_ID) + .remove(KOMMUNALVERWALTUNG_ID) + .build(); } } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java index ce0098a786b44bfb074c559fef1adcfc9561acc6..4e8a1b558a958c6e575337c4150e5e36047b1533 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java +++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java @@ -25,13 +25,12 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased; import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import java.util.Collections; -import java.util.HashMap; import java.util.Map; import org.springframework.stereotype.Component; import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader; @Component @@ -43,9 +42,10 @@ public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper @Override public FormData parseFormData(FormData formData) { - return formData.toBuilder() + return FormDataUtils.from(formData) + .remove(TRANSACTION_ID) + .builder() .header(buildFormHeader(formData)) - .formData(removeProcessedData(formData)) .build(); } @@ -60,22 +60,17 @@ public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper private String getIdentifier(FormData formData) { return (String) getAssistant(formData).get(IDENTIFIER); - // TODO immutable machen } private String getRequestId(FormData formData) { return (String) formData.getFormData().get(TRANSACTION_ID); } - @SuppressWarnings("unchecked") private Map<String, Object> getAssistant(FormData formData) { - return (Map<String, Object>) formData.getFormData().get(ASSISTANT); + return FormDataUtils.getSubMap(formData, ASSISTANT); } Map<String, Object> removeProcessedData(FormData processedData) { - var formDataMap = new HashMap<String, Object>(processedData.getFormData()); - formDataMap.remove(TRANSACTION_ID); - - return Collections.unmodifiableMap(formDataMap); + return FormDataUtils.from(processedData).remove(TRANSACTION_ID).build().getFormData(); } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java index c6d959d368d02f0e977a2b1735540852f90c1780..079da0827d5013e789cdacabb7dc43f0ffe011c8 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java +++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java @@ -67,6 +67,13 @@ class FormSolutionsAntragstellerMapperTest { assertThat(result).usingRecursiveComparison().ignoringFields("antragsteller", "formData").isEqualTo(formData); } + @Test + void shouldRemovePostkorbhandle() { + var result = parseFormData(); + + assertThat(result.getFormData()).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE); + } + private FormData parseFormData() { return mapper.parseFormData(formData); } @@ -100,17 +107,5 @@ class FormSolutionsAntragstellerMapperTest { return mapper.buildAntragsteller(formData); } } - - @DisplayName("remove processed data") - @Nested - class TestRemoveProcessedData { - - @Test - void shouldRemovePostkorbhandle() { - var formDataMap = mapper.removeProcessedData(formData); - - assertThat(formDataMap).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE); - } - } } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java index fbf2fbaa2172a51716bd8deb0c99e05019ab257c..dc4bcd9b4d6abb5199a2038d6514f52d6fdeb219 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java +++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java @@ -54,17 +54,17 @@ class FormSolutionsHeaderMapperTest { } @Test - void shouldCallRemoveProcessedData() { - parseFormData(); + void shouldReturnValue() { + var result = parseFormData(); - verify(mapper).removeProcessedData(formData); + assertThat(result).usingRecursiveComparison().ignoringFields("header", "formData").isEqualTo(formData); } @Test - void shouldReturnValue() { + void shouldRemoveTransactionId() { var result = parseFormData(); - assertThat(result).usingRecursiveComparison().ignoringFields("header", "formData").isEqualTo(formData); + assertThat(result.getFormData()).doesNotContainKey(FormSolutionsHeaderMapper.TRANSACTION_ID); } private FormData parseFormData() {