Service Handler optimizations and technical debt
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / validation / checks / ServicehandlerTxRxCheck.java
index e55cf5cdc7fe8cb6e7e27de797f0a305c1e3d071..fbca473aff2a63f1cac8913bd778bbb4b7d0cb92 100644 (file)
@@ -9,14 +9,12 @@
 package org.opendaylight.transportpce.servicehandler.validation.checks;
 
 import org.opendaylight.transportpce.servicehandler.ServiceEndpointType;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceEndpoint;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.RxDirection;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.TxDirection;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.lgx.Lgx;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.Port;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ServiceEndpoint;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.endpoint.RxDirection;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.endpoint.TxDirection;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.lgx.Lgx;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.Port;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
 
 /**
  * Class for checking missing info on Tx/Rx for A/Z end.
@@ -24,7 +22,47 @@ import org.slf4j.LoggerFactory;
  */
 public final class ServicehandlerTxRxCheck {
 
-    private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerTxRxCheck.class);
+    // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+    public static final class LogMessages {
+
+        private static final String SERVICE = "Service ";
+        public static final String TXDIR_NOT_SET;
+        public static final String TXDIR_PORT_NOT_SET;
+        public static final String TXDIR_LGX_NOT_SET;
+        public static final String RXDIR_NOT_SET;
+        public static final String RXDIR_PORT_NOT_SET;
+        public static final String RXDIR_LGX_NOT_SET;
+
+        // Static blocks are generated once and spare memory.
+        static {
+            TXDIR_NOT_SET = "Service TxDirection is not correctly set";
+            RXDIR_NOT_SET = "Service RxDirection is not correctly set";
+            TXDIR_PORT_NOT_SET = "Service TxDirection Port is not correctly set";
+            TXDIR_LGX_NOT_SET = "Service TxDirection Lgx is not correctly set";
+            RXDIR_PORT_NOT_SET = "Service RxDirection Port is not correctly set";
+            RXDIR_LGX_NOT_SET = "Service RxDirection Lgx is not correctly set";
+        }
+
+        public static String endpointTypeNotSet(ServiceEndpointType endpointType) {
+            return SERVICE + endpointType + " is not set";
+        }
+
+        public static String rateNotSet(ServiceEndpointType endpointType) {
+            return SERVICE + endpointType + " rate is not set";
+        }
+
+        public static String formatNotSet(ServiceEndpointType endpointType) {
+            return SERVICE + endpointType + " format is not set";
+        }
+
+        public static String clliNotSet(ServiceEndpointType endpointType) {
+            return SERVICE + endpointType + " clli is not set";
+        }
+
+        private LogMessages() {
+        }
+    }
+
 
     /**
      * Check if a String is not null and not equal to ''.
@@ -34,7 +72,7 @@ public final class ServicehandlerTxRxCheck {
      * @return true if String ok false if not
      */
     public static boolean checkString(String value) {
-        return ((value != null) && (value.compareTo("") != 0));
+        return (value != null && !value.isEmpty());
     }
 
     /**
@@ -44,21 +82,24 @@ public final class ServicehandlerTxRxCheck {
      *            port info
      * @return true if String ok false if not
      */
