aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/Mzs2MsgConverter.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-08 13:41:27 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-08 13:41:27 +0200
commit6f450a1d3ff60557b1081f9e8ef6bd5f375db842 (patch)
tree336068552025782ec3f9716999fb3c391fbed9ea /src/main/java/at/gv/egiz/moazs/Mzs2MsgConverter.java
parent36fd031d1f0218e323b50e6d63eff4a7cee99cd7 (diff)
downloadmoa-zs-6f450a1d3ff60557b1081f9e8ef6bd5f375db842.tar.gz
moa-zs-6f450a1d3ff60557b1081f9e8ef6bd5f375db842.tar.bz2
moa-zs-6f450a1d3ff60557b1081f9e8ef6bd5f375db842.zip
Refactor: Consolidate Schema-Related Components
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/Mzs2MsgConverter.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/Mzs2MsgConverter.java321
1 files changed, 0 insertions, 321 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/Mzs2MsgConverter.java b/src/main/java/at/gv/egiz/moazs/Mzs2MsgConverter.java
deleted file mode 100644
index b517f39..0000000
--- a/src/main/java/at/gv/egiz/moazs/Mzs2MsgConverter.java
+++ /dev/null
@@ -1,321 +0,0 @@
-package at.gv.egiz.moazs;
-
-import at.gv.zustellung.msg.xsd.*;
-import at.gv.zustellung.msg.xsd.DeliveryRequestType.DeliveryRequestTypeBuilder;
-import at.gv.zustellung.msg.xsd.persondata.*;
-import org.springframework.stereotype.Component;
-import org.springframework.util.Assert;
-
-import javax.xml.bind.JAXBElement;
-import java.util.List;
-
-import static at.gv.zustellung.msg.xsd.AttachmentType.attachmentTypeBuilder;
-import static at.gv.zustellung.msg.xsd.AttachmentsType.attachmentsTypeBuilder;
-import static at.gv.zustellung.msg.xsd.ConfirmationAddress.confirmationAddressBuilder;
-import static at.gv.zustellung.msg.xsd.DeliveryRequestType.deliveryRequestTypeBuilder;
-import static at.gv.zustellung.msg.xsd.Receiver.receiverBuilder;
-import static at.gv.zustellung.msg.xsd.Sender.senderBuilder;
-import static at.gv.zustellung.msg.xsd.SenderCorporateBodyType.senderCorporateBodyTypeBuilder;
-import static at.gv.zustellung.msg.xsd.WebserviceURL.webserviceURLBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.CorporateBodyType.corporateBodyTypeBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.IdentificationType.Value.valueBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.IdentificationType.identificationTypeBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.InternetAddressType.internetAddressTypeBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.PersonNameType.*;
-import static at.gv.zustellung.msg.xsd.persondata.PersonNameType.Affix.affixBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.PersonNameType.FamilyName.familyNameBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.PhysicalPersonType.physicalPersonTypeBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.PostalAddressType.DeliveryAddress.deliveryAddressBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.PostalAddressType.postalAddressTypeBuilder;
-import static at.gv.zustellung.msg.xsd.persondata.TelephoneAddressType.telephoneAddressTypeBuilder;
-import static java.lang.String.format;
-import static java.util.stream.Collectors.toList;
-
-
-@Component
-public class Mzs2MsgConverter {
-
- private final at.gv.zustellung.msg.xsd.ObjectFactory msgFactory = new at.gv.zustellung.msg.xsd.ObjectFactory();
- private final at.gv.zustellung.msg.xsd.persondata.ObjectFactory personFactory = new at.gv.zustellung.msg.xsd.persondata.ObjectFactory();
-
- public DeliveryRequestType convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType mzsRequest) {
- return setupBuilder(mzsRequest)
- .withReceiver(convert(mzsRequest.getReceiver()))
- .build();
- }
-
- public DeliveryRequestType convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType mzsRequest,
- IdentificationType identification) {
- return setupBuilder(mzsRequest)
- .withReceiver(convert(mzsRequest.getReceiver(), identification))
- .build();
- }
-
- private DeliveryRequestTypeBuilder setupBuilder(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType mzsRequest) {
- return deliveryRequestTypeBuilder()
- .withVersion("2.0.0")
- .withSender(convert(mzsRequest.getSender()))
- .withMetaData(mzsRequest.getMetaData())
- .withAttachments(convertPayloads(mzsRequest.getPayload()));
- }
-
- //------------- SENDER ------------------
-
- private Sender convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Sender sender) {
- return senderBuilder()
- .withSenderPerson(extractSenderPerson(sender))
- .withLogo(sender.getLogo())
- .withAdditionalCriteria(sender.getAdditionalCriteria())
- .withConfirmationAddress(convertConfirmationAddress(sender))
- .build();
- }
-
- private JAXBElement<? extends AbstractSenderPersonType> extractSenderPerson(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Sender sender) {
-
- Assert.isTrue(sender.getSenderProfile() != null || sender.getCorporateBody() != null,
- "Neither SenderProfile nor CorporateBody are given");
-
- var builder = senderCorporateBodyTypeBuilder();
-
- if(sender.getSenderProfile() != null) {
- builder.withSenderProfile(sender.getSenderProfile());
- } else {
- var identification = sender.getCorporateBody().getIdentification().get(0);
- builder.withCorporateBody(convert(sender.getCorporateBody()))
- .withIdentification(convert(identification));
- }
-
- builder.withId(sender.getId());
-
- return msgFactory.createSenderCorporateBody(builder.build());
-
- }
-
- private ConfirmationAddress convertConfirmationAddress(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Sender sender) {
-
- var builder = confirmationAddressBuilder();
-
- if(sender.getEMailAddress() != null) {
- builder.withEmail(convert(sender.getEMailAddress()))
- .withType(sender.getEMailAddress().getType());
- } else {
- builder.withWebserviceURL(convert(sender.getWebserviceURL()))
- .withType(sender.getWebserviceURL().getType());
- }
-
- return builder.build();
- }
-
- private InternetAddressType convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Sender.EMailAddress eMailAddress) {
- return internetAddressTypeBuilder()
- .withAddress(eMailAddress.getValue())
- .build();
- }
-
- private WebserviceURL convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Sender.WebserviceURL webserviceURL) {
- return webserviceURLBuilder()
- .withAddress(webserviceURL.getValue())
- .withAlternativeEmail(webserviceURL.getAlternativeEmail())
- .build();
- }
-
-
- //------------- RECEIVER ------------------
-
- private at.gv.zustellung.msg.xsd.Receiver convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Receiver receiver) {
- return setupReceiverBuilder(receiver).build();
- }
-
- private at.gv.zustellung.msg.xsd.Receiver convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Receiver receiver,
- IdentificationType identificationType) {
- return setupReceiverBuilder(receiver)
- .withIdentification(identificationType)
- .build();
- }
-
- private Receiver.ReceiverBuilder setupReceiverBuilder(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Receiver receiver) {
- var builder = receiverBuilder()
- .withPreAdviceNote(receiver.getPreAdviceNote())
- .withAdditionalCriteria(receiver.getAdditionalCriteria())
- .withPerson(convert(receiver.getPerson()))
- .withAddress(convertAddresses(receiver.getAddress()));
-
- if (receiver.getIdentification() != null) builder.withIdentification(convert(receiver.getIdentification()));
-
- return builder;
-
- }
-
- //------------- ADDRESSES ------------------
-
- private List<JAXBElement<? extends AbstractAddressType>> convertAddresses(
- List<JAXBElement<? extends at.gv.zustellung.app2mzs.xsd.persondata.AbstractAddressType>> addresses) {
- return addresses.stream()
- .map(JAXBElement::getValue)
- .map(this::convert)
- .map(personFactory::createAddress)
- .collect(toList());
- }
-
- private AbstractAddressType convert(at.gv.zustellung.app2mzs.xsd.persondata.AbstractAddressType address) {
- if (address instanceof at.gv.zustellung.app2mzs.xsd.persondata.InternetAddressType ) { return convert((at.gv.zustellung.app2mzs.xsd.persondata.InternetAddressType) address);
- } else if (address instanceof at.gv.zustellung.app2mzs.xsd.persondata.PostalAddressType ) { return convert((at.gv.zustellung.app2mzs.xsd.persondata.PostalAddressType) address);
- } else if (address instanceof at.gv.zustellung.app2mzs.xsd.persondata.TelephoneAddressType) { return convert((at.gv.zustellung.app2mzs.xsd.persondata.TelephoneAddressType) address);
- } else {
- throw new IllegalArgumentException(format("No conversion strategy of address of type {0}", address.getClass().toGenericString()));
- }
- }
-
- private InternetAddressType convert(at.gv.zustellung.app2mzs.xsd.persondata.InternetAddressType address) {
- return internetAddressTypeBuilder()
- .withAddress(address.getAddress())
- .withId(address.getId())
- .build();
- }
-
- private PostalAddressType convert(at.gv.zustellung.app2mzs.xsd.persondata.PostalAddressType address) {
- return postalAddressTypeBuilder()
- .withCountryCode(address.getCountryCode())
- .withDeliveryAddress(convert(address.getDeliveryAddress()))
- .withId(address.getId())
- .withMunicipality(address.getMunicipality())
- .withMunicipalityNumber(address.getMunicipalityNumber())
- .withPostalCode(address.getPostalCode())
- .withType(address.getType())
- .build();
- }
-
- private PostalAddressType.DeliveryAddress convert(at.gv.zustellung.app2mzs.xsd.persondata.PostalAddressType.DeliveryAddress deliveryAddress) {
- return deliveryAddressBuilder()
- .withBuildingNumber(deliveryAddress.getBuildingNumber())
- .withDoorNumber(deliveryAddress.getDoorNumber())
- .withStreetName(deliveryAddress.getStreetName())
- .withUnit(deliveryAddress.getUnit())
- .build();
- }
-
- private TelephoneAddressType convert(at.gv.zustellung.app2mzs.xsd.persondata.TelephoneAddressType address) {
- return telephoneAddressTypeBuilder()
- .withId(address.getId())
- .withMessengerService(address.getMessengerService())
- .withNumber(address.getNumber().getFormattedNumber())
- .build();
- }
-
-
- //------------- ATTACHMENTS ------------------
-
- private AttachmentsType convertPayloads(List<at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Payload> payloadList) {
- var builder = attachmentsTypeBuilder();
-
- payloadList.stream()
- .map(this::convert)
- .forEach(builder::addAttachment);
-
- return builder.build();
- }
-
- private AttachmentType convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Payload payload) {
-
- return attachmentTypeBuilder()
- .withFileName(payload.getFileName())
- .withContent(payload.getBinaryDocument())
- .withCheckSum(payload.getCheckSum())
- .withURL(payload.getDocumentReference())
- .withDocumentClass(payload.getDocumentClass())
- .withMimeType(payload.getMIMEType())
- .withSize(payload.getSize())
- .build();
- }
-
- //------------- IDENTIFICATION TYPE -------------
-
- private IdentificationType convert(at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType identification) {
- return identificationTypeBuilder()
- .withId(identification.getId())
- .withType(identification.getType())
- .withValue(convert(identification.getValue()))
- .build();
- }
-
- private IdentificationType.Value convert(at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType.Value value) {
- return valueBuilder()
- .withId(value.getId())
- .withValue(value.getValue())
- .build();
- }
-
- //------------ PERSONS --------------------
-
- private JAXBElement<? extends AbstractPersonType> convert(
- JAXBElement<? extends at.gv.zustellung.app2mzs.xsd.persondata.AbstractPersonType> jaxbPerson) {
-
- var mzsPerson = jaxbPerson.getValue();
-
- Assert.isTrue(personIsPhysical(mzsPerson) || personIsCorporateBody(mzsPerson),
- "Person is neither a PhysicalPerson nor a CorporateBody.");
-
- var msgPerson = (personIsPhysical(mzsPerson))
- ? convert((at.gv.zustellung.app2mzs.xsd.persondata.PhysicalPersonType) mzsPerson)
- : convert((at.gv.zustellung.app2mzs.xsd.persondata.CorporateBodyType) mzsPerson);
-
- return personFactory.createPerson(msgPerson);
-
- }
-
- private boolean personIsPhysical(at.gv.zustellung.app2mzs.xsd.persondata.AbstractPersonType person) {
- return person instanceof at.gv.zustellung.app2mzs.xsd.persondata.PhysicalPersonType;
- }
-
- private boolean personIsCorporateBody(at.gv.zustellung.app2mzs.xsd.persondata.AbstractPersonType person) {
- return person instanceof at.gv.zustellung.app2mzs.xsd.persondata.CorporateBodyType;
- }
-
- private CorporateBodyType convert(at.gv.zustellung.app2mzs.xsd.persondata.CorporateBodyType corporateBody) {
- return corporateBodyTypeBuilder()
- .withFullName(corporateBody.getFullName())
- .withId(corporateBody.getId())
- .withOrganization(corporateBody.getOrganization())
- .withTarget(corporateBody.getTarget())
- .build();
- }
-
- private PhysicalPersonType convert(at.gv.zustellung.app2mzs.xsd.persondata.PhysicalPersonType physicalPerson) {
- return physicalPersonTypeBuilder()
- .withDateOfBirth(physicalPerson.getDateOfBirth())
- .withId(physicalPerson.getId())
- .withName(convert(physicalPerson.getName()))
- .build();
- }
-
- private PersonNameType convert(at.gv.zustellung.app2mzs.xsd.persondata.PersonNameType name) {
- return personNameTypeBuilder()
- .withGivenName(name.getGivenName())
- .withFamilyName(convert(name.getFamilyName()))
- .withAffix(convertAffixes(name.getAffix()))
- .build();
- }
-
- private FamilyName convert(at.gv.zustellung.app2mzs.xsd.persondata.PersonNameType.FamilyName familyName) {
- return familyNameBuilder()
- .withPrefix(familyName.getPrefix())
- .withPrimary(familyName.getPrimary())
- .withValue(familyName.getValue())
- .build();
- }
-
- private List<Affix> convertAffixes(List<at.gv.zustellung.app2mzs.xsd.persondata.PersonNameType.Affix> affix) {
- return affix.stream()
- .map(mzsAffix -> convert(mzsAffix))
- .collect(toList());
- }
-
- private Affix convert(at.gv.zustellung.app2mzs.xsd.persondata.PersonNameType.Affix affix) {
- return affixBuilder()
- .withPosition(affix.getPosition())
- .withType(affix.getType())
- .withValue(affix.getValue())
- .build();
- }
-
-}