From 359834f4bb173b9e4b5d53763caef35982dc43a6 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Tue, 23 Jan 2024 15:23:09 +0100 Subject: [PATCH] OZG-4375 OZG-4790 Eliminate AntragsdatenType --- ...sspezifischeErweiterungXMLTypeCreator.java | 4 +- .../ozgcloud/alfa/vorgang/FormDataMapper.java | 22 ++++---- .../ozgcloud_XML-Schemata/ozgcloud.xsd | 22 +++----- .../AntragsdatenItemTypeTestFactory.java | 17 +++--- ...zifischeErweiterungXMLTypeCreatorTest.java | 10 ++-- .../vorgang/ExportVorgangServiceITCase.java | 10 ++-- .../alfa/vorgang/FormDataMapperTest.java | 56 ++++++++++--------- 7 files changed, 70 insertions(+), 71 deletions(-) diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/AnwendungsspezifischeErweiterungXMLTypeCreator.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/AnwendungsspezifischeErweiterungXMLTypeCreator.java index 3c5ffdd39d..ed8527d130 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/AnwendungsspezifischeErweiterungXMLTypeCreator.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/AnwendungsspezifischeErweiterungXMLTypeCreator.java @@ -4,18 +4,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import de.xoev.xdomea.AnwendungsspezifischeErweiterungXMLType; -import de.xoev.xdomea.ObjectFactory; @Component public class AnwendungsspezifischeErweiterungXMLTypeCreator { @Autowired private FormDataMapper formDataMapper; - private final ObjectFactory objectFactory = new ObjectFactory(); public AnwendungsspezifischeErweiterungXMLType create(VorgangWithEingang vorgang) { var erweiterungXmlType = new AnwendungsspezifischeErweiterungXMLType(); - erweiterungXmlType.getAny().add(objectFactory.createAntragsdagen(formDataMapper.toAntragsdatenType(vorgang))); + erweiterungXmlType.getAny().add(formDataMapper.toAntragsdaten(vorgang)); return erweiterungXmlType; } } diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java index 89cf757115..b32558d6c6 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java @@ -9,19 +9,17 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import jakarta.validation.constraints.NotNull; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import de.ozgcloud.alfa.common.DateConverter; +import de.xoev.xdomea.Antragsdaten; import de.xoev.xdomea.AntragsdatenGroupType; import de.xoev.xdomea.AntragsdatenItemType; import de.xoev.xdomea.AntragsdatenMultiValueFieldType; import de.xoev.xdomea.AntragsdatenSingleValueFieldType; -import de.xoev.xdomea.AntragsdatenType; import de.xoev.xdomea.DatatypeType; -import de.xoev.xdomea.ItemListType; +import jakarta.validation.constraints.NotNull; @Component class FormDataMapper { @@ -31,15 +29,15 @@ class FormDataMapper { @Autowired private DateConverter dateConverter; - public AntragsdatenType toAntragsdatenType(@NotNull VorgangWithEingang vorgang) { - return Optional.ofNullable(vorgang.getEingang()).map(Eingang::getFormData).map(this::buileItemListType).map(AntragsdatenType.class::cast) - .orElseGet(AntragsdatenType::new); + public Antragsdaten toAntragsdaten(@NotNull VorgangWithEingang vorgang) { + return Optional.ofNullable(vorgang.getEingang()).map(Eingang::getFormData).map(this::buildAntragsdaten) + .orElseGet(Antragsdaten::new); } - ItemListType buileItemListType(Map<?, ?> formData) { - var itemList = new AntragsdatenType(); - itemList.getItem().addAll(buildItems(formData)); - return itemList; + Antragsdaten buildAntragsdaten(Map<?, ?> formData) { + var antragsdaten = new Antragsdaten(); + antragsdaten.getItem().addAll(buildItems(formData)); + return antragsdaten; } List<AntragsdatenItemType> buildItems(Map<?, ?> formData) { @@ -62,7 +60,7 @@ class FormDataMapper { AntragsdatenItemType buildAntragsdatenGroup(String name, Map<?, ?> values) { var antragsGroup = new AntragsdatenGroupType(); antragsGroup.setName(name); - antragsGroup.setValue(buileItemListType(values)); + antragsGroup.getItem().addAll(buildItems(values)); return antragsGroup; } diff --git a/alfa-xdomea/src/main/resources/ozgcloud_XML-Schemata/ozgcloud.xsd b/alfa-xdomea/src/main/resources/ozgcloud_XML-Schemata/ozgcloud.xsd index f3bf530f91..16daa7f586 100644 --- a/alfa-xdomea/src/main/resources/ozgcloud_XML-Schemata/ozgcloud.xsd +++ b/alfa-xdomea/src/main/resources/ozgcloud_XML-Schemata/ozgcloud.xsd @@ -7,13 +7,13 @@ <xs:import namespace="urn:xoev-de:xdomea:schema:3.0.0" schemaLocation="../xdomea_3-0-0_XML-Schemata/xdomea.xsd"/> - <xs:element name="Antragsdagen" type="ozgcloud:AntragsdatenType"/> - - <xs:complexType name="AntragsdatenType"> - <xs:complexContent> - <xs:extension base="ozgcloud:ItemListType"/> - </xs:complexContent> - </xs:complexType> + <xs:element name="Antragsdaten"> + <xs:complexType> + <xs:sequence> + <xs:element name="Item" type="ozgcloud:AntragsdatenItemType" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> <xs:complexType name="AntragsdatenItemType" abstract="true"> <xs:attribute name="name" type="xs:string" use="required"/> @@ -51,18 +51,12 @@ <xs:complexContent> <xs:extension base="ozgcloud:AntragsdatenItemType"> <xs:sequence> - <xs:element name="Value" type="ozgcloud:ItemListType"/> + <xs:element name="Item" type="ozgcloud:AntragsdatenItemType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> - <xs:complexType name="ItemListType" abstract="true"> - <xs:sequence> - <xs:element name="Item" type="ozgcloud:AntragsdatenItemType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="DatatypeType"> <xs:restriction base="xs:string"> <xs:enumeration value="string"/> diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/AntragsdatenItemTypeTestFactory.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/AntragsdatenItemTypeTestFactory.java index f9d51af847..78beaf2e22 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/AntragsdatenItemTypeTestFactory.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/AntragsdatenItemTypeTestFactory.java @@ -1,9 +1,11 @@ package de.ozgcloud.alfa.vorgang; +import java.util.List; + import de.xoev.xdomea.AntragsdatenGroupType; +import de.xoev.xdomea.AntragsdatenItemType; import de.xoev.xdomea.AntragsdatenMultiValueFieldType; import de.xoev.xdomea.AntragsdatenSingleValueFieldType; -import de.xoev.xdomea.AntragsdatenType; import de.xoev.xdomea.DatatypeType; public class AntragsdatenItemTypeTestFactory { @@ -31,14 +33,15 @@ public class AntragsdatenItemTypeTestFactory { } public static AntragsdatenGroupType createGroup() { - var antragsdatenItemType = new AntragsdatenGroupType(); - antragsdatenItemType.setName(KEY_MAP); + var antragsdatenGroupType = new AntragsdatenGroupType(); + antragsdatenGroupType.setName(KEY_MAP); - var group = new AntragsdatenType(); - group.getItem().add(createMultiValueField()); - antragsdatenItemType.setValue(group); + antragsdatenGroupType.getItem().addAll(createAntragsdatenItemTypes()); - return antragsdatenItemType; + return antragsdatenGroupType; } + public static List<AntragsdatenItemType> createAntragsdatenItemTypes() { + return List.of(createMultiValueField(), createSingleValueField()); + } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/AnwendungsspezifischeErweiterungXMLTypeCreatorTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/AnwendungsspezifischeErweiterungXMLTypeCreatorTest.java index b8880a0a26..554dd1f7d9 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/AnwendungsspezifischeErweiterungXMLTypeCreatorTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/AnwendungsspezifischeErweiterungXMLTypeCreatorTest.java @@ -10,7 +10,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import de.xoev.xdomea.AntragsdatenType; +import de.xoev.xdomea.Antragsdaten; import de.xoev.xdomea.AnwendungsspezifischeErweiterungXMLType; public class AnwendungsspezifischeErweiterungXMLTypeCreatorTest { @@ -25,25 +25,25 @@ public class AnwendungsspezifischeErweiterungXMLTypeCreatorTest { class TestCreate { private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); - private final AntragsdatenType antragsdatenType = new AntragsdatenType(); + private final Antragsdaten Antragsdaten = new Antragsdaten(); @BeforeEach void init() { - when(formDataMapper.toAntragsdatenType(any())).thenReturn(antragsdatenType); + when(formDataMapper.toAntragsdaten(any())).thenReturn(Antragsdaten); } @Test void shouldCallFormDataMapper() { create(); - verify(formDataMapper).toAntragsdatenType(vorgang); + verify(formDataMapper).toAntragsdaten(vorgang); } @Test void shouldHaveAntragsdaten() { var anwendungsspezifischeErweiterung = create(); - assertThat(anwendungsspezifischeErweiterung.getAny()).hasSize(1).first().isEqualTo(antragsdatenType); + assertThat(anwendungsspezifischeErweiterung.getAny()).hasSize(1).first().isEqualTo(Antragsdaten); } private AnwendungsspezifischeErweiterungXMLType create() { diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/ExportVorgangServiceITCase.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/ExportVorgangServiceITCase.java index 1217edd1f7..94cb0a3ac4 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/ExportVorgangServiceITCase.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/ExportVorgangServiceITCase.java @@ -11,10 +11,10 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import de.ozgcloud.common.test.ITCase; +import de.xoev.xdomea.Antragsdaten; import de.xoev.xdomea.AntragsdatenGroupType; import de.xoev.xdomea.AntragsdatenItemType; import de.xoev.xdomea.AntragsdatenSingleValueFieldType; -import de.xoev.xdomea.AntragsdatenType; @ITCase class ExportVorgangServiceITCase { @@ -70,17 +70,17 @@ class ExportVorgangServiceITCase { private void assertContainsItemsInGroup(List<AntragsdatenItemType> items) { var groupItem = items.stream().filter(item -> item instanceof AntragsdatenGroupType) .map(item -> ((AntragsdatenGroupType) item)) - .map(group -> group.getValue().getItem()) + .map(AntragsdatenGroupType::getItem) .flatMap(List::stream).findFirst(); assertThat(groupItem).isPresent().get().usingRecursiveComparison().isEqualTo(createMultiValueField()); } - private AntragsdatenType mapToAntragsdaten() { + private Antragsdaten mapToAntragsdaten() { var erweiterungType = exportVorgangService.createVorgangType(buildVorgang()).getAnwendungsspezifischeErweiterungXML(); - assertThat(erweiterungType.getAny()).hasSize(1).first().isInstanceOf(AntragsdatenType.class); - return (AntragsdatenType) erweiterungType.getAny().get(0); + assertThat(erweiterungType.getAny()).hasSize(1).first().isInstanceOf(Antragsdaten.class); + return (Antragsdaten) erweiterungType.getAny().get(0); } private VorgangWithEingang buildVorgang() { diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java index 6ffbdbf6b0..fd5111ad3b 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java @@ -9,6 +9,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -22,7 +23,6 @@ import de.xoev.xdomea.AntragsdatenItemType; import de.xoev.xdomea.AntragsdatenMultiValueFieldType; import de.xoev.xdomea.AntragsdatenSingleValueFieldType; import de.xoev.xdomea.DatatypeType; -import de.xoev.xdomea.ItemListType; class FormDataMapperTest { @@ -36,7 +36,7 @@ class FormDataMapperTest { private DateConverter dateConverter; @Nested - class TestToAntragsdatenType { + class TestToAntragsdaten { @Mock private VorgangWithEingang vorgang; @@ -46,16 +46,16 @@ class FormDataMapperTest { doReturn(new Object()).when(formDataMapper).formatValue(any(), any()); var vorgang = VorgangWithEingangTestFactory.create(); - formDataMapper.toAntragsdatenType(vorgang); + formDataMapper.toAntragsdaten(vorgang); - verify(formDataMapper).buileItemListType(vorgang.getEingang().getFormData()); + verify(formDataMapper).buildAntragsdaten(vorgang.getEingang().getFormData()); } @Test void shouldMapEingangNull() { - var antragsdatenType = formDataMapper.toAntragsdatenType(vorgang); + var Antragsdaten = formDataMapper.toAntragsdaten(vorgang); - assertThat(antragsdatenType.getItem()).isEmpty(); + assertThat(Antragsdaten.getItem()).isEmpty(); } @Test @@ -63,28 +63,36 @@ class FormDataMapperTest { var eingang = mock(Eingang.class); when(vorgang.getEingang()).thenReturn(eingang); - var antragsdatenType = formDataMapper.toAntragsdatenType(vorgang); + var Antragsdaten = formDataMapper.toAntragsdaten(vorgang); - assertThat(antragsdatenType.getItem()).isEmpty(); + assertThat(Antragsdaten.getItem()).isEmpty(); } } @Nested - class TestBuildItemListType { + class TestBuildAntragsdaten { - @Mock - private AntragsdatenItemType antragsdatenItemType1; - @Mock - private AntragsdatenItemType antragsdatenItemType2; + private final Map<?,?> formData = EingangTestFactory.create().getFormData(); + private final List<AntragsdatenItemType> items = AntragsdatenItemTypeTestFactory.createAntragsdatenItemTypes(); + + @BeforeEach + void init() { + doReturn(items).when(formDataMapper).buildItems(any()); + } @Test - void shouldAddItems() { - doReturn(List.of(antragsdatenItemType1, antragsdatenItemType2)).when(formDataMapper).buildItems(any()); + void shouldCallBuildItems() { + formDataMapper.buildAntragsdaten(formData); + + verify(formDataMapper).buildItems(formData); + } - var itemListType = formDataMapper.buileItemListType(EingangTestFactory.AS_MAP); + @Test + void shouldFillItems() { + var antragsdaten = formDataMapper.buildAntragsdaten(formData); - assertThat(itemListType.getItem()).containsExactly(antragsdatenItemType1, antragsdatenItemType2); + assertThat(antragsdaten.getItem()).containsExactlyElementsOf(items); } } @@ -133,9 +141,7 @@ class FormDataMapperTest { private static final String NAME = "name"; private static final Map<String, Object> FORMDATA_SUBMAP = Map.of("key", "value"); - - @Mock - private ItemListType itemListType; + private final List<AntragsdatenItemType> items = AntragsdatenItemTypeTestFactory.createAntragsdatenItemTypes(); @Test void shouldSetName() { @@ -147,21 +153,21 @@ class FormDataMapperTest { } @Test - void shouldSetValue() { - doReturn(itemListType).when(formDataMapper).buileItemListType(any()); + void shouldSetItems() { + doReturn(items).when(formDataMapper).buildItems(any()); var antragsdatenGroup = (AntragsdatenGroupType) formDataMapper.buildAntragsdatenGroup(NAME, FORMDATA_SUBMAP); - assertThat(antragsdatenGroup.getValue()).isEqualTo(itemListType); + assertThat(antragsdatenGroup.getItem()).containsExactlyElementsOf(items); } @Test - void shouldCallBuildItemListType() { + void shouldCallBuildItems() { doReturn(new Object()).when(formDataMapper).formatValue(any(), any()); formDataMapper.buildAntragsdatenGroup(NAME, FORMDATA_SUBMAP); - verify(formDataMapper).buileItemListType(FORMDATA_SUBMAP); + verify(formDataMapper).buildItems(FORMDATA_SUBMAP); } } -- GitLab