+    @SuppressWarnings("java:S1067")
+    //sonar issue Reduce the number of conditional operators (4) used in the expression (maximum allowed 3)
+    //won't be fixed because of functional checks needed
     public static boolean checkPort(Port port) {
-        boolean result = false;
-        if (port != null) {
-            String portDeviceName = port.getPortDeviceName();
-            String portType = port.getPortType();
-            String portName = port.getPortName();
-            String portRack = port.getPortRack();
-            String portShelf = port.getPortShelf();
-
-            if (checkString(portDeviceName) && checkString(portType) && checkString(portName) && checkString(portRack)
-                    && checkString(portShelf)) {
-                result = true;
-            }
-        }
-        return result;
+        if (port == null) {
+            return false;
+        }
+        String portDeviceName = port.getPortDeviceName();
+        String portType = port.getPortType();
+        String portName = port.getPortName();
+        String portRack = port.getPortRack();
+        String portShelf = port.getPortShelf();
+
+        return checkString(portDeviceName)
+                && checkString(portType)
+                && checkString(portName)
+                && checkString(portRack)
+                && checkString(portShelf);
     }
 
     /**
@@ -69,18 +110,17 @@ public final class ServicehandlerTxRxCheck {
      * @return true if String ok false if not
      */
     public static boolean checkLgx(Lgx lgx) {
-        boolean result = false;
-        if (lgx != null) {
-            String lgxDeviceName = lgx.getLgxDeviceName();
-            String lgxPortName = lgx.getLgxPortName();
-            String lgxPortRack = lgx.getLgxPortRack();
-            String lgxPortShelf = lgx.getLgxPortShelf();
-            if (checkString(lgxDeviceName) && checkString(lgxPortName) && checkString(lgxPortRack)
-                    && checkString(lgxPortShelf)) {
-                result = true;
-            }
-        }
-        return result;
+        if (lgx == null) {
+            return false;
+        }
+        String lgxDeviceName = lgx.getLgxDeviceName();
+        String lgxPortName = lgx.getLgxPortName();
+        String lgxPortRack = lgx.getLgxPortRack();
+        String lgxPortShelf = lgx.getLgxPortShelf();
+        return checkString(lgxDeviceName)
+                && checkString(lgxPortName)
+                && checkString(lgxPortRack)
+                && checkString(lgxPortShelf);
     }
 
     /**
@@ -94,83 +134,66 @@ public final class ServicehandlerTxRxCheck {
      * @return <code>true</code> if check is ok <code>false</code> else
      */
     public static ComplianceCheckResult checkTxOrRxInfo(TxDirection txDirection, RxDirection rxDirection) {
-        boolean result = true;
-        String message = "";
-        if (txDirection != null) {
-            if (!checkPort(txDirection.getPort())) {
-                result = false;
-                message = "Service TxDirection Port is not correctly set";
-            } else if (!checkLgx(txDirection.getLgx())) {
-                result = false;
-                message = "Service TxDirection Lgx is not correctly set";
-            } else if (rxDirection != null) {
-                if (!checkPort(rxDirection.getPort())) {
-                    result = false;
-                    message = "Service RxDirection Port is not correctly set";
-                } else if (!checkLgx(rxDirection.getLgx())) {
-                    result = false;
-                    message = "Service RxDirection Lgx is not correctly set";
-                }
-            } else {
-                result = false;
-                message = "Service RxDirection is not correctly set";
-            }
-        } else {
-            result = false;
-            message = "Service TxDirection is not correctly set";
-        }
-        return new ComplianceCheckResult(result, message);
+        if (txDirection == null) {
+            return new ComplianceCheckResult(false, LogMessages.TXDIR_NOT_SET);
+        }
+        if (rxDirection == null) {
+            return new ComplianceCheckResult(false, LogMessages.RXDIR_NOT_SET);
+        }
+        if (!checkPort(txDirection.getPort())) {
+            return new ComplianceCheckResult(false, LogMessages.TXDIR_PORT_NOT_SET);
+        }
+        if (!checkLgx(txDirection.getLgx())) {
+            return new ComplianceCheckResult(false, LogMessages.TXDIR_LGX_NOT_SET);
+        }
+        if (!checkPort(rxDirection.getPort())) {
+            return new ComplianceCheckResult(false, LogMessages.RXDIR_PORT_NOT_SET);
+        }
+        if (!checkLgx(rxDirection.getLgx())) {
+            return new ComplianceCheckResult(false, LogMessages.RXDIR_LGX_NOT_SET);
+        }
+        return new ComplianceCheckResult(true, "");
     }
 
     /**
-     * Check Compliancy of Service TxRx info.
+     * Check Compliance of Service TxRx info.
      * @param serviceEnd Service Endpoint
      * @param endpointType Endpoint type
      *
      * @return true if String ok false if not
      */
     public static ComplianceCheckResult check(ServiceEndpoint serviceEnd, ServiceEndpointType endpointType) {
-        boolean result = true;
-        String message = "";
-        if (serviceEnd != null) {
-            try {
-                Long serviceRate = serviceEnd.getServiceRate();
-                ServiceFormat serviceformat = serviceEnd.getServiceFormat();
-                String clli = serviceEnd.getClli();
-                if ((serviceRate == null) || (serviceRate <= 0)) {
-                    result = false;
-                    message = "Service " + endpointType + " rate is not set";
-                    LOG.debug(message);
-                } else if (serviceformat == null) {
-                    result = false;
-                    message = "Service " + endpointType + " format is not set";
-                    LOG.debug(message);
-                } else if (!checkString(clli)) {
-                    result = false;
-                    message = "Service" + endpointType + " clli format is not set";
-                    LOG.debug(message);
-                } else {
-                    ComplianceCheckResult complianceCheckResult
-                            = checkTxOrRxInfo(serviceEnd.getTxDirection(), serviceEnd.getRxDirection());
-                    if (!complianceCheckResult.hasPassed()) {
-                        result = false;
-                        message = complianceCheckResult.getMessage();
-                    }
-                }
-            } catch (NullPointerException e) {
-                message = "Service " + endpointType + " rate, format or clli is not set";
-                LOG.error(message, e);
-                return new ComplianceCheckResult(false, message);
-            }
-        } else {
-            result = false;
-            message = endpointType + " is not set";
-            LOG.debug(message);
-        }
-        return new ComplianceCheckResult(result, message);
+        if (serviceEnd == null) {
+            return new ComplianceCheckResult(false, LogMessages.endpointTypeNotSet(endpointType));
+        }
+
+        if (serviceEnd.getServiceRate() == null) {
+            String message = "Something wrong when accessing Service " + endpointType + " rate, format or clli";
+            return new ComplianceCheckResult(false, message);
+        }
+        Long serviceRate = serviceEnd.getServiceRate().toJava();
+        ServiceFormat serviceformat = serviceEnd.getServiceFormat();
+        String clli = serviceEnd.getClli();
+        if (serviceRate <= 0) {
+            return new ComplianceCheckResult(false, LogMessages.rateNotSet(endpointType));
+        }
+        if (serviceformat == null) {
+            return new ComplianceCheckResult(false, LogMessages.formatNotSet(endpointType));
+        }
+        if (!checkString(clli)) {
+            return new ComplianceCheckResult(false, LogMessages.clliNotSet(endpointType));
+        }
+
+        ComplianceCheckResult complianceCheckResult
+                = checkTxOrRxInfo(serviceEnd.getTxDirection(), serviceEnd.getRxDirection());
+        if (!complianceCheckResult.hasPassed()) {
+            return new ComplianceCheckResult(false, complianceCheckResult.getMessage());
+        }
+
+        return new ComplianceCheckResult(true, "");
     }
 
-    public ServicehandlerTxRxCheck() {
+    private ServicehandlerTxRxCheck() {
     }
 
 }