Merge "ROADM To ROADM Path Calculation"
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / MappingConstraints.java
index cf3a09aa9dbb858c2a6283aada79accf54fb7484..a9f8749e36765af336268188e16ef7b4c00c169c 100644 (file)
@@ -9,6 +9,7 @@
 
 package org.opendaylight.transportpce.servicehandler;
 
+import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161014.Constraints;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161014.constraints.CoRoutingOrGeneral;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161014.constraints.co.routing.or.general.CoRouting;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161014.constraints.co.routing.or.general.General;
@@ -18,14 +19,15 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161
 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161014.constraints.co.routing.or.general.general.Latency;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161014.routing.constraints.HardConstraints;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161014.routing.constraints.SoftConstraints;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.constraints.sp.co.routing.or.general.general.DiversityBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.constraints.sp.co.routing.or.general.general.ExcludeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.constraints.sp.co.routing.or.general.general.IncludeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.constraints.sp.co.routing.or.general.general.LatencyBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.diversity.existing.service.contraints.sp.ExistingServiceApplicabilityBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.routing.constraints.sp.HardConstraintsBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.routing.constraints.sp.SoftConstraintsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.ConstraintsSp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.DiversityBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.ExcludeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.IncludeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.LatencyBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicabilityBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraintsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraintsBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,14 +39,14 @@ import org.slf4j.LoggerFactory;
  *
  */
 public class MappingConstraints {
-    /* Logging. */
+    /** Logging. */
     private static final Logger LOG = LoggerFactory.getLogger(MappingConstraints.class);
     private HardConstraints serviceHardConstraints;
     private SoftConstraints serviceSoftConstraints;
     private org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-        .routing.constraints.rev170426.routing.constraints.sp.HardConstraints servicePathHardConstraints;
+        .routing.constraints.rev171017.routing.constraints.sp.HardConstraints servicePathHardConstraints;
     private org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-        .routing.constraints.rev170426.routing.constraints.sp.SoftConstraints servicePathSoftConstraints;
+        .routing.constraints.rev171017.routing.constraints.sp.SoftConstraints servicePathSoftConstraints;
 
     /**
      * MappingConstraints class constructor
@@ -66,34 +68,135 @@ public class MappingConstraints {
      * @param soft SoftConstraints
      */
     public MappingConstraints(org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-            .routing.constraints.rev170426.routing.constraints.sp.HardConstraints hard,
+            .routing.constraints.rev171017.routing.constraints.sp.HardConstraints hard,
             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-            .routing.constraints.rev170426.routing.constraints.sp.SoftConstraints soft) {
+            .routing.constraints.rev171017.routing.constraints.sp.SoftConstraints soft) {
         setServicePathHardConstraints(hard);
         setServicePathSoftConstraints(soft);
     }
 
+    /**
+     *get all constraints informations
+     *from service constraints to map to
+     *servicePath constraints.
+     *
+     * @param input HardConstraints or SoftConstraints
+     * @return ConstraintsSp HardConstraintsSp or HardConstraintsSp
+     */
+    private <T> ConstraintsSp getConstraints(T input) {
+        CoRoutingOrGeneral coRoutingOrGeneral = null;
+        HardConstraintsBuilder tempHard = new HardConstraintsBuilder();
+        SoftConstraintsBuilder tempSoft = new SoftConstraintsBuilder();
+        if ((input  !=  null) && (input instanceof Constraints)) {
+            Constraints constraints = (Constraints)input;
+            coRoutingOrGeneral = constraints.getCoRoutingOrGeneral();
+            General tmpGeneral = null;
+            CoRouting tmpCoRouting = null;
+            if (coRoutingOrGeneral  !=  null) {
+                org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
+                    .rev171017.constraints.sp.co.routing.or.general.GeneralBuilder finalGeneral =
+                    new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
+                    .rev171017.constraints.sp.co.routing.or.general.GeneralBuilder();
+                org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
+                    .rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder finalCoRouting =
+                    new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
+                    .rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder();
+                if (coRoutingOrGeneral instanceof General) {
+                    tmpGeneral = (General) coRoutingOrGeneral;
+                    if (tmpGeneral  !=  null) {
+                        Diversity tmpDiversity =  tmpGeneral.getDiversity();
+                        if (tmpDiversity  !=  null) {
+                            finalGeneral.setDiversity(
+                                    new DiversityBuilder()
+                                    .setExistingService(tmpDiversity.getExistingService())
+                                    .setExistingServiceApplicability(
+                                            new ExistingServiceApplicabilityBuilder()
+                                            .setClli(tmpDiversity.getExistingServiceApplicability().isSite())
+                                            .setNode(tmpDiversity.getExistingServiceApplicability().isNode())
+                                            .setSrlg(tmpDiversity.getExistingServiceApplicability().isSrlg())
+                                            .build())
+                                    .build());
+                        }
+                        Exclude tmpExclude = tmpGeneral.getExclude();
+                        if (tmpExclude  !=  null) {
+                            finalGeneral.setExclude(
+                                    new ExcludeBuilder()
+                                    .setSupportingServiceName(tmpExclude.getSupportingServiceName())
+                                    .setClli(tmpExclude.getSite())
+                                    .setNodeId(tmpExclude.getNodeId())
+                                    //.setAffinity(value)
+                                    //.setSRLG(value)
+                                    .build());
+                        }
+                        Include tmpInclude = tmpGeneral.getInclude();
+                        if (tmpInclude  !=  null) {
+                            finalGeneral.setInclude(
+                                    new IncludeBuilder()
+                                    //.setOrderedHops()
+                                    .build());
+                        }
+                        Latency tmpLatency = tmpGeneral.getLatency();
+                        if (tmpLatency != null) {
+                            finalGeneral.setLatency(
+                                    new LatencyBuilder()
+                                    .setMaxLatency(tmpLatency.getMaxLatency())
+                                    .build());
+                        }
+                    }
+                    tempHard.setCoRoutingOrGeneral(finalGeneral.build())
+                        .setCustomerCode(constraints.getCustomerCode());
+                    tempSoft.setCoRoutingOrGeneral(finalGeneral.build())
+                        .setCustomerCode(constraints.getCustomerCode());
+                } else if (coRoutingOrGeneral instanceof CoRouting) {
+                    tmpCoRouting = (CoRouting)coRoutingOrGeneral;
+                    if (tmpCoRouting  !=  null) {
+                        org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev161014
+                            .constraints.co.routing.or.general.co.routing.CoRouting tmpCoRoutingCoRouting =
+                            tmpCoRouting.getCoRouting();
+                        if (tmpCoRoutingCoRouting  !=  null) {
+                            finalCoRouting.setCoRouting(
+                                    new CoRoutingBuilder()
+                                    .setExistingService(tmpCoRoutingCoRouting.getExistingService())
+                                    .build());
+                        }
+                    }
+                    tempHard.setCoRoutingOrGeneral(finalCoRouting.build())
+                        .setCustomerCode(constraints.getCustomerCode());
+                    tempSoft.setCoRoutingOrGeneral(finalCoRouting.build())
+                        .setCustomerCode(constraints.getCustomerCode());
+                }
+            }
+        }
+        if (input instanceof HardConstraints) {
+            return tempHard.build();
+        } else if (input instanceof SoftConstraints) {
+            return tempSoft.build();
+        } else {
+            return null;
+        }
+    }
+
     /**
      * map hard/soft constraints from Service 1.2
      * to ServicePath 1.4.
      */
     public void serviceToServicePathConstarints() {
         LOG.info("Mapping Service Constraints to ServicePath Constraints");
-        CoRoutingOrGeneral coRoutingOrGeneral = null;
+        //CoRoutingOrGeneral coRoutingOrGeneral = null;
         if (serviceHardConstraints  !=  null) {
-            HardConstraintsBuilder tempHard = new HardConstraintsBuilder();
+            /*HardConstraintsBuilder tempHard = new HardConstraintsBuilder();
             coRoutingOrGeneral = serviceHardConstraints.getCoRoutingOrGeneral();
             General tmpGeneral = null;
             CoRouting tmpCoRouting = null;
             if (coRoutingOrGeneral  !=  null) {
                 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
-                    .rev170426.constraints.sp.co.routing.or.general.GeneralBuilder finalGeneral =
+                    .rev171017.constraints.sp.co.routing.or.general.GeneralBuilder finalGeneral =
                     new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
-                    .rev170426.constraints.sp.co.routing.or.general.GeneralBuilder();
+                    .rev171017.constraints.sp.co.routing.or.general.GeneralBuilder();
                 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
-                    .rev170426.constraints.sp.co.routing.or.general.CoRoutingBuilder finalCoRouting =
+                    .rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder finalCoRouting =
                     new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
-                    .rev170426.constraints.sp.co.routing.or.general.CoRoutingBuilder();
+                    .rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder();
                 if (coRoutingOrGeneral instanceof General) {
                     tmpGeneral = (General) coRoutingOrGeneral;
                     if (tmpGeneral  !=  null) {
@@ -158,21 +261,29 @@ public class MappingConstraints {
 
                 }
             }
-            servicePathHardConstraints = tempHard.build();
+            servicePathHardConstraints = tempHard.build();*/
+
+            org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
+                .rev171017.routing.constraints.sp.HardConstraints tempHard = (org.opendaylight.yang.gen
+                    .v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing
+                    .constraints.sp.HardConstraints) getConstraints(serviceHardConstraints);
+            if (tempHard != null) {
+                servicePathHardConstraints = tempHard;
+            }
         } else if (serviceSoftConstraints  !=  null) {
-            SoftConstraintsBuilder tempSoft = new SoftConstraintsBuilder();
+            /*oftConstraintsBuilder tempSoft = new SoftConstraintsBuilder();
             coRoutingOrGeneral = serviceSoftConstraints.getCoRoutingOrGeneral();
             General tmpGeneral = null;
             CoRouting tmpCoRouting = null;
             if (coRoutingOrGeneral  !=  null) {
                 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
-                    .rev170426.constraints.sp.co.routing.or.general.GeneralBuilder finalGeneral =
+                    .rev171017.constraints.sp.co.routing.or.general.GeneralBuilder finalGeneral =
                     new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
-                    .rev170426.constraints.sp.co.routing.or.general.GeneralBuilder();
+                    .rev171017.constraints.sp.co.routing.or.general.GeneralBuilder();
                 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
-                    .rev170426.constraints.sp.co.routing.or.general.CoRoutingBuilder finalCoRouting =
+                    .rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder finalCoRouting =
                     new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
-                    .rev170426.constraints.sp.co.routing.or.general.CoRoutingBuilder();
+                    .rev171017.constraints.sp.co.routing.or.general.CoRoutingBuilder();
                 if (coRoutingOrGeneral instanceof General) {
                     tmpGeneral = (General) coRoutingOrGeneral;
                     if (tmpGeneral  !=  null) {
@@ -237,7 +348,14 @@ public class MappingConstraints {
 
                 }
             }
-            servicePathSoftConstraints = tempSoft.build();
+            servicePathSoftConstraints = tempSoft.build();*/
+            org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints
+                .rev171017.routing.constraints.sp.SoftConstraints tempSoft = (org.opendaylight.yang.gen
+                    .v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing
+                    .constraints.sp.SoftConstraints) getConstraints(serviceSoftConstraints);
+            if (tempSoft != null) {
+                servicePathSoftConstraints = tempSoft;
+            }
         }
     }
 
@@ -263,25 +381,25 @@ public class MappingConstraints {
 
 
     public org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-        .routing.constraints.rev170426.routing.constraints.sp.HardConstraints getServicePathHardConstraints() {
+        .routing.constraints.rev171017.routing.constraints.sp.HardConstraints getServicePathHardConstraints() {
         return servicePathHardConstraints;
     }
 
 
     public void setServicePathHardConstraints(org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-            .routing.constraints.rev170426.routing.constraints.sp.HardConstraints servicePathHardConstraints) {
+            .routing.constraints.rev171017.routing.constraints.sp.HardConstraints servicePathHardConstraints) {
         this.servicePathHardConstraints = servicePathHardConstraints;
     }
 
 
     public org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-        .routing.constraints.rev170426.routing.constraints.sp.SoftConstraints getServicePathSoftConstraints() {
+        .routing.constraints.rev171017.routing.constraints.sp.SoftConstraints getServicePathSoftConstraints() {
         return servicePathSoftConstraints;
     }
 
 
     public void setServicePathSoftConstraints(org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-            .routing.constraints.rev170426.routing.constraints.sp.SoftConstraints servicePathSoftConstraints) {
+            .routing.constraints.rev171017.routing.constraints.sp.SoftConstraints servicePathSoftConstraints) {
         this.servicePathSoftConstraints = servicePathSoftConstraints;
     }