diff options
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.java | 87 |
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; + } +} |