Add DataRateUnit to help specifying Bandwidth.

Change-Id: I2b83922d98cab5571408b920a89bb8b704934255
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
index 43b8e4b..20ccb55 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
@@ -16,6 +16,8 @@
 package org.onosproject.net.intent.constraint;
 
 import com.google.common.annotations.Beta;
+
+import org.onlab.util.DataRateUnit;
 import org.onosproject.net.Link;
 import org.onosproject.net.resource.link.BandwidthResource;
 import org.onosproject.net.resource.link.BandwidthResourceRequest;
@@ -32,7 +34,7 @@
  * Constraint that evaluates links based on available bandwidths.
  */
 @Beta
-public class BandwidthConstraint extends BooleanConstraint {
+public final class BandwidthConstraint extends BooleanConstraint {
 
     private final BandwidthResource bandwidth;
 
@@ -45,6 +47,17 @@
         this.bandwidth = checkNotNull(bandwidth, "Bandwidth cannot be null");
     }
 
+    /**
+     * Creates a new bandwidth constraint.
+     *
+     * @param v         required amount of bandwidth
+     * @param unit      {@link DataRateUnit} of {@code v}
+     * @return  {@link BandwidthConstraint} instance with given bandwidth requirement
+     */
+    public static BandwidthConstraint of(double v, DataRateUnit unit) {
+        return new BandwidthConstraint(BandwidthResource.of(v, unit));
+    }
+
     // Constructor for serialization
     private BandwidthConstraint() {
         this.bandwidth = null;