Initial commit for ServiceHandler
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / ServicehandlerCompliancyCheck.java
diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ServicehandlerCompliancyCheck.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ServicehandlerCompliancyCheck.java
new file mode 100644 (file)
index 0000000..6335005
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * Copyright © 2017 Orange, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.servicehandler;
+
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ConnectionType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.RpcActions;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.sdnc.request.header.SdncRequestHeader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/*
+ * Class for checking service sdnc-request-header compliancy.
+ *
+ * @author Martial Coulibaly ( martial.coulibaly@gfi.com ) on behalf of Orange
+ *
+ */
+public class ServicehandlerCompliancyCheck {
+    /* Logging. */
+    private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerCompliancyCheck.class);
+    /* SdncRequestHeader. */
+    private SdncRequestHeader sndcRequestHeader;
+    /* Service Name. */
+    private String serviceName;
+    /* Type of connection : service / infrastructure / roadm-line. */
+    private ConnectionType conType;
+    /* type of service : service-create / service-delete ... */
+    private RpcActions action;
+    /* Response message from procedure. */
+    private String message;
+
+    /*
+     * ServicehandlerCompliancyCheck class constructor.
+     *
+     * @param sdncRequestHeader
+     *            SdncRequestHeader
+     * @param serviceName
+     *            String Service Name
+     * @param conType
+     *            Connection Type
+     * @param action
+     *            RPC type
+     */
+    public ServicehandlerCompliancyCheck(SdncRequestHeader sdncRequestHeader, String serviceName,
+            ConnectionType conType, RpcActions action) {
+        this.sndcRequestHeader = sdncRequestHeader;
+        this.serviceName = serviceName;
+        this.conType = conType;
+        this.action = action;
+        this.setMessage("");
+    }
+
+    /*
+     * ServicehandlerCompliancyCheck class constructor.
+     *
+     * @param sdncRequestHeader
+     *            SdncRequestHeader
+     * @param serviceName
+     *            String Service Name
+     * @param action
+     *            RPC type
+     */
+    public ServicehandlerCompliancyCheck(SdncRequestHeader sdncRequestHeader, String serviceName, RpcActions action) {
+        this.sndcRequestHeader = sdncRequestHeader;
+        this.serviceName = serviceName;
+        this.action = action;
+        this.setMessage("");
+    }
+
+    /*
+     * ServicehandlerCompliancyCheck class constructor.
+     *
+     * @param serviceName
+     *            String Service Name
+     * @param conType
+     *            Connection Type
+     * @param action
+     *            RPC type
+     */
+    public ServicehandlerCompliancyCheck(String serviceName, ConnectionType conType, RpcActions action) {
+        this.serviceName = serviceName;
+        this.conType = conType;
+        this.action = action;
+        this.setMessage("");
+    }
+
+    /*
+     * ServicehandlerCompliancyCheck class constructor.
+     *
+     * @param serviceName
+     *            String Service Name
+     * @param action
+     *            RPC type
+     */
+    public ServicehandlerCompliancyCheck(String serviceName, RpcActions action) {
+        this.serviceName = serviceName;
+        this.action = action;
+        this.setMessage("");
+    }
+
+    /*
+     * Check if a String is not null and not equal to void.
+     *
+     * @param value
+     *            String value
+     * @return true if String ok false if not
+     */
+    public Boolean checkString(String value) {
+        Boolean result = false;
+        if (value != null && value.compareTo("") != 0) {
+            result = true;
+        }
+        return result;
+
+    }
+
+    /*
+     * Check Compliancy of Service request.
+     *
+     * @param contype
+     *            Boolean to check connection Type
+     * @param sndcRequest
+     *            Boolean to check sndcRequestHeader
+     *
+     * @return true if String ok false if not
+     */
+    public Boolean check(Boolean contype, Boolean sndcRequest) {
+        Boolean result = true;
+        if (!checkString(serviceName)) {
+            result = false;
+            message = "Service Name is not set";
+            LOG.debug(message);
+        } else if (contype && conType == null) {
+            result = false;
+            message = "Service ConnectionType is not set";
+            LOG.debug(message);
+        }
+        if (sndcRequest) {
+            if (sndcRequestHeader != null) {
+                RpcActions serviceAction = sndcRequestHeader.getRpcAction();
+                String requestId = sndcRequestHeader.getRequestId();
+                if (!checkString(requestId)) {
+                    result = false;
+                    message = "Service sndcRequestHeader 'request-id' is not set";
+                    LOG.debug(message);
+                } else if (serviceAction != null) {
+                    if (serviceAction.compareTo(action) != 0) {
+                        result = false;
+                        message = "Service sndcRequestHeader rpc-action '" + serviceAction + "' not equal to '"
+                                + action.name() + "'";
+                        LOG.debug(message);
+                    }
+                } else {
+                    result = false;
+                    message = "Service sndc-request-header 'rpc-action' is not set ";
+                    LOG.debug(message);
+                }
+
+            } else {
+                result = false;
+                message = "Service sndc-request-header is not set ";
+                LOG.debug(message);
+            }
+        }
+        return result;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}