Skip to content
Snippets Groups Projects

Kop 2884 mapping von antragsteller

Merged Jan Zickermann requested to merge KOP-2884-Mapping-von-Antragsteller into main
Files
12
package de.ozgcloud.eingang.semantik.enginebased.formsolutions.mapper;
import java.util.Map;
import java.util.stream.Collectors;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Named;
import org.mapstruct.ReportingPolicy;
import de.ozgcloud.eingang.common.formdata.Antragsteller;
@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR)
public interface FSAntragstellerMapper {
String NAT_ANREDE_KEY = "AS_Anrede";
String NAT_VORNAME_KEY = "AS_Vorname";
String NAT_NACHNAME_KEY = "AS_Name";
String NAT_GEBURTSNAME_KEY = "AS_Geburtsname";
String NAT_GEBURTSDATUM_KEY = "AS_Geburtsdatum";
String NAT_GEBURTSORT_KEY = "AS_Geburtsort";
String NAT_EMAIL_KEY = "AS_E-Mail";
String NAT_TELEFON_KEY = "AS_Telefon";
String NAT_TELEFON1_KEY = "AS_Telefon_Festnetz";
String NAT_TELEFON2_KEY = "AS_Telefon_Mobil";
String NAT_STRASSE_KEY = "AS_Strasse";
String NAT_HAUSNUMMER_KEY = "AS_Hausnummer";
String NAT_PLZ_KEY = "AS_PLZ";
String NAT_ORT_KEY = "AS_Ort";
String JUR_KONTAKT_ANREDE_KEY = "AS_Firma_Kontakt_Anrede";
String JUR_NAME_KEY = "AS_Firma_Name";
String JUR_KONTAKT_VORNAME_KEY = "AS_Firma_Kontakt_Vorname";
String JUR_KONTAKT_NACHNAME_KEY = "AS_Firma_Kontakt_Name";
String JUR_KONTAKT_EMAIL_KEY = "AS_Firma_Kontakt_E-Mail";
String JUR_KONTAKT_TELEFON_KEY = "AS_Firma_Kontakt_Telefon";
String JUR_STRASSE_KEY = "AS_Firma_Strasse";
String JUR_HAUSNUMMER_KEY = "AS_Firma_Hausnummer";
String JUR_PLZ_KEY = "AS_Firma_PLZ";
String JUR_ORT_KEY = "AS_Firma_Ort";
@Mapping(target = "anrede", source = NAT_ANREDE_KEY)
@Mapping(target = "firmaName", ignore = true)
@Mapping(target = "vorname", source = NAT_VORNAME_KEY)
@Mapping(target = "nachname", source = NAT_NACHNAME_KEY)
@Mapping(target = "geburtsname", source = NAT_GEBURTSNAME_KEY)
@Mapping(target = "geburtsdatum", source = NAT_GEBURTSDATUM_KEY)
@Mapping(target = "geburtsort", source = NAT_GEBURTSORT_KEY)
@Mapping(target = "email", source = NAT_EMAIL_KEY)
@Mapping(target = "telefon", source = NAT_TELEFON_KEY)
@Mapping(target = "strasse", source = NAT_STRASSE_KEY)
@Mapping(target = "hausnummer", source = NAT_HAUSNUMMER_KEY)
@Mapping(target = "plz", source = NAT_PLZ_KEY)
@Mapping(target = "ort", source = NAT_ORT_KEY)
@Mapping(target = "postfachId", ignore = true)
@Mapping(target = "data", expression = "java( Map.of() )")
Antragsteller mapNaturalPerson(Map<String, String> stringValues);
@Mapping(target = "anrede", source = NAT_ANREDE_KEY)
@Mapping(target = "firmaName", source = JUR_NAME_KEY)
@Mapping(target = "vorname", source = NAT_VORNAME_KEY)
@Mapping(target = "nachname", source = NAT_NACHNAME_KEY)
@Mapping(target = "geburtsname", ignore = true)
@Mapping(target = "geburtsdatum", ignore = true)
@Mapping(target = "geburtsort", ignore = true)
@Mapping(target = "email", source = NAT_EMAIL_KEY)
@Mapping(target = "telefon", source = NAT_TELEFON_KEY)
@Mapping(target = "strasse", source = JUR_STRASSE_KEY)
@Mapping(target = "hausnummer", source = JUR_HAUSNUMMER_KEY)
@Mapping(target = "plz", source = JUR_PLZ_KEY)
@Mapping(target = "ort", source = JUR_ORT_KEY)
@Mapping(target = "postfachId", ignore = true)
@Mapping(target = "data", expression = "java( Map.of() )")
Antragsteller mapJuristicPerson(Map<String, String> stringValues);
default Antragsteller mapAntragsteller(Map<String, String> stringValues) {
var normalizedStringValues = normalizeStringValues(stringValues);
return stringValues.containsKey(JUR_NAME_KEY)
? mapJuristicPerson(normalizedStringValues)
: mapNaturalPerson(normalizedStringValues);
}
@Named("normalizeStringValues")
default Map<String, String> normalizeStringValues(Map<String, String> stringValues) {
return stringValues.entrySet().stream()
.collect(Collectors.toMap(
e -> normalizeStringValueKey(e.getKey()),
Map.Entry::getValue,
this::combineStringValues
));
}
@Named("combineStringValues")
default String combineStringValues(String oldValue, String newValue) {
return oldValue.contains(newValue)
? oldValue
: String.join(" | ", oldValue, newValue);
}
@Named("normalizeStringValueKey")
default String normalizeStringValueKey(String stringValueKey) {
return switch (stringValueKey) {
case NAT_TELEFON1_KEY, NAT_TELEFON2_KEY, JUR_KONTAKT_TELEFON_KEY -> NAT_TELEFON_KEY;
case JUR_KONTAKT_ANREDE_KEY -> NAT_ANREDE_KEY;
case JUR_KONTAKT_VORNAME_KEY -> NAT_VORNAME_KEY;
case JUR_KONTAKT_NACHNAME_KEY -> NAT_NACHNAME_KEY;
case JUR_KONTAKT_EMAIL_KEY -> NAT_EMAIL_KEY;
default -> stringValueKey;
};
}
}
Loading