aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java b/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java
new file mode 100644
index 0000000..89c8be3
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java
@@ -0,0 +1,87 @@
+package at.gv.egiz.moazs.scheme;
+
+import at.gv.egiz.moazs.MoaZSException;
+import at.gv.zustellung.msg.xsd.DeliveryAnswerType;
+import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType;
+import at.gv.zustellung.msg.xsd.ErrorInfoType;
+
+import static at.gv.egiz.moazs.util.NullCoalesce.coalesce;
+import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.Error.errorBuilder;
+import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder;
+import static at.gv.zustellung.msg.xsd.ErrorInfoType.errorInfoTypeBuilder;
+
+public class RequestStatusResponse implements MsgResponse<DeliveryRequestStatusType> {
+
+ private final DeliveryRequestStatusType status;
+ private final DeliveryAnswerType answer;
+ private final String responseID;
+ private static final String ID_SUFFIX = ".RS";
+
+ public RequestStatusResponse(DeliveryRequestStatusType status) {
+ this.status = status;
+ this.answer = coalesce(status.getSuccess(), status.getPartialSuccess(), status.getError()).get();
+ this.responseID = getResponseID(answer.getAppDeliveryID());
+ }
+
+ public static String getResponseID(String appDeliveryID) {
+ return appDeliveryID + ID_SUFFIX;
+ }
+
+ @Override
+ public String getResponseID() {
+ return this.responseID;
+ }
+
+ @Override
+ public DeliveryRequestStatusType getResponse() {
+ return status;
+ }
+
+ @Override
+ public String getAppDeliveryID() {
+ return answer.getAppDeliveryID();
+ }
+
+ @Override
+ public String getZSDeliveryID() {
+ return answer.getZSDeliveryID();
+ }
+
+ @Override
+ public DeliveryAnswerType getAnswer() {
+ return this.answer;
+ }
+
+ @Override
+ public MsgResponse<DeliveryRequestStatusType> generateError(MoaZSException exception) {
+ return generateErrorFromException(exception);
+ }
+
+ public static MsgResponse<DeliveryRequestStatusType> generateErrorFromException(MoaZSException exception) {
+ ErrorInfoType info = errorInfoTypeBuilder()
+ .withText(exception.getMessage())
+ .withCode(exception.getErrorCode())
+ .build();
+
+ DeliveryRequestStatusType.Error error = errorBuilder()
+ .withErrorInfo(info)
+ .withAppDeliveryID(exception.getAppDeliveryID())
+ .withDeliverySystem(exception.getDeliverySystem())
+ .withGZ(exception.getGz())
+ .withPreAdviceNoteSent(exception.getPreAdviceNoteSent())
+ .withZSDeliveryID(exception.getZsDeliveryID())
+ .build();
+
+ var status = deliveryRequestStatusTypeBuilder()
+ .withError(error)
+ .withVersion(NameSpace.MSG_VERSION)
+ .build();
+
+ return new RequestStatusResponse(status);
+
+ }
+
+ public static String getIdSuffix() {
+ return ID_SUFFIX;
+ }
+}