Port-mapping to support regen capabilities
[transportpce.git] / common / src / main / java / org / opendaylight / transportpce / common / service / ServiceTypes.java
index 3a10d1174db8a1d9a4952cff928f96e562210626..76fb5b0f6810befe663628fa36e75a44485bbdbd 100644 (file)
@@ -8,9 +8,11 @@
 
 package org.opendaylight.transportpce.common.service;
 
+import java.util.Map;
 import org.opendaylight.transportpce.common.StringConstants;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.PortQual;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,105 +24,64 @@ public final class ServiceTypes {
     }
 
     public static String getServiceType(String serviceFormat, Uint32 serviceRate, Mapping mapping) {
-        String serviceType = null;
-        if ("Ethernet".equals(serviceFormat)) {
-            switch (serviceRate.intValue()) {
-                case 1:
-                    serviceType = StringConstants.SERVICE_TYPE_1GE;
-                    break;
-                case 10:
-                    serviceType = StringConstants.SERVICE_TYPE_10GE;
-                    break;
-                case 100:
-                    serviceType = StringConstants.SERVICE_TYPE_100GE_T;
-                    if (mapping != null && PortQual.SwitchClient.getName().equals(mapping.getPortQual())) {
-                        serviceType = StringConstants.SERVICE_TYPE_100GE_M;
+
+        switch (serviceFormat) {
+            case "OC":
+                if (Uint32.valueOf(100).equals(serviceRate)) {
+                    return StringConstants.SERVICE_TYPE_100GE_T;
+                }
+                LOG.warn("Invalid service-rate {}", serviceRate);
+                return null;
+
+            case "Ethernet":
+                if (Uint32.valueOf(400).equals(serviceRate)) {
+                    return StringConstants.SERVICE_TYPE_400GE;
+                }
+                if (Uint32.valueOf(100).equals(serviceRate)) {
+                    if (mapping == null || !PortQual.SwitchClient.getName().equals(mapping.getPortQual())) {
+                        return StringConstants.SERVICE_TYPE_100GE_T;
                     }
-                    break;
-                case 400:
-                    serviceType = StringConstants.SERVICE_TYPE_400GE;
-                    break;
-                default:
-                    LOG.warn("Invalid service-rate {}", serviceRate);
-                    break;
-            }
-        }
-        if ("OC".equals(serviceFormat) && Uint32.valueOf(100).equals(serviceRate)) {
-            serviceType = StringConstants.SERVICE_TYPE_100GE_T;
-        }
-        if ("OTU".equals(serviceFormat)) {
-            switch (serviceRate.intValue()) {
-                case 100:
-                    serviceType = StringConstants.SERVICE_TYPE_OTU4;
-                    break;
-                case 400:
-                    serviceType = StringConstants.SERVICE_TYPE_OTUC4;
-                    break;
-                default:
-                    LOG.warn("Invalid service-rate {}", serviceRate);
-                    break;
-            }
-        }
-        if ("ODU".equals(serviceFormat)) {
-            switch (serviceRate.intValue()) {
-                case 100:
-                    serviceType = StringConstants.SERVICE_TYPE_ODU4;
-                    break;
-                case 400:
-                    serviceType = StringConstants.SERVICE_TYPE_ODUC4;
-                    break;
-                default:
-                    LOG.warn("Invalid service-rate {}", serviceRate);
-                    break;
-            }
+                    if (XpdrNodeTypes.Switch.equals(mapping.getXpdrType())) {
+                        return StringConstants.SERVICE_TYPE_100GE_S;
+                    }
+                }
+                return getOtnServiceType(serviceFormat, serviceRate);
+
+            //case "ODU":
+            //case "OTU":
+            default:
+                return getOtnServiceType(serviceFormat, serviceRate);
         }
-        return serviceType;
     }
 
     public static String getOtnServiceType(String serviceFormat, Uint32 serviceRate) {
-        String serviceType = null;
-        if ("Ethernet".equals(serviceFormat)) {
-            switch (serviceRate.intValue()) {
-                case 1:
-                    serviceType = StringConstants.SERVICE_TYPE_1GE;
-                    break;
-                case 10:
-                    serviceType = StringConstants.SERVICE_TYPE_10GE;
-                    break;
-                case 100:
-                    serviceType = StringConstants.SERVICE_TYPE_100GE_M;
-                    break;
-                default:
-                    LOG.warn("Invalid service-rate {}", serviceRate);
-                    break;
-            }
-        }
-        if ("OTU".equals(serviceFormat)) {
-            switch (serviceRate.intValue()) {
-                case 100:
-                    serviceType = StringConstants.SERVICE_TYPE_OTU4;
-                    break;
-                case 400:
-                    serviceType = StringConstants.SERVICE_TYPE_OTUC4;
-                    break;
-                default:
-                    LOG.warn("Invalid service-rate {}", serviceRate);
-                    break;
-            }
+        Map<String, Map<Uint32, String>> otnMap = Map.of(
+            "Ethernet", Map.of(
+                    Uint32.valueOf(1), StringConstants.SERVICE_TYPE_1GE,
+                    Uint32.valueOf(10), StringConstants.SERVICE_TYPE_10GE,
+                    Uint32.valueOf(100), StringConstants.SERVICE_TYPE_100GE_M),
+            "OTU", Map.of(
+                    Uint32.valueOf(100), StringConstants.SERVICE_TYPE_OTU4,
+                    Uint32.valueOf(200), StringConstants.SERVICE_TYPE_OTUC2,
+                    Uint32.valueOf(300), StringConstants.SERVICE_TYPE_OTUC3,
+                    Uint32.valueOf(400), StringConstants.SERVICE_TYPE_OTUC4),
+            "ODU", Map.of(
+                    Uint32.valueOf(100), StringConstants.SERVICE_TYPE_ODU4,
+                    Uint32.valueOf(200), StringConstants.SERVICE_TYPE_ODUC2,
+                    Uint32.valueOf(300), StringConstants.SERVICE_TYPE_ODUC3,
+                    Uint32.valueOf(400), StringConstants.SERVICE_TYPE_ODUC4));
+
+        if (!otnMap.containsKey(serviceFormat)) {
+            LOG.warn("Invalid service-format {}", serviceFormat);
+            return null;
         }
-        if ("ODU".equals(serviceFormat)) {
-            switch (serviceRate.intValue()) {
-                case 100:
-                    serviceType = StringConstants.SERVICE_TYPE_ODU4;
-                    break;
-                case 400:
-                    serviceType = StringConstants.SERVICE_TYPE_ODUC4;
-                    break;
-                default:
-                    LOG.warn("Invalid service-rate {}", serviceRate);
-                    break;
-            }
+
+        if (!otnMap.get(serviceFormat).containsKey(serviceRate)) {
+            LOG.warn("Invalid service-rate {}", serviceRate);
+            return null;
         }
-        return serviceType;
+
+        return otnMap.get(serviceFormat).get(serviceRate);
+
     }
 }