diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java index fb9d4273d63f0d0f2d4885ea5c1498d9c56a246e..52365312ec979e24d37560740ce9fca8c02db523 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java @@ -92,66 +92,55 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { return (String) formDataMap.get(POSTFACH_ID); } - private Optional<Map<String, String>> getAntragstellerMap(Map<String, Object> formDataMap) { + private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) { return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)) .or(() -> Optional.ofNullable(formDataMap.get(ANTRAGSTELLER_UPPERCASE))) .map(Map.class::cast) - .map(this::mapValuesToStrings) - .map(LinkedHashMap::new); - } - - private Map<String, String> mapValuesToStrings(Map<String, Object> map) { - return map.entrySet().stream() - .collect(Collectors.toMap( - Map.Entry::getKey, - entry -> Optional.ofNullable(entry.getValue()) - .map(Object::toString) - .orElse("") - )); + .map(LinkedHashMap<String, Object>::new); } private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder, - Map<String, String> antragstellerMap) { + Map<String, Object> antragstellerMap) { return isNull(antragstellerMap.get(FIELD_FIRMA_NAME)) ? addPrivateAntragstellerData(builder, antragstellerMap) : addFirmAntragstellerData(builder, antragstellerMap); } private Antragsteller.AntragstellerBuilder addPrivateAntragstellerData(Antragsteller.AntragstellerBuilder builder, - Map<String, String> antragstellerMap) { - return builder - .anrede(antragstellerMap.get(ANREDE)) - .vorname(antragstellerMap.get(VORNAME)) - .nachname(antragstellerMap.get(NACHNAME)) - .geburtsname(antragstellerMap.get(GEBURTSNAME)) - .geburtsdatum(antragstellerMap.get(GEBURTSDATUM)) - .geburtsort(antragstellerMap.get(GEBURTSORT)) - .email(antragstellerMap.get(EMAIL)) - .telefon(antragstellerMap.get(TELEFON)) - .strasse(antragstellerMap.get(STRASSE)) - .hausnummer(antragstellerMap.get(HAUSNUMMER)) - .plz(antragstellerMap.get(PLZ)) - .ort(MapUtils.getString(antragstellerMap, ORT)) + Map<String, Object> antragstellerMap) { + return builder // + .anrede((String) antragstellerMap.get(ANREDE)) // + .vorname((String) antragstellerMap.get(VORNAME)) // + .nachname((String) antragstellerMap.get(NACHNAME)) // + .geburtsname((String) antragstellerMap.get(GEBURTSNAME)) // + .geburtsdatum((String) antragstellerMap.get(GEBURTSDATUM)) // + .geburtsort((String) antragstellerMap.get(GEBURTSORT)) // + .email((String) antragstellerMap.get(EMAIL)) // + .telefon((String) antragstellerMap.get(TELEFON)) // + .strasse((String) antragstellerMap.get(STRASSE)) // + .hausnummer((String) antragstellerMap.get(HAUSNUMMER)) // + .plz((String) antragstellerMap.get(PLZ)) // + .ort((String) antragstellerMap.get(ORT)) // .data(getNotMappedData(antragstellerMap, getPrivateFields())); } Antragsteller.AntragstellerBuilder addFirmAntragstellerData(Antragsteller.AntragstellerBuilder builder, - Map<String, String> antragstellerMap) { + Map<String, Object> antragstellerMap) { return builder - .firmaName(antragstellerMap.get(FIELD_FIRMA_NAME)) - .strasse(antragstellerMap.get(FIELD_FIRMA_STRASSE)) - .hausnummer(antragstellerMap.get(FIELD_FIRMA_HAUSNUMMER)) - .plz(antragstellerMap.get(FIELD_FIRMA_PLZ)) - .ort(antragstellerMap.get(FIELD_FIRMA_STADT)) - .anrede(antragstellerMap.get(FIELD_ANSPRECHPARTNER_ANREDE)) - .vorname(antragstellerMap.get(FIELD_ANSPRECHPARTNER_VORNAME)) - .nachname(antragstellerMap.get(FIELD_ANSPRECHPARTNER_NACHNAME)) - .telefon(antragstellerMap.get(TELEFON)) - .email(antragstellerMap.get(EMAIL)) + .firmaName(MapUtils.getString(antragstellerMap, FIELD_FIRMA_NAME)) + .strasse(MapUtils.getString(antragstellerMap, FIELD_FIRMA_STRASSE)) + .hausnummer(MapUtils.getString(antragstellerMap, FIELD_FIRMA_HAUSNUMMER)) + .plz(MapUtils.getString(antragstellerMap, FIELD_FIRMA_PLZ)) + .ort(MapUtils.getString(antragstellerMap, FIELD_FIRMA_STADT)) + .anrede(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_ANREDE)) + .vorname(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_VORNAME)) + .nachname(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_NACHNAME)) + .telefon(MapUtils.getString(antragstellerMap, TELEFON)) + .email(MapUtils.getString(antragstellerMap, EMAIL)) .data(getNotMappedData(antragstellerMap, getFirmaFields())); } - private Map<String, Object> getNotMappedData(Map<String, String> antragstellerMap, Set<String> mappedFields) { + private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap, Set<String> mappedFields) { return antragstellerMap.entrySet().stream().filter(entry -> !mappedFields.contains(entry.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (key1, key2) -> key1, LinkedHashMap::new)); } diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java index 23677ce45666a05ed89e66944ea2800e09dd2cb9..f68df9df3da7a3905ef9a4dc0fdd9a96c112c890 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java @@ -28,7 +28,6 @@ import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.HashMap; -import java.util.List; import java.util.UUID; import org.assertj.core.data.MapEntry; @@ -130,46 +129,6 @@ class AfmAntragstellerMapperTest { assertThat(parsedFormData.getAntragsteller().getPostfachId()).isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); } - @DisplayName("with invalid data types") - @Nested - class TestWithInvalidDataTypes { - - @DisplayName("should map invalid type to string") - @Test - void shouldMapInvalidTypeToString() { - var formData = createFormDataWithOrt(List.of("listort1", "listort2")); - - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getOrt()).isEqualTo("[listort1, listort2]"); - } - } - - @DisplayName("with missing data types") - @Nested - class TestWithMissingDataTypes { - - @DisplayName("should map missing type to empty string") - @Test - void shouldMapMissingTypeToEmptyString() { - var formData = createFormDataWithOrt(null); - - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getOrt()).isEmpty(); - } - } - - private FormData createFormDataWithOrt(Object ort) { - var antragstellerMap = AfmAntragstellerTestFactory.createPrivateAntragstelleMap( - MapEntry.entry(AfmAntragstellerMapper.ORT, ort)); - - var formDataMap = new HashMap<String, Object>(); - formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap); - - return FormData.builder().formData(formDataMap).build(); - } - @DisplayName("with mapped and not mapped value") @Nested class TestWithMappedAndNotMappedValue {