Skip to content
Snippets Groups Projects
Commit 359834f4 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4375 OZG-4790 Eliminate AntragsdatenType

parent 1f8ce6bb
No related branches found
No related tags found
No related merge requests found
...@@ -4,18 +4,16 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -4,18 +4,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.xoev.xdomea.AnwendungsspezifischeErweiterungXMLType; import de.xoev.xdomea.AnwendungsspezifischeErweiterungXMLType;
import de.xoev.xdomea.ObjectFactory;
@Component @Component
public class AnwendungsspezifischeErweiterungXMLTypeCreator { public class AnwendungsspezifischeErweiterungXMLTypeCreator {
@Autowired @Autowired
private FormDataMapper formDataMapper; private FormDataMapper formDataMapper;
private final ObjectFactory objectFactory = new ObjectFactory();
public AnwendungsspezifischeErweiterungXMLType create(VorgangWithEingang vorgang) { public AnwendungsspezifischeErweiterungXMLType create(VorgangWithEingang vorgang) {
var erweiterungXmlType = new AnwendungsspezifischeErweiterungXMLType(); var erweiterungXmlType = new AnwendungsspezifischeErweiterungXMLType();
erweiterungXmlType.getAny().add(objectFactory.createAntragsdagen(formDataMapper.toAntragsdatenType(vorgang))); erweiterungXmlType.getAny().add(formDataMapper.toAntragsdaten(vorgang));
return erweiterungXmlType; return erweiterungXmlType;
} }
} }
...@@ -9,19 +9,17 @@ import java.util.List; ...@@ -9,19 +9,17 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import jakarta.validation.constraints.NotNull;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.ozgcloud.alfa.common.DateConverter; import de.ozgcloud.alfa.common.DateConverter;
import de.xoev.xdomea.Antragsdaten;
import de.xoev.xdomea.AntragsdatenGroupType; import de.xoev.xdomea.AntragsdatenGroupType;
import de.xoev.xdomea.AntragsdatenItemType; import de.xoev.xdomea.AntragsdatenItemType;
import de.xoev.xdomea.AntragsdatenMultiValueFieldType; import de.xoev.xdomea.AntragsdatenMultiValueFieldType;
import de.xoev.xdomea.AntragsdatenSingleValueFieldType; import de.xoev.xdomea.AntragsdatenSingleValueFieldType;
import de.xoev.xdomea.AntragsdatenType;
import de.xoev.xdomea.DatatypeType; import de.xoev.xdomea.DatatypeType;
import de.xoev.xdomea.ItemListType; import jakarta.validation.constraints.NotNull;
@Component @Component
class FormDataMapper { class FormDataMapper {
...@@ -31,15 +29,15 @@ class FormDataMapper { ...@@ -31,15 +29,15 @@ class FormDataMapper {
@Autowired @Autowired
private DateConverter dateConverter; private DateConverter dateConverter;
public AntragsdatenType toAntragsdatenType(@NotNull VorgangWithEingang vorgang) { public Antragsdaten toAntragsdaten(@NotNull VorgangWithEingang vorgang) {
return Optional.ofNullable(vorgang.getEingang()).map(Eingang::getFormData).map(this::buileItemListType).map(AntragsdatenType.class::cast) return Optional.ofNullable(vorgang.getEingang()).map(Eingang::getFormData).map(this::buildAntragsdaten)
.orElseGet(AntragsdatenType::new); .orElseGet(Antragsdaten::new);
} }
ItemListType buileItemListType(Map<?, ?> formData) { Antragsdaten buildAntragsdaten(Map<?, ?> formData) {
var itemList = new AntragsdatenType(); var antragsdaten = new Antragsdaten();
itemList.getItem().addAll(buildItems(formData)); antragsdaten.getItem().addAll(buildItems(formData));
return itemList; return antragsdaten;
} }
List<AntragsdatenItemType> buildItems(Map<?, ?> formData) { List<AntragsdatenItemType> buildItems(Map<?, ?> formData) {
...@@ -62,7 +60,7 @@ class FormDataMapper { ...@@ -62,7 +60,7 @@ class FormDataMapper {
AntragsdatenItemType buildAntragsdatenGroup(String name, Map<?, ?> values) { AntragsdatenItemType buildAntragsdatenGroup(String name, Map<?, ?> values) {
var antragsGroup = new AntragsdatenGroupType(); var antragsGroup = new AntragsdatenGroupType();
antragsGroup.setName(name); antragsGroup.setName(name);
antragsGroup.setValue(buileItemListType(values)); antragsGroup.getItem().addAll(buildItems(values));
return antragsGroup; return antragsGroup;
} }
......
...@@ -7,13 +7,13 @@ ...@@ -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: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:element name="Antragsdaten">
<xs:complexType>
<xs:complexType name="AntragsdatenType"> <xs:sequence>
<xs:complexContent> <xs:element name="Item" type="ozgcloud:AntragsdatenItemType" minOccurs="0" maxOccurs="unbounded"/>
<xs:extension base="ozgcloud:ItemListType"/> </xs:sequence>
</xs:complexContent>
</xs:complexType> </xs:complexType>
</xs:element>
<xs:complexType name="AntragsdatenItemType" abstract="true"> <xs:complexType name="AntragsdatenItemType" abstract="true">
<xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/>
...@@ -51,18 +51,12 @@ ...@@ -51,18 +51,12 @@
<xs:complexContent> <xs:complexContent>
<xs:extension base="ozgcloud:AntragsdatenItemType"> <xs:extension base="ozgcloud:AntragsdatenItemType">
<xs:sequence> <xs:sequence>
<xs:element name="Value" type="ozgcloud:ItemListType"/> <xs:element name="Item" type="ozgcloud:AntragsdatenItemType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </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:simpleType name="DatatypeType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="string"/> <xs:enumeration value="string"/>
......
package de.ozgcloud.alfa.vorgang; package de.ozgcloud.alfa.vorgang;
import java.util.List;
import de.xoev.xdomea.AntragsdatenGroupType; import de.xoev.xdomea.AntragsdatenGroupType;
import de.xoev.xdomea.AntragsdatenItemType;
import de.xoev.xdomea.AntragsdatenMultiValueFieldType; import de.xoev.xdomea.AntragsdatenMultiValueFieldType;
import de.xoev.xdomea.AntragsdatenSingleValueFieldType; import de.xoev.xdomea.AntragsdatenSingleValueFieldType;
import de.xoev.xdomea.AntragsdatenType;
import de.xoev.xdomea.DatatypeType; import de.xoev.xdomea.DatatypeType;
public class AntragsdatenItemTypeTestFactory { public class AntragsdatenItemTypeTestFactory {
...@@ -31,14 +33,15 @@ public class AntragsdatenItemTypeTestFactory { ...@@ -31,14 +33,15 @@ public class AntragsdatenItemTypeTestFactory {
} }
public static AntragsdatenGroupType createGroup() { public static AntragsdatenGroupType createGroup() {
var antragsdatenItemType = new AntragsdatenGroupType(); var antragsdatenGroupType = new AntragsdatenGroupType();
antragsdatenItemType.setName(KEY_MAP); antragsdatenGroupType.setName(KEY_MAP);
var group = new AntragsdatenType(); antragsdatenGroupType.getItem().addAll(createAntragsdatenItemTypes());
group.getItem().add(createMultiValueField());
antragsdatenItemType.setValue(group);
return antragsdatenItemType; return antragsdatenGroupType;
} }
public static List<AntragsdatenItemType> createAntragsdatenItemTypes() {
return List.of(createMultiValueField(), createSingleValueField());
}
} }
...@@ -10,7 +10,7 @@ import org.mockito.InjectMocks; ...@@ -10,7 +10,7 @@ import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy; import org.mockito.Spy;
import de.xoev.xdomea.AntragsdatenType; import de.xoev.xdomea.Antragsdaten;
import de.xoev.xdomea.AnwendungsspezifischeErweiterungXMLType; import de.xoev.xdomea.AnwendungsspezifischeErweiterungXMLType;
public class AnwendungsspezifischeErweiterungXMLTypeCreatorTest { public class AnwendungsspezifischeErweiterungXMLTypeCreatorTest {
...@@ -25,25 +25,25 @@ public class AnwendungsspezifischeErweiterungXMLTypeCreatorTest { ...@@ -25,25 +25,25 @@ public class AnwendungsspezifischeErweiterungXMLTypeCreatorTest {
class TestCreate { class TestCreate {
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
private final AntragsdatenType antragsdatenType = new AntragsdatenType(); private final Antragsdaten Antragsdaten = new Antragsdaten();
@BeforeEach @BeforeEach
void init() { void init() {
when(formDataMapper.toAntragsdatenType(any())).thenReturn(antragsdatenType); when(formDataMapper.toAntragsdaten(any())).thenReturn(Antragsdaten);
} }
@Test @Test
void shouldCallFormDataMapper() { void shouldCallFormDataMapper() {
create(); create();
verify(formDataMapper).toAntragsdatenType(vorgang); verify(formDataMapper).toAntragsdaten(vorgang);
} }
@Test @Test
void shouldHaveAntragsdaten() { void shouldHaveAntragsdaten() {
var anwendungsspezifischeErweiterung = create(); var anwendungsspezifischeErweiterung = create();
assertThat(anwendungsspezifischeErweiterung.getAny()).hasSize(1).first().isEqualTo(antragsdatenType); assertThat(anwendungsspezifischeErweiterung.getAny()).hasSize(1).first().isEqualTo(Antragsdaten);
} }
private AnwendungsspezifischeErweiterungXMLType create() { private AnwendungsspezifischeErweiterungXMLType create() {
......
...@@ -11,10 +11,10 @@ import org.junit.jupiter.api.Test; ...@@ -11,10 +11,10 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import de.ozgcloud.common.test.ITCase; import de.ozgcloud.common.test.ITCase;
import de.xoev.xdomea.Antragsdaten;
import de.xoev.xdomea.AntragsdatenGroupType; import de.xoev.xdomea.AntragsdatenGroupType;
import de.xoev.xdomea.AntragsdatenItemType; import de.xoev.xdomea.AntragsdatenItemType;
import de.xoev.xdomea.AntragsdatenSingleValueFieldType; import de.xoev.xdomea.AntragsdatenSingleValueFieldType;
import de.xoev.xdomea.AntragsdatenType;
@ITCase @ITCase
class ExportVorgangServiceITCase { class ExportVorgangServiceITCase {
...@@ -70,17 +70,17 @@ class ExportVorgangServiceITCase { ...@@ -70,17 +70,17 @@ class ExportVorgangServiceITCase {
private void assertContainsItemsInGroup(List<AntragsdatenItemType> items) { private void assertContainsItemsInGroup(List<AntragsdatenItemType> items) {
var groupItem = items.stream().filter(item -> item instanceof AntragsdatenGroupType) var groupItem = items.stream().filter(item -> item instanceof AntragsdatenGroupType)
.map(item -> ((AntragsdatenGroupType) item)) .map(item -> ((AntragsdatenGroupType) item))
.map(group -> group.getValue().getItem()) .map(AntragsdatenGroupType::getItem)
.flatMap(List::stream).findFirst(); .flatMap(List::stream).findFirst();
assertThat(groupItem).isPresent().get().usingRecursiveComparison().isEqualTo(createMultiValueField()); assertThat(groupItem).isPresent().get().usingRecursiveComparison().isEqualTo(createMultiValueField());
} }
private AntragsdatenType mapToAntragsdaten() { private Antragsdaten mapToAntragsdaten() {
var erweiterungType = exportVorgangService.createVorgangType(buildVorgang()).getAnwendungsspezifischeErweiterungXML(); var erweiterungType = exportVorgangService.createVorgangType(buildVorgang()).getAnwendungsspezifischeErweiterungXML();
assertThat(erweiterungType.getAny()).hasSize(1).first().isInstanceOf(AntragsdatenType.class); assertThat(erweiterungType.getAny()).hasSize(1).first().isInstanceOf(Antragsdaten.class);
return (AntragsdatenType) erweiterungType.getAny().get(0); return (Antragsdaten) erweiterungType.getAny().get(0);
} }
private VorgangWithEingang buildVorgang() { private VorgangWithEingang buildVorgang() {
......
...@@ -9,6 +9,7 @@ import java.util.Collections; ...@@ -9,6 +9,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
...@@ -22,7 +23,6 @@ import de.xoev.xdomea.AntragsdatenItemType; ...@@ -22,7 +23,6 @@ import de.xoev.xdomea.AntragsdatenItemType;
import de.xoev.xdomea.AntragsdatenMultiValueFieldType; import de.xoev.xdomea.AntragsdatenMultiValueFieldType;
import de.xoev.xdomea.AntragsdatenSingleValueFieldType; import de.xoev.xdomea.AntragsdatenSingleValueFieldType;
import de.xoev.xdomea.DatatypeType; import de.xoev.xdomea.DatatypeType;
import de.xoev.xdomea.ItemListType;
class FormDataMapperTest { class FormDataMapperTest {
...@@ -36,7 +36,7 @@ class FormDataMapperTest { ...@@ -36,7 +36,7 @@ class FormDataMapperTest {
private DateConverter dateConverter; private DateConverter dateConverter;
@Nested @Nested
class TestToAntragsdatenType { class TestToAntragsdaten {
@Mock @Mock
private VorgangWithEingang vorgang; private VorgangWithEingang vorgang;
...@@ -46,16 +46,16 @@ class FormDataMapperTest { ...@@ -46,16 +46,16 @@ class FormDataMapperTest {
doReturn(new Object()).when(formDataMapper).formatValue(any(), any()); doReturn(new Object()).when(formDataMapper).formatValue(any(), any());
var vorgang = VorgangWithEingangTestFactory.create(); var vorgang = VorgangWithEingangTestFactory.create();
formDataMapper.toAntragsdatenType(vorgang); formDataMapper.toAntragsdaten(vorgang);
verify(formDataMapper).buileItemListType(vorgang.getEingang().getFormData()); verify(formDataMapper).buildAntragsdaten(vorgang.getEingang().getFormData());
} }
@Test @Test
void shouldMapEingangNull() { void shouldMapEingangNull() {
var antragsdatenType = formDataMapper.toAntragsdatenType(vorgang); var Antragsdaten = formDataMapper.toAntragsdaten(vorgang);
assertThat(antragsdatenType.getItem()).isEmpty(); assertThat(Antragsdaten.getItem()).isEmpty();
} }
@Test @Test
...@@ -63,28 +63,36 @@ class FormDataMapperTest { ...@@ -63,28 +63,36 @@ class FormDataMapperTest {
var eingang = mock(Eingang.class); var eingang = mock(Eingang.class);
when(vorgang.getEingang()).thenReturn(eingang); when(vorgang.getEingang()).thenReturn(eingang);
var antragsdatenType = formDataMapper.toAntragsdatenType(vorgang); var Antragsdaten = formDataMapper.toAntragsdaten(vorgang);
assertThat(antragsdatenType.getItem()).isEmpty(); assertThat(Antragsdaten.getItem()).isEmpty();
} }
} }
@Nested @Nested
class TestBuildItemListType { class TestBuildAntragsdaten {
@Mock private final Map<?,?> formData = EingangTestFactory.create().getFormData();
private AntragsdatenItemType antragsdatenItemType1; private final List<AntragsdatenItemType> items = AntragsdatenItemTypeTestFactory.createAntragsdatenItemTypes();
@Mock
private AntragsdatenItemType antragsdatenItemType2; @BeforeEach
void init() {
doReturn(items).when(formDataMapper).buildItems(any());
}
@Test @Test
void shouldAddItems() { void shouldCallBuildItems() {
doReturn(List.of(antragsdatenItemType1, antragsdatenItemType2)).when(formDataMapper).buildItems(any()); 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 { ...@@ -133,9 +141,7 @@ class FormDataMapperTest {
private static final String NAME = "name"; private static final String NAME = "name";
private static final Map<String, Object> FORMDATA_SUBMAP = Map.of("key", "value"); private static final Map<String, Object> FORMDATA_SUBMAP = Map.of("key", "value");
private final List<AntragsdatenItemType> items = AntragsdatenItemTypeTestFactory.createAntragsdatenItemTypes();
@Mock
private ItemListType itemListType;
@Test @Test
void shouldSetName() { void shouldSetName() {
...@@ -147,21 +153,21 @@ class FormDataMapperTest { ...@@ -147,21 +153,21 @@ class FormDataMapperTest {
} }
@Test @Test
void shouldSetValue() { void shouldSetItems() {
doReturn(itemListType).when(formDataMapper).buileItemListType(any()); doReturn(items).when(formDataMapper).buildItems(any());
var antragsdatenGroup = (AntragsdatenGroupType) formDataMapper.buildAntragsdatenGroup(NAME, FORMDATA_SUBMAP); var antragsdatenGroup = (AntragsdatenGroupType) formDataMapper.buildAntragsdatenGroup(NAME, FORMDATA_SUBMAP);
assertThat(antragsdatenGroup.getValue()).isEqualTo(itemListType); assertThat(antragsdatenGroup.getItem()).containsExactlyElementsOf(items);
} }
@Test @Test
void shouldCallBuildItemListType() { void shouldCallBuildItems() {
doReturn(new Object()).when(formDataMapper).formatValue(any(), any()); doReturn(new Object()).when(formDataMapper).formatValue(any(), any());
formDataMapper.buildAntragsdatenGroup(NAME, FORMDATA_SUBMAP); formDataMapper.buildAntragsdatenGroup(NAME, FORMDATA_SUBMAP);
verify(formDataMapper).buileItemListType(FORMDATA_SUBMAP); verify(formDataMapper).buildItems(FORMDATA_SUBMAP);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment