diff --git a/pom.xml b/pom.xml index 8a516b4fde87959c326f21a51e06c558e0952799..22c3b7c503ee75c2ddd2d69f32804e89c9b21464 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ <description>Semantik-Adapter für AFM/IntelliForm</description> <properties> - <eingang-manager.version>2.18.0</eingang-manager.version> + <eingang-manager.version>2.18.1</eingang-manager.version> </properties> <dependencies> diff --git a/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java b/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java index 4fff0ea90b799476bac4f0b3b3c39e4e8378935f..8ecd3a9d73f11dbbdda27eaafa53b8f09ddb3faa 100644 --- a/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java +++ b/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java @@ -33,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; @Component @@ -42,6 +43,8 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { public static final String EMAIL = "emailadresse"; public static final String ORGANISATIONSEINHEITEN_ID = "OrganisationseinheitenID"; + public static final String ORGANISATIONSEINHEITEN_ID_ALT = "organisationseinheitid"; + public static final String ORGANISATIONSEINHEITEN_ID_PARAMETER = "CUSTOMPARAMETER_ORGANISATIONSEINHEITID"; public static final String TAG_BEZEICHNUNG = "OrganisationseinheitenBEZEICHNUNG"; @Autowired @@ -78,7 +81,13 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { } String getOrganisationseinheitenId(FormData formData) { - return (String) formData.getFormData().get(ORGANISATIONSEINHEITEN_ID); + return Optional.ofNullable((String) formData.getFormData().get(ORGANISATIONSEINHEITEN_ID)) + .or(() -> getOeIdFromControl(formData.getControl())) + .orElseGet(() -> (String) formData.getFormData().get(ORGANISATIONSEINHEITEN_ID_ALT)); + } + + private Optional<String> getOeIdFromControl(FormDataControl control) { + return control.getMetaData().map(metaData -> metaData.getEntry(ORGANISATIONSEINHEITEN_ID_PARAMETER)); } Map<String, Object> addMetaDataFlag(FormData formData) { diff --git a/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java b/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java index e9abbeff9c2dc8b2af9f03c35006fe667cc3acbc..9e727282546e1301990e9f94c3b06f1fad992728 100644 --- a/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java +++ b/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java @@ -24,10 +24,13 @@ package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -36,7 +39,10 @@ import org.mockito.Mock; import org.mockito.Spy; import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData.FormDataControl; import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormMetaData; +import de.ozgcloud.eingang.common.formdata.FormMetaDataTestFactory; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; class AfmZustaendigeStelleMapperTest { @@ -125,6 +131,56 @@ class AfmZustaendigeStelleMapperTest { } } + @Nested + class TestGetOrganisationsEinheitId { + + @Test + void shouldGetId() { + var formData = FormData.builder().formData(AfmZustaendigeStelleTestFactory.createZustaendigeStelleMap()).build(); + + var result = mapper.getOrganisationseinheitenId(formData); + + assertThat(result).isEqualTo(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID); + } + + @Test + void shouldGetIdFromAlternativField() { + var map = AfmZustaendigeStelleTestFactory.createZustaendigeStelleMap(); + map.remove(AfmZustaendigeStelleMapper.ORGANISATIONSEINHEITEN_ID); + map.put(AfmZustaendigeStelleMapper.ORGANISATIONSEINHEITEN_ID_ALT, AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID); + var formData = FormData.builder().formData(map).build(); + + var result = mapper.getOrganisationseinheitenId(formData); + + assertThat(result).isEqualTo(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID); + } + + @Test + void shouldGetIdFromMetaData() { + FormMetaData metaData = FormMetaDataTestFactory + .create(Map.of("CUSTOMPARAMETER_ORGANISATIONSEINHEITID", AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID)); + var formData = FormDataTestFactory.createBuilder().formData(Collections.emptyMap()) + .control(FormDataControl.builder().metaData(Optional.of(metaData)).build()) + .build(); + + var result = mapper.getOrganisationseinheitenId(formData); + + assertThat(result).isEqualTo(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID); + } + + @Test + void shouldReturnNullIfIdMissing() { + var map = AfmZustaendigeStelleTestFactory.createZustaendigeStelleMap(); + map.remove(AfmZustaendigeStelleMapper.ORGANISATIONSEINHEITEN_ID); + var formData = FormData.builder().formData(map).build(); + + var result = mapper.getOrganisationseinheitenId(formData); + + assertThat(result).isNull(); + } + + } + @Nested class TestAddMetaDataFlag { diff --git a/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java b/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java index f629a1f224e1f59bb056debf70872297745d1a87..bfdbc697518e10f88f4e37a0c10bd39e81da8ff0 100644 --- a/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java +++ b/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java @@ -27,8 +27,6 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmZustaendigeStelleMapper; - public class AfmZustaendigeStelleTestFactory { public static final String ORGANISATIONSEINHEITEN_ID = UUID.randomUUID().toString();