Removed hardcoded model from BMv2 driver

Now it uses the model stored in device annotations. Also refactored flow
rule translator classes to reflect this change.

Change-Id: I46541bcc2ab5a267eef4becb6250b9a99684056a
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/translators/Bmv2DefaultFlowRuleTranslator.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/translators/Bmv2DefaultFlowRuleTranslator.java
index a54a3c8..170e955 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/translators/Bmv2DefaultFlowRuleTranslator.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/translators/Bmv2DefaultFlowRuleTranslator.java
@@ -18,7 +18,6 @@
 
 import com.google.common.annotations.Beta;
 import org.onlab.util.ImmutableByteSequence;
-import org.onosproject.bmv2.api.model.Bmv2Model;
 import org.onosproject.bmv2.api.model.Bmv2ModelField;
 import org.onosproject.bmv2.api.model.Bmv2ModelTable;
 import org.onosproject.bmv2.api.model.Bmv2ModelTableKey;
@@ -66,9 +65,11 @@
 @Beta
 public class Bmv2DefaultFlowRuleTranslator implements Bmv2FlowRuleTranslator {
 
-    // TODO: config is harcoded now, instead it should be selected based on device model
-    private final TranslatorConfig config = new Bmv2SimpleTranslatorConfig();
-    private final Bmv2Model model = config.model();
+    private final TranslatorConfig config;
+
+    public Bmv2DefaultFlowRuleTranslator(TranslatorConfig config) {
+        this.config = config;
+    }
 
     private static Bmv2TernaryMatchParam buildTernaryParam(Bmv2ModelField field, Criterion criterion, int byteWidth)
             throws Bmv2FlowRuleTranslatorException {
@@ -201,7 +202,7 @@
 
         int tableId = rule.tableId();
 
-        Bmv2ModelTable table = model.table(tableId);
+        Bmv2ModelTable table = config.model().table(tableId);
 
         if (table == null) {
             throw new Bmv2FlowRuleTranslatorException("Unknown table ID: " + tableId);