diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java index 70268f833726fb7fa913872bfbb30d7436341da4..fd0a4ed23de2012b532a795ba688ada1262ecee3 100644 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java @@ -1,5 +1,7 @@ package de.ozgcloud.eingang.enterprise.entry; +import java.util.Map; + import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Builder; @@ -12,6 +14,7 @@ import lombok.extern.jackson.Jacksonized; public class EntryData { private ControlData control; + private Map<String, EntryFormDataItem> formData; @Builder @Getter @@ -32,4 +35,11 @@ public class EntryData { private String address; } } + + @Builder + @Getter + @Jacksonized + public static class EntryFormData { + + } } diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java similarity index 100% rename from enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java rename to enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java new file mode 100644 index 0000000000000000000000000000000000000000..0a748a409ec22fb8a4711365ea5d5472be72aec1 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java @@ -0,0 +1,30 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import java.time.LocalDate; + +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +@ToString(onlyExplicitlyIncluded = true) +public class EntryFormDataField implements EntryFormDataItem { + + private String name; + @ToString.Include + private String label; + + private String stringValue; + private Boolean booleanValue; + private Number numberValue; + private LocalDate dateValue; + + @Override + public boolean isFormField() { + return true; + } + +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java new file mode 100644 index 0000000000000000000000000000000000000000..c2c318fd80dfa8319fa565c56b7a5ee8a0343bf9 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java @@ -0,0 +1,21 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonSubTypes.Type; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; + +@JsonTypeInfo(use = Id.DEDUCTION) +@JsonSubTypes({ @Type(EntryFormDataField.class), @Type(EntryFormDataSubForm.class) }) +public interface EntryFormDataItem { + String getName(); + String getLabel(); + + default boolean isSubForm() { + return false; + } + + default boolean isFormField() { + return false; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java new file mode 100644 index 0000000000000000000000000000000000000000..650e6221b28bc1c530ee78607a2750aea8eb7ff5 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java @@ -0,0 +1,28 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import java.util.Map; + +import lombok.Builder; +import lombok.Getter; +import lombok.Singular; +import lombok.ToString; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +@ToString(onlyExplicitlyIncluded = true) +public class EntryFormDataSubForm implements EntryFormDataItem { + + private String name; + @ToString.Include + private String label; + + @Singular + private Map<String, EntryFormDataItem> formItems; + + @Override + public boolean isSubForm() { + return true; + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java similarity index 100% rename from enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java rename to enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java index ef11b273345c61a2713add9a7b7d7a9664aee8f7..855fa290a29a92945a32767c9f90452b907a9e4c 100644 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java @@ -8,6 +8,7 @@ public class EntryDataTestFactory { public static EntryData.EntryDataBuilder createBuilder() { return EntryData.builder() - .control(ControlDataTestFactory.create()); + .control(ControlDataTestFactory.create()) + .formData(EntryFormDataTestFactory.create()); } } diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..301c6387585739c4fb61fa88b5da0e9f9fa90424 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java @@ -0,0 +1,22 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import java.util.Map; + +public class EntryFormDataTestFactory { + + 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("Test").build()) + .build()); + } + + public static EntryFormDataSubForm.EntryFormDataSubFormBuilder createBuilder() { + return EntryFormDataSubForm.builder() + .name("antragsteller") + .formItem("person_oder_firma", EntryFormDataField.builder().label("Anrede").stringValue("Herr").build()); + } + +} diff --git a/enterprise-adapter/src/test/resources/request/simple.json b/enterprise-adapter/src/test/resources/request/simple.json index aae35e5dff4c81bf23edd6c0c961bcd7bdd59742..bd399f1cbee2c2fa7a4f2e677b19540199d8924b 100644 --- a/enterprise-adapter/src/test/resources/request/simple.json +++ b/enterprise-adapter/src/test/resources/request/simple.json @@ -12,21 +12,23 @@ "formId": "KFAS_LIVE_KI_10_Haltverbot_befristet", "name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)" }, - "antragsteller": { - "label": "Antragstellende Person", - "value": { - "person_oder_firma": { - "label": "Anrede", - "stringValue": "Herr" - }, - "vorname": { - "label": "Vorname", - "stringValue": "Theo" - }, - "nachname": { - "label": "Nachname", - "stringValue": "Test" - } + "formData": { + "antragsteller": { + "label": "Antragstellende Person", + "formItems": { + "person_oder_firma": { + "label": "Anrede", + "stringValue": "Herr" + }, + "vorname": { + "label": "Vorname", + "stringValue": "Theo" + }, + "nachname": { + "label": "Nachname", + "stringValue": "Test" + } } - } + } + } } \ No newline at end of file