/* * Copyright 2015-present 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 org.onosproject.ovsdb.rfc.notation.Row; import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; /** * Table generator. */ public final class TableGenerator { /** * Constructs a TableGenerator object. Utility classes should not have a * public or default constructor, otherwise it will compile failed. This * class should not be instantiated. */ private TableGenerator() { } /** * Create table. * @param dbSchema DatabaseSchema entity * @param tableName table name * @return Object table entity */ //FIXME change the name, it creates a row object, such as a controller. public static Object createTable(DatabaseSchema dbSchema, OvsdbTable tableName) { Row row = new Row(); return generateTable(dbSchema, row, tableName); } /** * Get table from Row. * @param dbSchema DatabaseSchema entity * @param row Row entity * @param tableName table name * @return Object table entity */ public static Object getTable(DatabaseSchema dbSchema, Row row, OvsdbTable tableName) { return generateTable(dbSchema, row, tableName); } /** * Generate the table by table name. * @param dbSchema DatabaseSchema entity * @param row Row entity * @param tableName table name * @return Object Table entity */ private static Object generateTable(DatabaseSchema dbSchema, Row row, OvsdbTable tableName) { switch (tableName) { case INTERFACE: return new Interface(dbSchema, row); case BRIDGE: return new Bridge(dbSchema, row); case CONTROLLER: return new Controller(dbSchema, row); case OPENVSWITCH: return new OpenVSwitch(dbSchema, row); case PORT: return new Port(dbSchema, row); case FLWTABLE: return new FlowTable(dbSchema, row); case QOS: return new Qos(dbSchema, row); case QUEUE: return new Queue(dbSchema, row); case MIRROR: return new Mirror(dbSchema, row); case MANAGER: return new Manager(dbSchema, row); case NETFLOW: return new Netflow(dbSchema, row); case SSL: return new Ssl(dbSchema, row); case SFLOW: return new Sflow(dbSchema, row); case IPFIX: return new Ipfix(dbSchema, row); case FLOWSAMPLECOLLECTORSET: return new FlowSampleCollectorSet(dbSchema, row); default: return null; } } }