aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java b/src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java
new file mode 100644
index 0000000..c5b73bb
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java
@@ -0,0 +1,70 @@
+package at.gv.egiz.moazs.mzs;
+
+import at.gv.zustellung.app2mzs.xsd.ClientType;
+import at.gv.zustellung.app2mzs.xsd.ConfigType;
+import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
+import at.gv.zustellung.app2mzs.xsd.KeyStoreType;
+import org.springframework.lang.Nullable;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MzsValidator {
+
+ /**
+ * Checks if the mandatory fields that are needed to send a tnvz:QueryPersonRequest are present.
+ * @param request
+ * @return true if mandatory fields are present.
+ */
+ public boolean isTnvzComplete(DeliveryRequestType request) {
+ return (!request.getConfig().isPerformQueryPersonRequest()) || request.getTnvzMetaData() != null;
+ }
+
+ /**
+ * Check if all mandatory fields of configuration are present.
+ *
+ * @param profile
+ * @return true if all mandatory fields are present.
+ */
+ public boolean isConfigProfileComplete(@Nullable ConfigType profile) {
+ return profile != null
+ && profile.isPerformQueryPersonRequest() != null
+ && isTVNZClientConfigured(profile.getTNVZClient(), profile.isPerformQueryPersonRequest())
+ && isMSGClientConfigured(profile.getMSGClient());
+ }
+
+ private boolean isTVNZClientConfigured(ClientType tnvzClient, Boolean isPerformQueryPersonRequest) {
+ return !isPerformQueryPersonRequest || (tnvzClient != null
+ && tnvzClient.getURL() != null
+ && tnvzClient.getReceiveTimeout() != null
+ && tnvzClient.getConnectionTimeout() != null
+ && isSSLConfigured(tnvzClient));
+ }
+
+ private boolean isMSGClientConfigured(ClientType msgClientParams) {
+ return msgClientParams != null
+ && msgClientParams.getURL() != null
+ && isSSLConfigured(msgClientParams)
+ && msgClientParams.getReceiveTimeout() != null
+ && msgClientParams.getConnectionTimeout() != null;
+ }
+
+ private boolean isSSLConfigured(ClientType clientParams) {
+ return !clientParams.getURL().startsWith("https") || (clientParams.getSSL() != null
+ && clientParams.getSSL().isTrustAll() != null
+ && clientParams.getSSL().isLaxHostNameVerification() != null
+ && isKeyStoreConfigured(clientParams.getSSL().getKeyStore())
+ && isTrustStoreConfigured(clientParams.getSSL().getTrustStore()));
+ }
+
+ private boolean isKeyStoreConfigured(KeyStoreType keyStore) {
+ return keyStore == null || (keyStore.getPassword() != null
+ && keyStore.getFileType() != null
+ && keyStore.getFileName() != null);
+ }
+
+ private boolean isTrustStoreConfigured(KeyStoreType trustStore) {
+ return trustStore == null || (trustStore.getPassword() != null
+ && "JKS".equals(trustStore.getFileType())
+ && trustStore.getFileName() != null);
+ }
+}