aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
new file mode 100644
index 0000000..67f3d13
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
@@ -0,0 +1,75 @@
+package at.gv.egiz.moazs.scheme;
+
+import at.gv.zustellung.app2mzs.xsd.DeliveryResponseType;
+import at.gv.zustellung.app2mzs.xsd.ErrorType;
+import at.gv.zustellung.app2mzs.xsd.PartialSuccessType;
+import at.gv.zustellung.app2mzs.xsd.SuccessType;
+import at.gv.zustellung.msg.xsd.DeliveryAnswerType;
+import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType;
+import org.springframework.stereotype.Component;
+
+import java.math.BigInteger;
+import java.util.Optional;
+
+import static at.gv.zustellung.app2mzs.xsd.DeliveryResponseType.deliveryResponseTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.ErrorType.errorTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.PartialSuccessType.partialSuccessTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.SuccessType.successTypeBuilder;
+
+@Component
+public class Msg2MzsConverter {
+
+ public DeliveryResponseType convert(DeliveryRequestStatusType status, Optional<byte[]> signedStatus) {
+
+ var responseBuilder = deliveryResponseTypeBuilder();
+
+ if (status.getError() != null) {
+ responseBuilder.withError(convert(status.getError(), signedStatus));
+ } else if (status.getSuccess() != null) {
+ responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus));
+ } else {
+ responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus));
+ }
+
+ return responseBuilder.build();
+ }
+
+ private SuccessType convert(DeliveryRequestStatusType.Success success, Optional<byte[]> signedStatus) {
+ return successTypeBuilder()
+ .withAppDeliveryID(success.getAppDeliveryID())
+ .withDeliverySystem(success.getDeliverySystem())
+ .withGZ(success.getGZ())
+ .withZSDeliveryID(success.getZSDeliveryID())
+ .withSignedDeliveryRequestStatus(signedStatus.orElse(null))
+ .withRelayedViaERV(success.isRelayedViaERV())
+ .withDeliveryTimestamp(success.getDeliveryTimestamp())
+ .build();
+ }
+
+ private PartialSuccessType convert(DeliveryAnswerType answer, Optional<byte[]> signedStatus) {
+ return partialSuccessTypeBuilder()
+ .withAppDeliveryID(answer.getAppDeliveryID())
+ .withDeliverySystem(answer.getDeliverySystem())
+ .withGZ(answer.getGZ())
+ .withZSDeliveryID(answer.getZSDeliveryID())
+ .withSignedDeliveryRequestStatus(signedStatus.orElse(null))
+ .build();
+ }
+
+ private ErrorType convert(DeliveryRequestStatusType.Error error, Optional<byte[]> signedStatus) {
+ var builder = errorTypeBuilder()
+ .withAppDeliveryID(error.getAppDeliveryID())
+ .withDeliverySystem(error.getDeliverySystem())
+ .withGZ(error.getGZ())
+ .withZSDeliveryID(error.getZSDeliveryID())
+ .withSignedDeliveryRequestStatus(signedStatus.orElse(null))
+ .withPreAdviceNoteSent(error.getPreAdviceNoteSent())
+ .withCode(new BigInteger(error.getErrorInfo().getCode()));
+
+ if(error.getErrorInfo().getText() != null) builder.withText(error.getErrorInfo().getText());
+
+ return builder.build();
+ }
+
+
+}