diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/FormDataUtils.java b/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java similarity index 89% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/FormDataUtils.java rename to common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java index 6b241a059d4cce531fcf213fbd5e4f3369b9d0a1..4da278f1a965ab9231806c179dd00970eb09ab78 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/FormDataUtils.java +++ b/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java @@ -1,10 +1,9 @@ -package de.itvsh.kop.eingangsadapter.semantik; +package de.itvsh.kop.eingangsadapter.common.formdata; 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 { 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 870f47e40b3dfc7f19484f87634fb863cd96177d..412ab9786cac5cb4e8ed0730cdf05db34b87564c 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 @@ -35,7 +35,7 @@ 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.common.formdata.FormDataUtils; import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; @Component diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerMapper.java b/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerMapper.java deleted file mode 100644 index 52b065cb2dfc9b79693c1a89cbcdafa09fa9a83c..0000000000000000000000000000000000000000 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerMapper.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.intelliform; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller.AntragstellerBuilder; - -@Component -class AntragstellerMapper { - - static final String XML_ANTRAGSTELLER = "antragsteller"; - - static final String XML_MAPPING_ANREDE = "b_anrede"; - static final String XML_MAPPING_VORNAME = "pers_vorname"; - static final String XML_MAPPING_NACHNAME = "pers_nachname"; - static final String XML_MAPPING_GEBURTSNAME = "pers_geburtsname"; - static final String XML_MAPPING_GEBURTSDATUM = "pers_geburtsdatum"; - static final String XML_MAPPING_GEBURTSORT = "pers_geburtsort"; - static final String XML_MAPPING_EMAIL = "kont_email"; - static final String XML_MAPPING_TELEFON = "kont_telefonnummer"; - - static final String XML_MAPPING_STRASSE = "sh_strasse"; - static final String XML_MAPPING_HAUSNUMMER = "sh_hausnummer"; - static final String XML_MAPPING_PLZ = "sh_plz"; - static final String XML_MAPPING_ORT = "ort"; - - static final String XML_MAPPING_POSTFACH_ID = "nameid"; - - private static final Set<String> XML_MAPPINGS = new HashSet<>(List.of( - XML_MAPPING_ANREDE, - XML_MAPPING_VORNAME, - XML_MAPPING_NACHNAME, - XML_MAPPING_GEBURTSNAME, - XML_MAPPING_GEBURTSDATUM, - XML_MAPPING_GEBURTSORT, - XML_MAPPING_EMAIL, - XML_MAPPING_TELEFON, - XML_MAPPING_STRASSE, - XML_MAPPING_HAUSNUMMER, - XML_MAPPING_PLZ, - XML_MAPPING_ORT, - XML_MAPPING_POSTFACH_ID)); - - public Antragsteller mapToAntragsteller(Map<String, Object> formDataMap) { - var builder = Antragsteller.builder().postfachId(getPostfachId(formDataMap)); - - var filledBuilder = getAntragstellerMap(formDataMap) - .map(antragstellerMap -> addAntragstellerData(builder, antragstellerMap)) - .orElse(builder); - - removeMappedData(formDataMap); - return filledBuilder.build(); - } - - private String getPostfachId(Map<String, Object> formDataMap) { - return (String) formDataMap.get(XML_MAPPING_POSTFACH_ID); - } - - @SuppressWarnings("unchecked") - private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) { - return Optional.ofNullable(formDataMap.get(XML_ANTRAGSTELLER)).map(Map.class::cast).map(HashMap::new); - } - - private AntragstellerBuilder addAntragstellerData(AntragstellerBuilder builder, Map<String, Object> antragstellerMap) { - return builder // - .anrede((String) antragstellerMap.get(XML_MAPPING_ANREDE)) // - .vorname((String) antragstellerMap.get(XML_MAPPING_VORNAME)) // - .nachname((String) antragstellerMap.get(XML_MAPPING_NACHNAME)) // - .geburtsname((String) antragstellerMap.get(XML_MAPPING_GEBURTSNAME)) // - .geburtsdatum((String) antragstellerMap.get(XML_MAPPING_GEBURTSDATUM)) // - .geburtsort((String) antragstellerMap.get(XML_MAPPING_GEBURTSORT)) // - .email((String) antragstellerMap.get(XML_MAPPING_EMAIL)) // - .telefon((String) antragstellerMap.get(XML_MAPPING_TELEFON)) // - .strasse((String) antragstellerMap.get(XML_MAPPING_STRASSE)) // - .hausnummer((String) antragstellerMap.get(XML_MAPPING_HAUSNUMMER)) // - .plz((String) antragstellerMap.get(XML_MAPPING_PLZ)) // - .ort((String) antragstellerMap.get(XML_MAPPING_ORT)) // - .data(getNotMappedData(antragstellerMap)); - } - - private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap) { - var tempMap = new HashMap<>(antragstellerMap); - XML_MAPPINGS.forEach(tempMap::remove); - return tempMap; - } - - private void removeMappedData(Map<String, Object> formDataMap) { - formDataMap.remove(XML_ANTRAGSTELLER); - formDataMap.remove(XML_MAPPING_POSTFACH_ID); - } -} \ No newline at end of file diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerMapperTest.java b/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerMapperTest.java deleted file mode 100644 index 9c6817654276444b228d035bfd95c8e686815618..0000000000000000000000000000000000000000 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerMapperTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.intelliform; - -import static org.assertj.core.api.Assertions.*; - -import java.util.HashMap; -import java.util.Map; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -class AntragstellerMapperTest { - - private final static AntragstellerMapper mapper = new AntragstellerMapper(); - - @Nested - class TestMapToAntragsteller { - - @Test - void shouldMapFields() { - var antragsteller = mapper.mapToAntragsteller(createDataMap()); - - assertThat(antragsteller).usingRecursiveComparison().ignoringFields("data").isEqualTo(AntragstellerTestFactory.create()); - } - - @Test - void shouldMapPostfachId() { - var antragsteller = mapper.mapToAntragsteller(createDataMap()); - - assertThat(antragsteller.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); - } - - @Nested - class TestOtherData { - - private final String NOT_MAPPED_FIELD_KEY = "NotMappedField"; - - @Test - void shouldNotContainDuplicateValues() { - var antragsteller = mapper.mapToAntragsteller(createDataMap()); - - assertThat(antragsteller.getData()).doesNotContainKeys( - AntragstellerMapper.XML_MAPPING_ANREDE, - AntragstellerMapper.XML_MAPPING_EMAIL, - AntragstellerMapper.XML_MAPPING_GEBURTSDATUM, - AntragstellerMapper.XML_MAPPING_GEBURTSNAME, - AntragstellerMapper.XML_MAPPING_GEBURTSORT, - AntragstellerMapper.XML_MAPPING_NACHNAME, - AntragstellerMapper.XML_MAPPING_VORNAME, - AntragstellerMapper.XML_MAPPING_TELEFON, - AntragstellerMapper.XML_MAPPING_STRASSE, - AntragstellerMapper.XML_MAPPING_HAUSNUMMER, - AntragstellerMapper.XML_MAPPING_ORT, - AntragstellerMapper.XML_MAPPING_PLZ); - } - - @Test - void shouldContainNotMappedData() { - var antragstellerMap = new HashMap<>(AntragstellerTestFactory.createAsMap()); - antragstellerMap.put(NOT_MAPPED_FIELD_KEY, "Value!"); - var antragsteller = mapper.mapToAntragsteller(createDataMap(antragstellerMap)); - - assertThat(antragsteller.getData()).containsKey(NOT_MAPPED_FIELD_KEY); - } - } - - private Map<String, Object> createDataMap() { - return createDataMap(AntragstellerTestFactory.createAsMap()); - } - - private Map<String, Object> createDataMap(Map<String, Object> antragstellerMap) { - Map<String, Object> dataMap = new HashMap<>(); - dataMap.put(AntragstellerMapper.XML_ANTRAGSTELLER, antragstellerMap); - dataMap.put(AntragstellerMapper.XML_MAPPING_POSTFACH_ID, AntragstellerTestFactory.POSTFACH_ID); - return dataMap; - } - } -} \ No newline at end of file diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerTestFactory.java b/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerTestFactory.java deleted file mode 100644 index 0a6bf40d8ea0d5963f7ed7f9a70e5b60c83df4f8..0000000000000000000000000000000000000000 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AntragstellerTestFactory.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.intelliform; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; - -public class AntragstellerTestFactory { - - static final String ANREDE = "Herr"; - static final String VORNAME = "Max"; - static final String NACHNAME = "Mustermann"; - static final String GEBURTSNAME = "Maxi"; - static final String GEBURTSDATUM = "01.01.1970"; - static final String GEBURTSORT = "Sandhausen"; - static final String EMAIL = "alsob@ne.ver"; - static final String TELEFON = "+ 49 4621 9654"; - - static final String STRASSE = "Lachstrasse"; - static final String HAUSNUMMER = "8484"; - static final String PLZ = "12345"; - static final String ORT = "Wohlfuehlhausen"; - - static final String POSTFACH_ID = UUID.randomUUID().toString(); - - public static Antragsteller create() { - return createBuilder().build(); - } - - public static Antragsteller.AntragstellerBuilder createBuilder() { - return Antragsteller.builder() - .anrede(ANREDE) - .vorname(VORNAME) - .nachname(NACHNAME) - .geburtsname(GEBURTSNAME) - .geburtsdatum(GEBURTSDATUM) - .geburtsort(GEBURTSORT) - .email(EMAIL) - .telefon(TELEFON) - .strasse(STRASSE) - .hausnummer(HAUSNUMMER) - .plz(PLZ) - .ort(ORT) - .postfachId(POSTFACH_ID); - } - - public static Map<String, Object> createAsMap() { - var map = new HashMap<String, Object>(); - map.put(AntragstellerMapper.XML_MAPPING_ANREDE, ANREDE); - map.put(AntragstellerMapper.XML_MAPPING_VORNAME, VORNAME); - map.put(AntragstellerMapper.XML_MAPPING_NACHNAME, NACHNAME); - map.put(AntragstellerMapper.XML_MAPPING_GEBURTSNAME, GEBURTSNAME); - map.put(AntragstellerMapper.XML_MAPPING_GEBURTSDATUM, GEBURTSDATUM); - map.put(AntragstellerMapper.XML_MAPPING_GEBURTSORT, GEBURTSORT); - map.put(AntragstellerMapper.XML_MAPPING_EMAIL, EMAIL); - map.put(AntragstellerMapper.XML_MAPPING_TELEFON, TELEFON); - map.put(AntragstellerMapper.XML_MAPPING_STRASSE, STRASSE); - map.put(AntragstellerMapper.XML_MAPPING_HAUSNUMMER, HAUSNUMMER); - map.put(AntragstellerMapper.XML_MAPPING_PLZ, PLZ); - map.put(AntragstellerMapper.XML_MAPPING_ORT, ORT); - return map; - } -} \ No newline at end of file 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 c2f36ae6a94d90e9b0e9cab6fe9438302f171307..02e1acfe3ed0bd2efc5b37405bcdb572abd06de8 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 @@ -28,9 +28,9 @@ import java.util.Map; import java.util.Optional; import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; 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 {