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

Merge pull request 'OZG-3301: Reihenfolge der Antragsdaten behalten' (#25)...

Merge pull request 'OZG-3301: Reihenfolge der Antragsdaten behalten' (#25) from OZG-3301-keep_fields_order into master

Reviewed-on: https://git.ozg-sh.de/mgm/intelliform-adapter/pulls/25
parents 3c0d1def 2705b581
Branches
Tags
No related merge requests found
Showing
with 277 additions and 27 deletions
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
package de.itvsh.kop.eingangsadapter.common.formdata; package de.itvsh.kop.eingangsadapter.common.formdata;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import lombok.NonNull; import lombok.NonNull;
...@@ -36,7 +36,7 @@ public class FormDataUtils { ...@@ -36,7 +36,7 @@ public class FormDataUtils {
private FormDataUtils(FormData formData) { private FormDataUtils(FormData formData) {
baseFormData = formData; baseFormData = formData;
modifieableData = new HashMap<>(formData.getFormData()); modifieableData = new LinkedHashMap<>(formData.getFormData());
} }
public static FormDataUtils from(FormData formData) { public static FormDataUtils from(FormData formData) {
......
...@@ -27,6 +27,7 @@ import java.io.IOException; ...@@ -27,6 +27,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -72,7 +73,7 @@ class XmlToJavaMapsMapper { ...@@ -72,7 +73,7 @@ class XmlToJavaMapsMapper {
private Map<String, Object> mapChildNodes(Node node) { private Map<String, Object> mapChildNodes(Node node) {
Map<String, Object> childs = new HashMap<>(); Map<String, Object> childs = new LinkedHashMap<>();
NodeList nodeList = node.getChildNodes(); NodeList nodeList = node.getChildNodes();
......
...@@ -23,17 +23,15 @@ ...@@ -23,17 +23,15 @@
*/ */
package de.itvsh.kop.eingangsadapter.intelliform; package de.itvsh.kop.eingangsadapter.intelliform;
import static de.itvsh.kop.eingangsadapter.intelliform.XmlDaten1Container.*;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.io.IOException;
import java.util.Optional; import java.util.Optional;
import javax.xml.bind.JAXBException; import de.itvsh.ozg.pluto.vorgang.GrpcFormData;
import javax.xml.parsers.ParserConfigurationException; import lombok.SneakyThrows;
import javax.xml.soap.SOAPException;
import org.junit.jupiter.api.BeforeEach; 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;
...@@ -48,7 +46,6 @@ import org.springframework.ws.test.server.MockWebServiceClient; ...@@ -48,7 +46,6 @@ import org.springframework.ws.test.server.MockWebServiceClient;
import org.springframework.ws.test.server.RequestCreators; import org.springframework.ws.test.server.RequestCreators;
import org.springframework.ws.test.server.ResponseActions; import org.springframework.ws.test.server.ResponseActions;
import org.springframework.ws.test.server.ResponseMatchers; import org.springframework.ws.test.server.ResponseMatchers;
import org.xml.sax.SAXException;
import de.itvsh.kop.eingangsadapter.router.VorgangRemoteService; import de.itvsh.kop.eingangsadapter.router.VorgangRemoteService;
import de.itvsh.ozg.pluto.vorgang.GrpcEingang; import de.itvsh.ozg.pluto.vorgang.GrpcEingang;
...@@ -82,7 +79,7 @@ class FormDataEndpointITCase { ...@@ -82,7 +79,7 @@ class FormDataEndpointITCase {
class TestAntragWithAttachments { class TestAntragWithAttachments {
@BeforeEach @BeforeEach
void init() throws SAXException, IOException, ParserConfigurationException, JAXBException, SOAPException { void init() {
sendWebserviceRequest(REQUEST); sendWebserviceRequest(REQUEST);
verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture()); verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture());
...@@ -106,7 +103,7 @@ class FormDataEndpointITCase { ...@@ -106,7 +103,7 @@ class FormDataEndpointITCase {
} }
@Test @Test
void checkAttachmentsCount() throws IOException { void checkAttachmentsCount() {
assertThat(grpcEingangCaptor.getValue().getNumberOfAttachments()).isEqualTo(2); assertThat(grpcEingangCaptor.getValue().getNumberOfAttachments()).isEqualTo(2);
} }
...@@ -177,13 +174,13 @@ class FormDataEndpointITCase { ...@@ -177,13 +174,13 @@ class FormDataEndpointITCase {
class TestOtherNameForFormData { class TestOtherNameForFormData {
@Test @Test
void shouldSucceed() throws IOException { // NOSONAR contains andExpect of mockClient void shouldSucceed() { // NOSONAR contains andExpect of mockClient
sendWebserviceRequest("soaprequest_other-name.xml") sendWebserviceRequest("soaprequest_other-name.xml")
.andExpect(ResponseMatchers.noFault()); .andExpect(ResponseMatchers.noFault());
} }
@Test @Test
void shouldHaveOrgaId() throws IOException { void shouldHaveOrgaId() {
sendWebserviceRequest("soaprequest_other-name.xml"); sendWebserviceRequest("soaprequest_other-name.xml");
verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), any()); verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), any());
...@@ -193,7 +190,81 @@ class FormDataEndpointITCase { ...@@ -193,7 +190,81 @@ class FormDataEndpointITCase {
} }
private ResponseActions sendWebserviceRequest(String requestFileName) throws IOException { @Nested
class TestKeepFormDataOrder {
@Test
void shouldKeepEingangFieldsOrder() {
var grpcFormData = requestFormData();
assertThat(grpcFormData.getFieldList()).isEqualTo(XmlDaten1Container.EINGANG_FIELDS);
}
@Test
void shouldKeepZustaendigestelleFieldsOrder() {
var formFields = requestFormData().getForm(0).getFieldList();
assertThat(formFields).isEqualTo(XmlDaten1Container.ZUSTAENDIGESTELLE_FIELDS);
}
@Test
void shouldKeepEmpfangendestelleFieldsOrder() {
var formFields = requestFormData().getForm(1).getFieldList();
assertThat(formFields).isEqualTo(XmlDaten1Container.EMPFANGENDESTELLE_FIELDS);
}
@Test
void shouldKeepErklaerungenFieldsOrder() {
var formFields = requestFormData().getForm(2).getFieldList();
assertThat(formFields).isEqualTo(XmlDaten1Container.ERKLAERUNGEN_FIELDS);
}
@Test
void shouldKeepAnsprechpartnerFieldsOrder() {
var formFields = requestFormData().getForm(3).getSubForm(0).getFieldList();
assertThat(formFields).isEqualTo(XmlDaten1Container.ANSPRECHPARTNER_FIELDS);
}
@Test
void shouldKeepAnschriftFieldsOrder() {
var formFields = requestFormData().getForm(3).getSubForm(0).getSubForm(0).getFieldList();
assertThat(formFields).isEqualTo(XmlDaten1Container.ANSCHRIFT_FIELDS);
}
@Test
void shouldKeepKontaktFieldsOrder() {
var formFields = requestFormData().getForm(3).getSubForm(0).getSubForm(1).getFieldList();
assertThat(formFields).isEqualTo(XmlDaten1Container.KONTAKT_FIELDS);
}
@Test
void shouldKeepVerwaltungsleistungFieldsOrder() {
var formFields = requestFormData().getForm(3).getSubForm(1).getSubForm(0).getFieldList();
assertThat(formFields).isEqualTo(XmlDaten1Container.VERWALTUNGSLEISTUNG_FIELDS);
}
@Test
void shouldKeepAusgewaehlteZustaendigestelleFieldsOrder() {
var formFields = requestFormData().getForm(3).getSubForm(1).getSubForm(0).getSubForm(0).getFieldList();
assertThat(formFields).isEqualTo(XmlDaten1Container.AUSGEWAEHLTE_ZUSTAENDIGESTELLE_FIELDS);
}
private GrpcFormData requestFormData() {
sendWebserviceRequest(REQUEST_XML_NAME);
verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), any());
return grpcEingangCaptor.getValue().getFormData();
}
}
@SneakyThrows
private ResponseActions sendWebserviceRequest(String requestFileName) {
return mockClient.sendRequest(RequestCreators.withSoapEnvelope(getResource(requestFileName))) return mockClient.sendRequest(RequestCreators.withSoapEnvelope(getResource(requestFileName)))
.andExpect(ResponseMatchers.noFault()) .andExpect(ResponseMatchers.noFault())
.andExpect(ResponseMatchers.payload(getResource(RESPONSE))); .andExpect(ResponseMatchers.payload(getResource(RESPONSE)));
......
package de.itvsh.kop.eingangsadapter.intelliform;
import de.itvsh.ozg.pluto.vorgang.GrpcFormField;
public class GrpcFormFieldTestFactory {
public static GrpcFormField create(String fieldName, String fieldValue) {
return GrpcFormField.newBuilder().setName(fieldName).setValue(fieldValue).build();
}
}
package de.itvsh.kop.eingangsadapter.intelliform;
import de.itvsh.ozg.pluto.vorgang.GrpcFormField;
import java.util.List;
import static de.itvsh.kop.eingangsadapter.intelliform.GrpcFormFieldTestFactory.*;
public class XmlDaten1Container {
public final static String REQUEST_XML_NAME = "XML-Daten-1-SoapRequest.xml";
public static final List<GrpcFormField> EINGANG_FIELDS = List.of(
create("kontaktsystemtypid", "233034600"),
create("kontaktsystemtypidln", "233034601"),
create("AnliegenID", "8966671"),
create("mailboxguid", "f977368b-6991-46b9-af18-8a2a03d9ad1b"),
create("GebietID", "9007314"),
create("logourl", "http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc")
);
public static final List<GrpcFormField> EMPFANGENDESTELLE_FIELDS = List.of(
create("OrganisationseinheitenAuswahl", "9068873"),
create("OrganisationseinheitenID", "9068873"),
create("OrganisationseinheitenBEZEICHNUNG", "Einheitlicher Ansprechpartner\n\t\t\tSchleswig-Holstein"),
create("strasse", "Reventlouallee"),
create("hausnummer", "6"),
create("postleitzahl", "24105"),
create("ortID", "9006402"),
create("ort", "Kiel"),
create("telefonnummer", "+49 431 988-8650"),
create("telefaxnummer", "+49 431 988-6161111"),
create("emailadresse", "info@ea-sh.de"),
create("demailadresse", "ea-poststelle@ea-sh.de-mail.de"),
create("kontaktsystem_kennung", "afmsh:9068873_AusnahmeLKWFahrverbot"),
create("kontaktsystem_kennungzusatz", "alle")
);
public static final List<GrpcFormField> ERKLAERUNGEN_FIELDS = List.of(
create("check_gebuehren", "true"),
create("check_richtigkeit", "true"),
create("check_datenschutz", "true"),
create("check_missbrauch", "true"),
create("b_gebuehren_beschriftung", """
* Mir ist bekannt, dass durch das Einreichen
des elektronischen Antrages von der zuständigen Stelle Gebühren
erhoben werden können."""),
create("b_gebuehren_intro", """
Gebühr bei Ausstellung des kleinen Waffenscheins:
60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro.
Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur
Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur
Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die
Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister,
eine Auskunft aus dem zentralen staatsanwaltschaftlichen
Verfahrensregister, eine Stellungnahme der örtlichen
Polizeidienststelle und Ihrer Wohnsitzgemeinde ein."""),
create("b_richtigkeit", "* Ich bestätige die Richtigkeit meiner Angaben."),
create("b_datenschutz", """
* Ich erkläre mich damit einverstanden, dass der
Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner
Aufgaben meine Daten unter Einhaltung der Bestimmungen der
Datenschutz-Grundverordnung (DS-GVO) und des
Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert,
verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die
für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich
mit der rechtskonformen Datenverarbeitung und Speicherung durch die
zuständige Stelle einverstanden. Mir ist bekannt, dass ich die
Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber
dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee
6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für
die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind
davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen
Daten und die mir nach den datenschutzrechtlichen Regelungen
zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung
Kenntnis erlangt."""),
create("b_missbrauch", """
* Mir ist bekannt, dass zur Verfolgung widerrechtlicher
Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes
aufgezeichnet und verwendet werden können."""),
create("policyurl", "http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc")
);
public static final List<GrpcFormField> ANSPRECHPARTNER_FIELDS = List.of(
create("anrede", "Herr"),
create("vorname", "Max"),
create("familienname", "Testermann")
);
public static final List<GrpcFormField> ANSCHRIFT_FIELDS = List.of(
create("strasse", "Königsweg"),
create("hausnummer", "74"),
create("postleitzahl", "24837"),
create("ort", "Schleswig"),
create("staat", "Deutschland")
);
public static final List<GrpcFormField> KONTAKT_FIELDS = List.of(
create("telefonnummer", "+ 49 4621 9654"),
create("mobilnummer", "+49 123"),
create("telefaxnummer", "+ 49 4621 9654"),
create("emailadresse", "max.testermann@gmx.de"),
create("demailadresse", "max.testermann@gmx.de-mail.de")
);
public static final List<GrpcFormField> AUSGEWAEHLTE_ZUSTAENDIGESTELLE_FIELDS = List.of(
create("OrganisationseinheitenID", "9535669"),
create("OrganisationseinheitenBEZEICHNUNG", "Kreis\n\t\t\t\t\t\tSchleswig-Flensburg/Kreisverwaltung - Allgemeine\n\t\t\t\t\t\tOrdnungsangelegenheiten")
);
public static final List<GrpcFormField> VERWALTUNGSLEISTUNG_FIELDS = List.of(
create("GebietID", "9007314"),
create("GebietBEZEICHNUNG", "Schleswig"),
create("AnliegenID", "8966671"),
create("AnliegenBEZEICHNUNG", "Waffenschein / Kleiner Waffenschein"),
create("leikaKEYLIST", "99089008000000;99089008001000")
);
public static final List<GrpcFormField> ZUSTAENDIGESTELLE_FIELDS = List.of(
create("OrganisationseinheitenAuswahl", "9535669"),
create("OrganisationseinheitenID", "9535669"),
create("OrganisationseinheitenBEZEICHNUNG", "Kreis\n\t\t\tSchleswig-Flensburg/Kreisverwaltung - Allgemeine\n\t\t\tOrdnungsangelegenheiten"),
create("strasse", "Flensburger Straße"),
create("hausnummer", "7"),
create("postleitzahl", "24837"),
create("ortID", "9007314"),
create("ort", "Schleswig"),
create("telefonnummer", "04621 87-0"),
create("telefaxnummer", "04621 87-366"),
create("emailadresse", "Gefahrenabwehr@Kiel.de"),
create("kontaktsystem_kennung", "afmsh:9535669_kleinerWaffenschein"),
create("AnliegenBEZEICHNUNG", "Waffenschein / Kleiner Waffenschein"),
create("leikaKEYLIST", "99089008000000;99089008001000"),
create("auswahl_zustellung", "abholen"),
create("b_zustellung", "Ich hole den Kleinen Waffenschein selbst ab.")
);
}
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend">
<data>
<attachments>
<attributes>
<key>X-IntelliForm-Signed</key>
<value>false</value>
</attributes>
<content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCTxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+Cgk8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KCTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+Cgk8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KCTxuYW1laWQ+Y2JhY2IwMWEtMjgxMC0xMWVjLWJiNmYtYzMxOTM5Zjg4NzRlPC9uYW1laWQ+Cgk8YW50cmFnc3RlbGxlcj4KCQk8cGVyc19hbnJlZGU+SGVyciQwMzwvcGVyc19hbnJlZGU+CgkJPHBlcnNfbmFjaG5hbWU+VGVzdGVybWFubjwvcGVyc19uYWNobmFtZT4KCQk8cGVyc192b3JuYW1lPk1heDwvcGVyc192b3JuYW1lPgoJCTxwZXJzX2dlYnVydHNuYW1lPk1heCBUZXN0ZXJtYW5uPC9wZXJzX2dlYnVydHNuYW1lPgoJCTxwZXJzX2dlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9wZXJzX2dlYnVydHNkYXR1bT4KCQk8cGVyc19nZWJ1cnRzb3J0PkZsZW5zYnVyZzwvcGVyc19nZWJ1cnRzb3J0PgoJCTxwZXJzX2dlYnVydHNsYW5kPmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX2dlYnVydHNsYW5kPgoJCTxwZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PgoJCTxiX2FucmVkZT5IZXJyPC9iX2FucmVkZT4KCQk8Yl9hbnJlZGVfc2NobHVlc3NlbG5yPjAzPC9iX2FucmVkZV9zY2hsdWVzc2VsbnI+CgkJPGJfZ2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2JfZ2VidXJ0c2xhbmQ+CgkJPGJfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+MDAwPC9iX2dlYnVydHNsYW5kX3NpZ25hdHVyPgoJCTxiX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2g8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+MDAwPC9iX3N0YWF0c2FuZ2Vob2VyaWdrZWl0X3NpZ25hdHVyPgoJCTxzaF9zdHJhc3NlPkvDtm5pZ3N3ZWc8L3NoX3N0cmFzc2U+CgkJPHNoX2hhdXNudW1tZXI+NzQ8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yNDgzNzwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3MzE0JDAxMDU5MDc1PC9vcnRfYXVzd2FobD4KCQk8b3J0PlNjaGxlc3dpZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDU5MDc1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZvbm51bW1lcj4KCQk8a29udF9tb2JpbG51bW1lcj4rNDkgMTIzPC9rb250X21vYmlsbnVtbWVyPgoJCTxrb250X3RlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZheG51bW1lcj4KCQk8a29udF9lbWFpbD5tYXgudGVzdGVybWFubkBnbXguZGU8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4KCQk8cGVyc29lbmxpY2hlRWlnbnVuZz4KCQkJPG1hZW5nZWx2b3JoYW5kZW4+ZmFsc2U8L21hZW5nZWx2b3JoYW5kZW4+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbj5mYWxzZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz5mYWxzZTwvTWl0Z2xpZWRzY2hhZnRJblZlcmJvdGVybmVyVmVyZWluaWd1bmc+CgkJPC9wZXJzb2VubGljaGVFaWdudW5nPgoJPC9hbnRyYWdzdGVsbGVyPgoJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCgkJCVNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQoJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPkZsZW5zYnVyZ2VyIFN0cmHDn2U8L3N0cmFzc2U+CgkJPGhhdXNudW1tZXI+NzwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDczMTQ8L29ydElEPgoJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+MDQ2MjEgODctMDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4wNDYyMSA4Ny0zNjY8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2UgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjk1MzU2Njlfa2xlaW5lcldhZmZlbnNjaGVpbjwva29udGFrdHN5c3RlbV9rZW5udW5nPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4KCQk8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJPGF1c3dhaGxfenVzdGVsbHVuZz5hYmhvbGVuPC9hdXN3YWhsX3p1c3RlbGx1bmc+CgkJPGJfenVzdGVsbHVuZz5JY2ggaG9sZSBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gc2VsYnN0IGFiLjwvYl96dXN0ZWxsdW5nPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KCTxlbXBmYW5nZW5kZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lcgoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVsPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+CgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+Cgk8L2VtcGZhbmdlbmRlc3RlbGxlPgoJPGVya2xhZXJ1bmdlbj4KCQk8Y2hlY2tfZ2VidWVocmVuPnRydWU8L2NoZWNrX2dlYnVlaHJlbj4KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+CgkJPGNoZWNrX2RhdGVuc2NodXR6PnRydWU8L2NoZWNrX2RhdGVuc2NodXR6PgoJCTxjaGVja19taXNzYnJhdWNoPnRydWU8L2NoZWNrX21pc3NicmF1Y2g+CgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbgoJCQlkZXMgZWxla3Ryb25pc2NoZW4gQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbgoJCQllcmhvYmVuIHdlcmRlbiBrw7ZubmVuLjwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz5HZWLDvGhyIGJlaSBBdXNzdGVsbHVuZyBkZXMga2xlaW5lbiBXYWZmZW5zY2hlaW5zOgoJCQk2MCwwMCBFdXJvLiBCZWFyYmVpdHVuZ3NnZWLDvGhyIGJlaSBWZXJzYWd1bmc6IDQ1LDAwIEV1cm8uCgkJCVNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIKCQkJRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyCgkJCVByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUKCQkJQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwKCQkJZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4KCQkJVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4KCQkJUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcgoJCQlFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyCgkJCUF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIKCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMKCQkJTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwKCQkJdmVyYXJiZWl0ZXQgdW5kIGRpZXNlIGltIFJhaG1lbiBkZXIgZ2VzZXR6bGljaGVuIEJlc3RpbW11bmdlbiBhbiBkaWUKCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoCgkJCW1pdCBkZXIgcmVjaHRza29uZm9ybWVuIERhdGVudmVyYXJiZWl0dW5nIHVuZCBTcGVpY2hlcnVuZyBkdXJjaCBkaWUKCQkJenVzdMOkbmRpZ2UgU3RlbGxlIGVpbnZlcnN0YW5kZW4uIE1pciBpc3QgYmVrYW5udCwgZGFzcyBpY2ggZGllCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyCgkJCWRlbSBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4sIFJldmVudGxvdWFsbGVlCgkJCTYsIDI0MTA1IEtpZWwgd2lkZXJydWZlbiBrYW5uLiBFaW4gV2lkZXJydWYgaXN0IGFiZXIgbnVyIHdpcmtzYW0gZsO8cgoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZAoJCQlkYXZvbiBuaWNodCBiZXRyb2ZmZW4uIMOcYmVyIGRpZSBWZXJhcmJlaXR1bmcgbWVpbmVyIHBlcnNvbmVuYmV6b2dlbmVuCgkJCURhdGVuIHVuZCBkaWUgbWlyIG5hY2ggZGVuIGRhdGVuc2NodXR6cmVjaHRsaWNoZW4gUmVnZWx1bmdlbgoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nCgkJCUtlbm50bmlzIGVybGFuZ3QuPC9iX2RhdGVuc2NodXR6PgoJCTxiX21pc3NicmF1Y2g+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlcgoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMKCQkJYXVmZ2V6ZWljaG5ldCB1bmQgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLjwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdlbj4KCTxsb2dvdXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5IZXJyPC9hbnJlZGU+CgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+CgkJCTxhbnNjaHJpZnQ+CgkJCQk8c3RyYXNzZT5Lw7ZuaWdzd2VnPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+NzQ8L2hhdXNudW1tZXI+CgkJCQk8cG9zdGZhY2ggLz4KCQkJCTxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KCQkJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJCQk8b3J0c3RlaWwgLz4KCQkJCTx6dXNhdHogLz4KCQkJCTxzdGFhdD5EZXV0c2NobGFuZDwvc3RhYXQ+CgkJCTwvYW5zY2hyaWZ0PgoJCQk8a29udGFrdD4KCQkJCTx0ZWxlZm9ubnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZm9ubnVtbWVyPgoJCQkJPG1vYmlsbnVtbWVyPis0OSAxMjM8L21vYmlsbnVtbWVyPgoJCQkJPHRlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmYXhudW1tZXI+CgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CgkJCTwva29udGFrdD4KCQk8L2Fuc3ByZWNocGFydG5lcj4KCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgoJCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZz4KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5LcmVpcwoJCQkJCQlTY2hsZXN3aWctRmxlbnNidXJnL0tyZWlzdmVyd2FsdHVuZyAtIEFsbGdlbWVpbmUKCQkJCQkJT3JkbnVuZ3NhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPlNjaGxlc3dpZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content>
<contentType>text/xml</contentType>
<id>myForm-xml</id>
<name>XML-Daten.xml</name>
</attachments>
<caller />
<client>sh-dev</client>
<clientId>sh-dev</clientId>
<customer>Kiel</customer>
<customerId>Kiel</customerId>
<form>SimpleFormSendetAnTestServer</form>
<formId>SimpleFormSendetAnTestServer</formId>
<id>20221212092912345678</id>
<primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId>
<sender>intelliform.ozg-sh.de</sender>
<timestamp>2022-12-12T09:30:29.443Z</timestamp>
<username />
</data>
</ns2:deposit>
</soap:Body>
</soap:Envelope>
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
package de.itvsh.kop.eingangsadapter.semantik.enginebased; package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
...@@ -74,7 +74,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { ...@@ -74,7 +74,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) { private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) {
return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)).map(Map.class::cast).map(HashMap::new); return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)).map(Map.class::cast).map(LinkedHashMap::new);
} }
private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder, private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder,
...@@ -96,7 +96,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { ...@@ -96,7 +96,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper {
} }
private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap) { private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap) {
var map = new HashMap<>(antragstellerMap); var map = new LinkedHashMap<>(antragstellerMap);
getFields().forEach(map::remove); getFields().forEach(map::remove);
return map; return map;
} }
...@@ -106,7 +106,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { ...@@ -106,7 +106,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper {
} }
private Map<String, Object> removeMappedData(Map<String, Object> formDataMap) { private Map<String, Object> removeMappedData(Map<String, Object> formDataMap) {
var editableMap = new HashMap<>(formDataMap); var editableMap = new LinkedHashMap<>(formDataMap);
editableMap.remove(ANTRAGSTELLER); editableMap.remove(ANTRAGSTELLER);
editableMap.remove(POSTFACH_ID); editableMap.remove(POSTFACH_ID);
return Collections.unmodifiableMap(editableMap); return Collections.unmodifiableMap(editableMap);
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
package de.itvsh.kop.eingangsadapter.semantik.enginebased; package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
...@@ -36,10 +36,10 @@ interface AfmEngineBasedMapper extends EngineBasedMapper { ...@@ -36,10 +36,10 @@ interface AfmEngineBasedMapper extends EngineBasedMapper {
static final String CONTROLDATA_METADATA_PROPERTYNAME = "metaData"; static final String CONTROLDATA_METADATA_PROPERTYNAME = "metaData";
default FormData addControlNode(FormData formData, String nodeName) { default FormData addControlNode(FormData formData, String nodeName) {
var editableFormMap = new HashMap<>(formData.getFormData()); var editableFormMap = new LinkedHashMap<>(formData.getFormData());
return Optional.ofNullable(getFormNode(formData, nodeName)) return Optional.ofNullable(getFormNode(formData, nodeName))
.map(HashMap::new) .map(LinkedHashMap::new)
.map(empfStelleMap -> { .map(empfStelleMap -> {
empfStelleMap.put(KOP_CONTROLDATA_NODENAME, this.buildControlDataMap()); empfStelleMap.put(KOP_CONTROLDATA_NODENAME, this.buildControlDataMap());
editableFormMap.put(nodeName, empfStelleMap); editableFormMap.put(nodeName, empfStelleMap);
...@@ -56,7 +56,7 @@ interface AfmEngineBasedMapper extends EngineBasedMapper { ...@@ -56,7 +56,7 @@ interface AfmEngineBasedMapper extends EngineBasedMapper {
} }
default Map<String, Object> buildControlDataMap() { default Map<String, Object> buildControlDataMap() {
var controlMap = new HashMap<String, Object>(); Map<String, Object> controlMap = new LinkedHashMap<>();
controlMap.put(CONTROLDATA_METADATA_PROPERTYNAME, "true"); controlMap.put(CONTROLDATA_METADATA_PROPERTYNAME, "true");
return controlMap; return controlMap;
} }
......
...@@ -25,7 +25,7 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased; ...@@ -25,7 +25,7 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.HashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -68,7 +68,7 @@ class AfmHeaderMapper implements AfmEngineBasedMapper { ...@@ -68,7 +68,7 @@ class AfmHeaderMapper implements AfmEngineBasedMapper {
} }
FormData removeMappedData(FormData formData) { FormData removeMappedData(FormData formData) {
var data = new HashMap<>(formData.getFormData()); var data = new LinkedHashMap<>(formData.getFormData());
data.remove(HEADER_FIELD); data.remove(HEADER_FIELD);
return formData.toBuilder().formData(data).build(); return formData.toBuilder().formData(data).build();
} }
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
package de.itvsh.kop.eingangsadapter.semantik.enginebased; package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
...@@ -69,10 +69,10 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { ...@@ -69,10 +69,10 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper {
} }
Map<String, Object> addMetaDataFlag(FormData formData) { Map<String, Object> addMetaDataFlag(FormData formData) {
var editableFormData = new HashMap<>(formData.getFormData()); var editableFormData = new LinkedHashMap<>(formData.getFormData());
Optional.ofNullable(getZustaendigeStelle(formData)) Optional.ofNullable(getZustaendigeStelle(formData))
.map(HashMap::new) .map(LinkedHashMap::new)
.ifPresent(zustaendigeStelle -> { .ifPresent(zustaendigeStelle -> {
zustaendigeStelle.put(KOP_CONTROLDATA_NODENAME, buildControlDataMap()); zustaendigeStelle.put(KOP_CONTROLDATA_NODENAME, buildControlDataMap());
editableFormData.put(ZUSTAENDIGESTELLE, zustaendigeStelle); editableFormData.put(ZUSTAENDIGESTELLE, zustaendigeStelle);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment