Fix a cast error when creating OpticalConnectivityIntent

A cast error occurred in FlowModBuilder when the type of
Criterion was OCH_SIGID.

Move two convertion methods from FlowModBuilderVer13 to
FlowModBuilderHelper for refactoring.

Change-Id: I4634d57fc70cfb144de64d72140cbca81e060248
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java
index 5ec5d7b..9d949c6 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java
@@ -20,6 +20,7 @@
 import org.onlab.packet.Ip6Address;
 import org.onlab.packet.Ip6Prefix;
 import org.onlab.packet.VlanId;
+import org.onosproject.net.OchSignal;
 import org.onosproject.net.flow.FlowRule;
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.criteria.EthCriterion;
@@ -36,9 +37,9 @@
 import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
 import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
 import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
-import org.onosproject.net.flow.criteria.LambdaCriterion;
 import org.onosproject.net.flow.criteria.MetadataCriterion;
 import org.onosproject.net.flow.criteria.MplsCriterion;
+import org.onosproject.net.flow.criteria.OchSignalCriterion;
 import org.onosproject.net.flow.criteria.OpticalSignalTypeCriterion;
 import org.onosproject.net.flow.criteria.PortCriterion;
 import org.onosproject.net.flow.criteria.SctpPortCriterion;
@@ -374,10 +375,17 @@
                                   U16.of(exthdrFlagsCriterion.exthdrFlags()));
                 break;
             case OCH_SIGID:
-                LambdaCriterion lc = (LambdaCriterion) c;
-                mBuilder.setExact(MatchField.OCH_SIGID,
-                        new CircuitSignalID((byte) 1, (byte) 2,
-                                            (short) lc.lambda(), (short) 1));
+                try {
+                    OchSignalCriterion ochSignalCriterion = (OchSignalCriterion) c;
+                    OchSignal signal = ochSignalCriterion.lambda();
+                    byte gridType = FlowModBuilderHelper.convertGridType(signal.gridType());
+                    byte channelSpacing = FlowModBuilderHelper.convertChannelSpacing(signal.channelSpacing());
+                    mBuilder.setExact(MatchField.OCH_SIGID,
+                            new CircuitSignalID(gridType, channelSpacing,
+                                    (short) signal.spacingMultiplier(), (short) signal.slotGranularity()));
+                } catch (UnsupportedGridTypeException | UnsupportedChannelSpacingException e) {
+                    log.warn(e.getMessage());
+                }
                 break;
             case OCH_SIGTYPE:
                 OpticalSignalTypeCriterion sc =