[ONOS-2449] - OVSDB -- Create the rest table of RFC7047 which contain
FlowSampleCollectorSet,FlowTable,IPFIX,Manager,Mirror.

Change-Id: I730a6a42c7bb90a6ffd8e3c4e525dabfd85b3bd0
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java
new file mode 100644
index 0000000..05a0354
--- /dev/null
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowSampleCollectorSet.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.table;
+
+import java.util.Map;
+
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.notation.UUID;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService;
+import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription;
+
+/**
+ * This class provides operations of FlowSampleCollectorSet Table.
+ */
+public class FlowSampleCollectorSet extends AbstractOvsdbTableService {
+    /**
+     * FlowSampleCollectorSet table column name.
+     */
+    public enum FlowSampleCollectorSetColumn {
+        ID("id"), BRIDGE("bridge"), IPFIX("ipfix"), EXTERNALIDS("external_ids");
+
+        private final String columnName;
+
+        private FlowSampleCollectorSetColumn(String columnName) {
+            this.columnName = columnName;
+        }
+
+        /**
+         * Returns the table column name for FlowSampleCollectorSetColumn.
+         * @return the table column name
+         */
+        public String columnName() {
+            return columnName;
+        }
+    }
+
+    /**
+     * Constructs a FlowSampleCollectorSet object. Generate
+     * FlowSampleCollectorSet Table Description.
+     * @param dbSchema DatabaseSchema
+     * @param row Row
+     */
+    public FlowSampleCollectorSet(DatabaseSchema dbSchema, Row row) {
+        super(dbSchema, row, OvsdbTable.FLOWSAMPLECOLLECTORSET, VersionNum.VERSION710);
+    }
+
+    /**
+     * Get the Column entity which column name is "id" from the Row entity of
+     * attributes.
+     * @return the Column entity which column name is "id"
+     */
+    public Column getIdColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.ID.columnName(),
+                                                             "getIdColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "id" to the Row entity of
+     * attributes.
+     * @param id the column data which column name is "id"
+     */
+    public void setId(Long id) {
+        ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.ID.columnName(),
+                                                             "setId", VersionNum.VERSION710);
+        super.setDataHandler(columndesc, id);
+    }
+
+    /**
+     * Get the Column entity which column name is "bridge" from the Row entity
+     * of attributes.
+     * @return the Column entity which column name is "bridge"
+     */
+    public Column getBridgeColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.BRIDGE.columnName(),
+                                                             "getBridgeColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "bridge" to the Row entity of
+     * attributes.
+     * @param bridge the column data which column name is "bridge"
+     */
+    public void setBridge(UUID bridge) {
+        ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.BRIDGE.columnName(),
+                                                             "setBridge", VersionNum.VERSION710);
+        super.setDataHandler(columndesc, bridge);
+    }
+
+    /**
+     * Get the Column entity which column name is "ipfix" from the Row entity of
+     * attributes.
+     * @return the Column entity which column name is "ipfix"
+     */
+    public Column getIpfixColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.IPFIX.columnName(),
+                                                             "getIpfixColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "ipfix" to the Row entity of
+     * attributes.
+     * @param ipfix the column data which column name is "ipfix"
+     */
+    public void setIpfix(UUID ipfix) {
+        ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.IPFIX.columnName(),
+                                                             "setIpfix", VersionNum.VERSION710);
+        super.setDataHandler(columndesc, ipfix);
+    }
+
+    /**
+     * Get the Column entity which column name is "external_ids" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "external_ids"
+     */
+    public Column getExternalIdsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.EXTERNALIDS
+                                                                     .columnName(),
+                                                             "getExternalIdsColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "external_ids" to the Row entity
+     * of attributes.
+     * @param externalIds the column data which column name is "external_ids"
+     */
+    public void setExternalIds(Map<String, String> externalIds) {
+        ColumnDescription columndesc = new ColumnDescription(FlowSampleCollectorSetColumn.EXTERNALIDS
+                                                                     .columnName(),
+                                                             "setExternalIds", VersionNum.VERSION710);
+        super.setDataHandler(columndesc, externalIds);
+    }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java
new file mode 100644
index 0000000..ed1c217
--- /dev/null
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/FlowTable.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.table;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService;
+import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription;
+
+/**
+ * This class provides operations of FlowTable Table.
+ */
+public class FlowTable extends AbstractOvsdbTableService {
+    /**
+     * FlowTable table column name.
+     */
+    public enum FlowTableColumn {
+        FLOWLIMIT("flow_limit"), OVERFLOWPOLICY("overflow_policy"), GROUPS("groups"), NAME("name"),
+        PREFIXES("prefixes"), EXTERNALIDS("external_ids");
+
+        private final String columnName;
+
+        private FlowTableColumn(String columnName) {
+            this.columnName = columnName;
+        }
+
+        /**
+         * Returns the table column name for FlowTableColumn.
+         * @return the table column name
+         */
+        public String columnName() {
+            return columnName;
+        }
+    }
+
+    /**
+     * Constructs a FlowTable object. Generate FlowTable Table Description.
+     * @param dbSchema DatabaseSchema
+     * @param row Row
+     */
+    public FlowTable(DatabaseSchema dbSchema, Row row) {
+        super(dbSchema, row, OvsdbTable.FLWTABLE, VersionNum.VERSION650);
+    }
+
+    /**
+     * Get the Column entity which column name is "flow_limit" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "flow_limit"
+     */
+    public Column getFlowLimitColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.FLOWLIMIT.columnName(),
+                                                             "getFlowLimitColumn", VersionNum.VERSION650);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "flow_limit" to the Row entity
+     * of attributes.
+     * @param flowLimit the column data which column name is "flow_limit"
+     */
+    public void setFlowLimit(Set<Long> flowLimit) {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.FLOWLIMIT.columnName(),
+                                                             "setFlowLimit", VersionNum.VERSION650);
+        super.setDataHandler(columndesc, flowLimit);
+    }
+
+    /**
+     * Get the Column entity which column name is "overflow_policy" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "overflow_policy"
+     */
+    public Column getOverflowPolicyColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.OVERFLOWPOLICY.columnName(),
+                                                             "getOverflowPolicyColumn", VersionNum.VERSION650);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "overflow_policy" to the Row
+     * entity of attributes.
+     * @param overflowPolicy the column data which column name is
+     *            "overflow_policy"
+     */
+    public void setOverflowPolicy(Set<String> overflowPolicy) {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.OVERFLOWPOLICY.columnName(),
+                                                             "setOverflowPolicy", VersionNum.VERSION650);
+        super.setDataHandler(columndesc, overflowPolicy);
+    }
+
+    /**
+     * Get the Column entity which column name is "groups" from the Row entity
+     * of attributes.
+     * @return the Column entity which column name is "groups"
+     */
+    public Column getGroupsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.GROUPS.columnName(),
+                                                             "getGroupsColumn", VersionNum.VERSION650);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "groups" to the Row entity of
+     * attributes.
+     * @param groups the column data which column name is "groups"
+     */
+    public void setGroups(Set<String> groups) {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.GROUPS.columnName(),
+                                                             "setGroups", VersionNum.VERSION650);
+        super.setDataHandler(columndesc, groups);
+    }
+
+    /**
+     * Get the Column entity which column name is "name" from the Row entity of
+     * attributes.
+     * @return the Column entity which column name is "name"
+     */
+    public Column getNameColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.NAME.columnName(),
+                                                             "getNameColumn", VersionNum.VERSION650);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "name" to the Row entity of
+     * attributes.
+     * @param name the column data which column name is "name"
+     */
+    public void setName(Set<String> name) {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.NAME.columnName(),
+                                                             "setName",
+                                                             VersionNum.VERSION650);
+        super.setDataHandler(columndesc, name);
+    }
+
+    /**
+     * Get the Column entity which column name is "prefixes" from the Row entity
+     * of attributes.
+     * @return the Column entity which column name is "prefixes"
+     */
+    public Column getPrefixesColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.PREFIXES.columnName(),
+                                                             "getPrefixesColumn", VersionNum.VERSION740);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "prefixes" to the Row entity of
+     * attributes.
+     * @param prefixes the column data which column name is "prefixes"
+     */
+    public void setPrefixes(Set<String> prefixes) {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.PREFIXES.columnName(),
+                                                             "setPrefixes", VersionNum.VERSION740);
+        super.setDataHandler(columndesc, prefixes);
+    }
+
+    /**
+     * Get the Column entity which column name is "external_ids" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "external_ids"
+     */
+    public Column getExternalIdsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.EXTERNALIDS.columnName(),
+                                                             "getExternalIdsColumn", VersionNum.VERSION750);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "external_ids" to the Row entity
+     * of attributes.
+     * @param externalIds the column data which column name is "external_ids"
+     */
+    public void setExternalIds(Map<String, String> externalIds) {
+        ColumnDescription columndesc = new ColumnDescription(FlowTableColumn.EXTERNALIDS.columnName(),
+                                                             "setExternalIds", VersionNum.VERSION750);
+        super.setDataHandler(columndesc, externalIds);
+    }
+
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java
new file mode 100644
index 0000000..c29f2e0
--- /dev/null
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Ipfix.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.table;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService;
+import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription;
+
+/**
+ * This class provides operations of Ipfix Table.
+ */
+public class Ipfix extends AbstractOvsdbTableService {
+    /**
+     * Ipfix table column name.
+     */
+    public enum IpfixColumn {
+        TARGETS("targets"), SAMPLING("sampling"), OBSDOMAINID("obs_domain_id"), OBSPOINTID("obs_point_id"),
+        CACHEACTIVETIMEOUT("cache_active_timeout"), EXTERNALIDS("external_ids"),
+        CACHEMAXFLOWS("cache_max_flows");
+
+        private final String columnName;
+
+        private IpfixColumn(String columnName) {
+            this.columnName = columnName;
+        }
+
+        /**
+         * Returns the table column name for IpfixColumn.
+         * @return the table column name
+         */
+        public String columnName() {
+            return columnName;
+        }
+    }
+
+    /**
+     * Constructs a Ipfix object. Generate Ipfix Table Description.
+     * @param dbSchema DatabaseSchema
+     * @param row Row
+     */
+    public Ipfix(DatabaseSchema dbSchema, Row row) {
+        super(dbSchema, row, OvsdbTable.IPFIX, VersionNum.VERSION710);
+    }
+
+    /**
+     * Get the Column entity which column name is "targets" from the Row entity
+     * of attributes.
+     * @return the Column entity which column name is "targets"
+     */
+    public Column getTargetsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.TARGETS.columnName(),
+                                                             "getTargetsColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "targets" to the Row entity of
+     * attributes.
+     * @param targets the column data which column name is "targets"
+     */
+    public void setTargets(Set<String> targets) {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.TARGETS.columnName(),
+                                                             "setTargets",
+                                                             VersionNum.VERSION710);
+        super.setDataHandler(columndesc, targets);
+    }
+
+    /**
+     * Get the Column entity which column name is "sampling" from the Row entity
+     * of attributes.
+     * @return the Column entity which column name is "sampling"
+     */
+    public Column getSamplingColumn() {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.SAMPLING.columnName(),
+                                                             "getSamplingColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "sampling" to the Row entity of
+     * attributes.
+     * @param sampling the column data which column name is "sampling"
+     */
+    public void setSampling(Set<Long> sampling) {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.SAMPLING.columnName(),
+                                                             "setSampling", VersionNum.VERSION710);
+        super.setDataHandler(columndesc, sampling);
+    }
+
+    /**
+     * Get the Column entity which column name is "obs_domain_id" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "obs_domain_id"
+     */
+    public Column getObsDomainIdColumn() {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.OBSDOMAINID.columnName(),
+                                                             "getObsDomainIdColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "obs_domain_id" to the Row
+     * entity of attributes.
+     * @param obsdomainid the column data which column name is "obs_domain_id"
+     */
+    public void setObsDomainId(Set<Long> obsdomainid) {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.OBSDOMAINID.columnName(),
+                                                             "setObsDomainId", VersionNum.VERSION710);
+        super.setDataHandler(columndesc, obsdomainid);
+    }
+
+    /**
+     * Get the Column entity which column name is "obs_point_id" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "obs_point_id"
+     */
+    public Column getObsPointIdColumn() {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.OBSPOINTID.columnName(),
+                                                             "getObsPointIdColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "obs_point_id" to the Row entity
+     * of attributes.
+     * @param obsPointId the column data which column name is "obs_point_id"
+     */
+    public void setObsPointId(Set<Long> obsPointId) {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.OBSPOINTID.columnName(),
+                                                             "setObsPointId", VersionNum.VERSION710);
+        super.setDataHandler(columndesc, obsPointId);
+    }
+
+    /**
+     * Get the Column entity which column name is "cache_active_timeout" from
+     * the Row entity of attributes.
+     * @return the Column entity which column name is "cache_active_timeout"
+     */
+    public Column getCacheActiveTimeoutColumn() {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.CACHEACTIVETIMEOUT.columnName(),
+                                                             "getCacheActiveTimeoutColumn",
+                                                             VersionNum.VERSION730);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "cache_active_timeout" to the
+     * Row entity of attributes.
+     * @param cacheActiveTimeout the column data which column name is
+     *            "cache_active_timeout"
+     */
+    public void setCacheActiveTimeout(Set<Long> cacheActiveTimeout) {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.CACHEACTIVETIMEOUT.columnName(),
+                                                             "setCacheActiveTimeout", VersionNum.VERSION730);
+        super.setDataHandler(columndesc, cacheActiveTimeout);
+    }
+
+    /**
+     * Get the Column entity which column name is "cache_max_flows" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "cache_max_flows"
+     */
+    public Column getCacheMaxFlowsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.CACHEMAXFLOWS.columnName(),
+                                                             "getCacheMaxFlowsColumn", VersionNum.VERSION730);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "cache_max_flows" to the Row
+     * entity of attributes.
+     * @param cacheMaxFlows the column data which column name is
+     *            "cache_max_flows"
+     */
+    public void setCacheMaxFlows(Set<Long> cacheMaxFlows) {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.CACHEMAXFLOWS.columnName(),
+                                                             "setCacheMaxFlows", VersionNum.VERSION730);
+        super.setDataHandler(columndesc, cacheMaxFlows);
+    }
+
+    /**
+     * Get the Column entity which column name is "external_ids" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "external_ids"
+     */
+    public Column getExternalIdsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.EXTERNALIDS.columnName(),
+                                                             "getExternalIdsColumn", VersionNum.VERSION710);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "external_ids" to the Row entity
+     * of attributes.
+     * @param externalIds the column data which column name is "external_ids"
+     */
+    public void setExternalIds(Map<String, String> externalIds) {
+        ColumnDescription columndesc = new ColumnDescription(IpfixColumn.EXTERNALIDS.columnName(),
+                                                             "setExternalIds", VersionNum.VERSION710);
+        super.setDataHandler(columndesc, externalIds);
+    }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java
new file mode 100644
index 0000000..d0c2638
--- /dev/null
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Manager.java
@@ -0,0 +1,243 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.table;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService;
+import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription;
+
+/**
+ * This class provides operations of Manager Table.
+ */
+public class Manager extends AbstractOvsdbTableService {
+    /**
+     * Manager table column name.
+     */
+    public enum ManagerColumn {
+        TARGET("target"), ISCONNECTED("is_connected"), CONNECTIONMODE("connection_mode"),
+        EXTERNALIDS("external_ids"), STATUS("status"), INACTIVITYPROBE("inactivity_probe"),
+        OTHERCONFIG("other_config"), MAXBACKOFF("max_backoff");
+
+        private final String columnName;
+
+        private ManagerColumn(String columnName) {
+            this.columnName = columnName;
+        }
+
+        /**
+         * Returns the table column name for ManagerColumn.
+         * @return the table column name
+         */
+        public String columnName() {
+            return columnName;
+        }
+    }
+
+    /**
+     * Constructs a Manager object. Generate Manager Table Description.
+     * @param dbSchema DatabaseSchema
+     * @param row Row
+     */
+    public Manager(DatabaseSchema dbSchema, Row row) {
+        super(dbSchema, row, OvsdbTable.MANAGER, VersionNum.VERSION100);
+    }
+
+    /**
+     * Get the Column entity which column name is "target" from the Row entity
+     * of attributes.
+     * @return the Column entity which column name is "target"
+     */
+    public Column getTargetColumn() {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.TARGET.columnName(),
+                                                             "getTargetColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "target" to the Row entity of
+     * attributes.
+     * @param target the column data which column name is "target"
+     */
+    public void setTarget(Set<String> target) {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.TARGET.columnName(),
+                                                             "setTarget",
+                                                             VersionNum.VERSION100);
+        super.setDataHandler(columndesc, target);
+    }
+
+    /**
+     * Get the Column entity which column name is "is_connected" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "is_connected"
+     */
+    public Column getIsConnectedColumn() {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.ISCONNECTED.columnName(),
+                                                             "getIsConnectedColumn", VersionNum.VERSION110);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "is_connected" to the Row entity
+     * of attributes.
+     * @param isConnected the column data which column name is "is_connected"
+     */
+    public void setIsConnected(Boolean isConnected) {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.ISCONNECTED.columnName(),
+                                                             "setIsConnected", VersionNum.VERSION110);
+        super.setDataHandler(columndesc, isConnected);
+    }
+
+    /**
+     * Get the Column entity which column name is "other_config" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "other_config"
+     */
+    public Column getOtherConfigColumn() {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.OTHERCONFIG.columnName(),
+                                                             "getOtherConfigColumn", VersionNum.VERSION680);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "other_config" to the Row entity
+     * of attributes.
+     * @param otherConfig the column data which column name is "other_config"
+     */
+    public void setOtherConfig(Map<String, String> otherConfig) {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.OTHERCONFIG.columnName(),
+                                                             "setOtherConfig", VersionNum.VERSION680);
+        super.setDataHandler(columndesc, otherConfig);
+    }
+
+    /**
+     * Get the Column entity which column name is "external_ids" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "external_ids"
+     */
+    public Column getExternalIdsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.EXTERNALIDS.columnName(),
+                                                             "getExternalIdsColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "external_ids" to the Row entity
+     * of attributes.
+     * @param externalIds the column data which column name is "external_ids"
+     */
+    public void setExternalIds(Map<String, String> externalIds) {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.EXTERNALIDS.columnName(),
+                                                             "setExternalIds", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, externalIds);
+    }
+
+    /**
+     * Get the Column entity which column name is "max_backoff" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "max_backoff"
+     */
+    public Column getMaxBackoffColumn() {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.MAXBACKOFF.columnName(),
+                                                             "getMaxBackoffColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "max_backoff" to the Row entity
+     * of attributes.
+     * @param maxBackoff the column data which column name is "max_backoff"
+     */
+    public void setMaxBackoff(Set<Long> maxBackoff) {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.MAXBACKOFF.columnName(),
+                                                             "setMaxBackoff", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, maxBackoff);
+    }
+
+    /**
+     * Get the Column entity which column name is "status" from the Row entity
+     * of attributes.
+     * @return the Column entity which column name is "status"
+     */
+    public Column getStatusColumn() {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.STATUS.columnName(),
+                                                             "getStatusColumn", VersionNum.VERSION110);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "status" to the Row entity of
+     * attributes.
+     * @param status the column data which column name is "status"
+     */
+    public void setStatus(Map<String, String> status) {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.STATUS.columnName(),
+                                                             "setStatus",
+                                                             VersionNum.VERSION110);
+        super.setDataHandler(columndesc, status);
+    }
+
+    /**
+     * Get the Column entity which column name is "inactivity_probe" from the
+     * Row entity of attributes.
+     * @return the Column entity which column name is "inactivity_probe"
+     */
+    public Column getInactivityProbeColumn() {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.INACTIVITYPROBE.columnName(),
+                                                             "getInactivityProbeColumn",
+                                                             VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "inactivity_probe" to the Row
+     * entity of attributes.
+     * @param inactivityProbe the column data which column name is
+     *            "inactivity_probe"
+     */
+    public void setInactivityProbe(Set<Long> inactivityProbe) {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.INACTIVITYPROBE.columnName(),
+                                                             "setInactivityProbe", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, inactivityProbe);
+    }
+
+    /**
+     * Get the Column entity which column name is "connection_mode" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "connection_mode"
+     */
+    public Column getConnectionModeColumn() {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.CONNECTIONMODE.columnName(),
+                                                             "getConnectionModeColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "connection_mode" to the Row
+     * entity of attributes.
+     * @param connectionMode the column data which column name is
+     *            "connection_mode"
+     */
+    public void setConnectionMode(Set<String> connectionMode) {
+        ColumnDescription columndesc = new ColumnDescription(ManagerColumn.CONNECTIONMODE.columnName(),
+                                                             "setConnectionMode", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, connectionMode);
+    }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java
new file mode 100644
index 0000000..ec022fe
--- /dev/null
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/table/Mirror.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.table;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.notation.UUID;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+import org.onosproject.ovsdb.rfc.tableservice.AbstractOvsdbTableService;
+import org.onosproject.ovsdb.rfc.tableservice.ColumnDescription;
+
+/**
+ * This class provides operations of Mirror Table.
+ */
+public class Mirror extends AbstractOvsdbTableService {
+    /**
+     * Mirror table column name.
+     */
+    public enum MirrorColumn {
+        NAME("name"), SELECTSRCPORT("select_src_port"), SELECTDSTPORT("select_dst_port"),
+        SELECTVLAN("select_vlan"), OUTPUTPORT("output_port"), EXTERNALIDS("external_ids"),
+        OUTPUTVLAN("output_vlan"), STATISTICS("statistics"), SELECTALL("select_all");
+
+        private final String columnName;
+
+        private MirrorColumn(String columnName) {
+            this.columnName = columnName;
+        }
+
+        /**
+         * Returns the table column name for MirrorColumn.
+         * @return the table column name
+         */
+        public String columnName() {
+            return columnName;
+        }
+    }
+
+    /**
+     * Constructs a Mirror object. Generate Mirror Table Description.
+     * @param dbSchema DatabaseSchema
+     * @param row Row
+     */
+    public Mirror(DatabaseSchema dbSchema, Row row) {
+        super(dbSchema, row, OvsdbTable.MIRROR, VersionNum.VERSION100);
+    }
+
+    /**
+     * Get the Column entity which column name is "name" from the Row entity of
+     * attributes.
+     * @return the Column entity which column name is "name"
+     */
+    public Column getNameColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.NAME.columnName(),
+                                                             "getNameColumn",
+                                                             VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "name" to the Row entity of
+     * attributes.
+     * @param name the column data which column name is "name"
+     */
+    public void setName(Set<String> name) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.NAME.columnName(),
+                                                             "setName",
+                                                             VersionNum.VERSION100);
+        super.setDataHandler(columndesc, name);
+    }
+
+    /**
+     * Get the column data which column name is "name" from the Row entity of
+     * attributes.
+     * @return the column data which column name is "name"
+     */
+    public Set<String> getName() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.NAME.columnName(),
+                                                             "getName",
+                                                             VersionNum.VERSION100);
+        return (Set<String>) super.getDataHandler(columndesc);
+    }
+
+    /**
+     * Get the Column entity which column name is "select_src_port" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "select_src_port"
+     */
+    public Column getSelectSrcPortColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTSRCPORT.columnName(),
+                                                             "getSelectSrcPortColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "select_src_port" to the Row
+     * entity of attributes.
+     * @param selectSrcPort the column data which column name is
+     *            "select_src_port"
+     */
+    public void setSelectSrcPort(Set<UUID> selectSrcPort) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTSRCPORT.columnName(),
+                                                             "setSelectSrcPort", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, selectSrcPort);
+    }
+
+    /**
+     * Get the Column entity which column name is "select_dst_port" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "select_dst_port"
+     */
+    public Column getSelectDstPortColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTDSTPORT.columnName(),
+                                                             "getSelectDstPortColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "select_dst_port" to the Row
+     * entity of attributes.
+     * @param selectDstPrt the column data which column name is
+     *            "select_dst_port"
+     */
+    public void setSelectDstPort(Set<UUID> selectDstPrt) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTDSTPORT.columnName(),
+                                                             "setSelectDstPort", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, selectDstPrt);
+    }
+
+    /**
+     * Get the Column entity which column name is "select_vlan" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "select_vlan"
+     */
+    public Column getSelectVlanColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTVLAN.columnName(),
+                                                             "getSelectVlanColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "select_vlan" to the Row entity
+     * of attributes.
+     * @param selectVlan the column data which column name is "select_vlan"
+     */
+    public void setSelectVlan(Set<Long> selectVlan) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTVLAN.columnName(),
+                                                             "setSelectVlan", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, selectVlan);
+    }
+
+    /**
+     * Get the Column entity which column name is "output_port" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "output_port"
+     */
+    public Column getOutputPortColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.OUTPUTPORT.columnName(),
+                                                             "getOutputPortColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "output_port" to the Row entity
+     * of attributes.
+     * @param outputPort the column data which column name is "output_port"
+     */
+    public void setOutputPort(Set<UUID> outputPort) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.OUTPUTPORT.columnName(),
+                                                             "setOutputPort", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, outputPort);
+    }
+
+    /**
+     * Get the Column entity which column name is "output_vlan" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "output_vlan"
+     */
+    public Column getOutputVlanColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.OUTPUTVLAN.columnName(),
+                                                             "getOutputVlanColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "output_vlan" to the Row entity
+     * of attributes.
+     * @param outputVlan the column data which column name is "output_vlan"
+     */
+    public void setOutputVlan(Set<Long> outputVlan) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.OUTPUTVLAN.columnName(),
+                                                             "setOutputVlan", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, outputVlan);
+    }
+
+    /**
+     * Get the Column entity which column name is "statistics" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "statistics"
+     */
+    public Column getStatisticsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.STATISTICS.columnName(),
+                                                             "getStatisticsColumn", VersionNum.VERSION640);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "statistics" to the Row entity
+     * of attributes.
+     * @param statistics the column data which column name is "statistics"
+     */
+    public void setStatistics(Map<String, Long> statistics) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.STATISTICS.columnName(),
+                                                             "setStatistics", VersionNum.VERSION640);
+        super.setDataHandler(columndesc, statistics);
+    }
+
+    /**
+     * Get the Column entity which column name is "external_ids" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "external_ids"
+     */
+    public Column getExternalIdsColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.EXTERNALIDS.columnName(),
+                                                             "getExternalIdsColumn", VersionNum.VERSION100);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "external_ids" to the Row entity
+     * of attributes.
+     * @param externalIds the column data which column name is "external_ids"
+     */
+    public void setExternalIds(Map<String, String> externalIds) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.EXTERNALIDS.columnName(),
+                                                             "setExternalIds", VersionNum.VERSION100);
+        super.setDataHandler(columndesc, externalIds);
+    }
+
+    /**
+     * Get the Column entity which column name is "select_all" from the Row
+     * entity of attributes.
+     * @return the Column entity which column name is "select_all"
+     */
+    public Column getSelectAllColumn() {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTALL.columnName(),
+                                                             "getSelectAllColumn", VersionNum.VERSION620);
+        return (Column) super.getColumnHandler(columndesc);
+    }
+
+    /**
+     * Add a Column entity which column name is "select_all" to the Row entity
+     * of attributes.
+     * @param selectAll the column data which column name is "select_all"
+     */
+    public void setSelectAll(Boolean selectAll) {
+        ColumnDescription columndesc = new ColumnDescription(MirrorColumn.SELECTALL.columnName(),
+                                                             "setSelectAll", VersionNum.VERSION620);
+        super.setDataHandler(columndesc, selectAll);
+    }
+}