aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-02 16:42:43 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-02 16:42:43 +0200
commit4b6ce58f339d69c70ef746ceecae78bf7ed0f0ba (patch)
tree7708c40ffdc7e29aa784ee5d26308f18aa1f460b /src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java
parent030488bb7ff9572f35032d80d4101c06cfc98bf5 (diff)
downloadmoa-zs-4b6ce58f339d69c70ef746ceecae78bf7ed0f0ba.tar.gz
moa-zs-4b6ce58f339d69c70ef746ceecae78bf7ed0f0ba.tar.bz2
moa-zs-4b6ce58f339d69c70ef746ceecae78bf7ed0f0ba.zip
Handle tnvz Query Edge Cases by Improving Validation
TnvzHelper Fixes - Handle additional edge cases. - Mzs:Schema Change: Eliminate PreAdviceNote redundancy by removing it from mzs:DeliveryRequest/TnvzMetaData; PreadviceNote is already in the Receiver element. Update TnvzHelper accordingly. - Implement and integrate tnvz completeness check into DeliveryRequestAugmenter to ensure that, after augmentation, tnvz can be performed. Refactor mzs:DeliveryRequest Validation: - Before: Validating, merging and generatig ConfigType in ConfigUtil. - Change: Need to add validation of DeliveryRequest (Reason: For performing Tnvz Requests, the DeliveryRequest needs to be in a consistent state). - Problem: DeliveryRequest validation does not fit into ConfigUtil. - Solution: Put validation of DeliveryRequest and Config into new Component "MzsValidation".
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java46
1 files changed, 26 insertions, 20 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java b/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java
index a14df9d..3599362 100644
--- a/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java
+++ b/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java
@@ -3,7 +3,6 @@ package at.gv.egiz.moazs.tnvz;
import at.gv.egiz.moazs.MoaZSException;
import at.gv.egiz.moazs.scheme.Mzs2MsgConverter;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
-import at.gv.zustellung.app2mzs.xsd.TnvzMetaDataType;
import at.gv.zustellung.app2mzs.xsd.persondata.AbstractAddressType;
import at.gv.zustellung.msg.xsd.persondata.IdentificationType;
import at.gv.zustellung.msg.xsd.persondata.ObjectFactory;
@@ -39,7 +38,7 @@ public class TnvzHelper {
private static final String RECEIVER_NOT_ADRESSABLE_ERROR_MSG = "Receiver is not addressable. Reason: %s";
private static final String MIMETYPE_MISSMATCH_ERROR_MSG = "Request contains attachment of type(s) %s, but " +
"receiver only accepts attachments of type(s) %s.";
- private static final String MZS_NO_TNVZ_PERSON_QUERY_RESULTS_ERROR_MSG = "tnvz:PersonQueryResult's list was empty.";
+ private static final String MZS_NO_TNVZ_PERSON_QUERY_RESULTS_ERROR_MSG = "tnvz:QueryResultList was empty.";
@Autowired
@@ -74,9 +73,9 @@ public class TnvzHelper {
private QueryPersonRequest buildQuery(DeliveryRequestType mzsRequest) {
- Sender sender = extractSender(mzsRequest.getSender().getCorporateBody());
+ Sender sender = extractSender(mzsRequest.getSender());
Receiver receiver = extractReceiver(mzsRequest.getReceiver());
- var metadata = extractMetaData(mzsRequest.getTnvzMetaData());
+ var metadata = extractMetaData(mzsRequest);
PersonQueryType personQuery = personQueryTypeBuilder()
.withEntryID(ENTRY_ID)
@@ -94,27 +93,32 @@ public class TnvzHelper {
.build();
}
- private PersonQueryType.MetaData extractMetaData(@Nullable TnvzMetaDataType meta) {
- if (meta == null) {
- return null;
- } else {
- var builder = metaDataBuilder();
+ private PersonQueryType.MetaData extractMetaData(DeliveryRequestType request) {
- if (meta.getDeliveryQuality() != null) {
- builder.withDeliveryQuality(meta.getDeliveryQuality());
- } else {
- builder.withPrivateMessageQuality(meta.getPrivateMessageQuality());
- }
+ var builder = metaDataBuilder();
- return builder
- .withOrigin(meta.getOrigin())
- .withPreAdviceNote(meta.getPreAdviceNote())
- .withIgnorePostRedirectionOrder(meta.getIgnorePostRedirectionOrder())
- .build();
+ var meta = request.getTnvzMetaData();
+
+ if (meta.getDeliveryQuality() != null) {
+ builder.withDeliveryQuality(meta.getDeliveryQuality());
+ } else {
+ builder.withPrivateMessageQuality(meta.getPrivateMessageQuality());
}
+
+ return builder
+ .withOrigin(meta.getOrigin())
+ .withPreAdviceNote(request.getReceiver().getPreAdviceNote())
+ .withIgnorePostRedirectionOrder(meta.getIgnorePostRedirectionOrder())
+ .build();
}
- private Sender extractSender(at.gv.zustellung.app2mzs.xsd.persondata.CorporateBodyType corporateBody) {
+ private Sender extractSender(DeliveryRequestType.Sender sender) {
+
+ var corporateBody = sender.getCorporateBody();
+ if (corporateBody == null) {
+ //todo! implement this case
+ throw MoaZSException.moaZSException("Not Implemented.");
+ }
var mzsIdentification = corporateBody.getIdentification().get(0);
var msgIdentification = converter.convert(mzsIdentification);
@@ -152,6 +156,8 @@ public class TnvzHelper {
private @Nullable PostalAddressType findPostalAddress(List<JAXBElement<? extends AbstractAddressType>> addresses) {
+ if (addresses == null) return null;
+
for (JAXBElement<? extends AbstractAddressType> address : addresses) {
if(address.getValue() instanceof at.gv.zustellung.app2mzs.xsd.persondata.PostalAddressType) {
var mzsPostalAddress = (at.gv.zustellung.app2mzs.xsd.persondata.PostalAddressType) address.getValue();