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

OZG-4428 map to formdata

parent 0c6602c9
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.eingang.enterprise.entry;
import java.time.LocalDate;
import java.util.Objects;
import org.apache.commons.lang3.StringUtils;
import lombok.Builder;
import lombok.Getter;
......@@ -27,4 +30,19 @@ public class EntryFormDataField implements EntryFormDataItem {
return true;
}
public Object getValue() {
if (StringUtils.isNotBlank(stringValue)) {
return stringValue;
}
if (Objects.nonNull(booleanValue)) {
return booleanValue;
}
if (Objects.nonNull(numberValue)) {
return numberValue;
}
if (Objects.nonNull(dateValue)) {
return dateValue;
}
return null;
}
}
package de.ozgcloud.eingang.enterprise.entry;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
......@@ -10,6 +14,9 @@ import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
@Mapper
public interface FormDataMapper {
public static final String VALUE_KEY = "value";
public static final String LABEL_KEY = "label";
@Mapping(target = "antragsteller", ignore = true)
@Mapping(target = "attachment", ignore = true)
@Mapping(target = "attachments", ignore = true)
......@@ -35,4 +42,20 @@ public interface FormDataMapper {
return ZustaendigeStelle.builder().organisationseinheitenId(organisationsEinheitenId).build();
}
default Map<String, Object> mapFormItems(Map<String, EntryFormDataItem> map) {
return map.entrySet().stream()
.map(entry -> Pair.of(entry.getKey(),
entry.getValue().isFormField() ? mapFormField((EntryFormDataField) entry.getValue())
: mapSubForm((EntryFormDataSubForm) entry.getValue())))
.collect(Collectors.toMap(Pair::getKey, Pair::getValue));
}
default Map<String, Object> mapFormField(EntryFormDataField field) {
return Map.of(LABEL_KEY, field.getLabel(), VALUE_KEY, field.getValue());
}
default Map<String, Object> mapSubForm(EntryFormDataSubForm subForm) {
return Map.of(LABEL_KEY, subForm.getLabel(), VALUE_KEY, mapFormItems(subForm.getFormItems()));
}
}
package de.ozgcloud.eingang.enterprise.entry;
import static de.ozgcloud.eingang.enterprise.entry.FormDataMapper.*;
import java.util.Map;
public class EntryFormDataTestFactory {
public static final String FORM_FIELD_NAME = "field_name";
public static final String FORM_FIELD_VALUE = "field_string_value";
public static final String FORM_FIELD_LABEL = "field_label";
public static final String SUB_FORM_NAME = "antragsteller";
public static final String SUB_FORM_LABEL = "Antragstellende Person";
public static final String SUB_FORM_FIELD_NAME = "lastname";
public static final String SUB_FORM_FIELD_LABEL = "Nachname";
public static final String SUB_FORM_FIELD_VALUE = "Täst";
public static Map<String, EntryFormDataItem> create() {
return Map.of(
"antragsteller", EntryFormDataSubForm.builder().label("Antragstellende Person")
.formItem("person_oder_firma", EntryFormDataField.builder().label("Anrede").stringValue("Herr").build())
.formItem("vorname", EntryFormDataField.builder().label("Vorname").stringValue("Theo").build())
.formItem("nachname", EntryFormDataField.builder().label("Nachname").stringValue("Täst").build())
FORM_FIELD_NAME, EntryFormDataField.builder().label(FORM_FIELD_LABEL).stringValue(FORM_FIELD_VALUE).build(),
SUB_FORM_NAME, EntryFormDataSubForm.builder().label(SUB_FORM_LABEL)
.formItem(SUB_FORM_FIELD_NAME,
EntryFormDataField.builder().label(SUB_FORM_FIELD_LABEL).stringValue(SUB_FORM_FIELD_VALUE).build())
.build());
}
public static EntryFormDataSubForm.EntryFormDataSubFormBuilder createBuilder() {
return EntryFormDataSubForm.builder()
.name("antragsteller")
.formItem("person_oder_firma", EntryFormDataField.builder().label("Anrede").stringValue("Herr").build());
public static Map<String, Object> createAsFormDataMap() {
return Map.of(
FORM_FIELD_NAME, Map.of(LABEL_KEY, FORM_FIELD_LABEL, VALUE_KEY, FORM_FIELD_VALUE),
SUB_FORM_NAME, Map.of(LABEL_KEY, SUB_FORM_LABEL, VALUE_KEY, Map.of(
SUB_FORM_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_FIELD_LABEL, VALUE_KEY, SUB_FORM_FIELD_VALUE))));
}
}
package de.ozgcloud.eingang.enterprise.entry;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
import org.mockito.InjectMocks;
class FormDataMapperTest {
@InjectMocks
private FormDataMapper mapper = Mappers.getMapper(FormDataMapper.class);
@Nested
class TestMapFormItems {
@Test
void shouldMapFormItems() {
var mapped = mapper.mapFormItems(EntryFormDataTestFactory.create());
assertThat(mapped).usingRecursiveComparison().isEqualTo(EntryFormDataTestFactory.createAsFormDataMap());
}
}
}
......@@ -13,18 +13,14 @@
"name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)"
},
"formData": {
"field_name": {
"label": "field_label",
"stringValue": "field_string_value"
},
"antragsteller": {
"label": "Antragstellende Person",
"formItems": {
"person_oder_firma": {
"label": "Anrede",
"stringValue": "Herr"
},
"vorname": {
"label": "Vorname",
"stringValue": "Theo"
},
"nachname": {
"lastname": {
"label": "Nachname",
"stringValue": "Täst"
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment