/*
* Copyright (C) 2013 EBay Software Foundation
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Authors : Ashwin Raveendran, Madhu Venugopal
*/
package org.opendaylight.ovsdb.lib.message;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Maps;
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Capability;
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Port;
import org.opendaylight.ovsdb.lib.table.Controller;
import org.opendaylight.ovsdb.lib.table.Manager;
import org.opendaylight.ovsdb.lib.table.Mirror;
import org.opendaylight.ovsdb.lib.table.NetFlow;
import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
import org.opendaylight.ovsdb.lib.table.Qos;
import org.opendaylight.ovsdb.lib.table.Queue;
import org.opendaylight.ovsdb.lib.table.SFlow;
import org.opendaylight.ovsdb.lib.table.SSL;
import org.opendaylight.ovsdb.lib.table.Flow_Sample_Collector_Set;
import org.opendaylight.ovsdb.lib.table.Flow_Table;
import org.opendaylight.ovsdb.lib.table.IPFIX;
import org.opendaylight.ovsdb.lib.table.internal.Table;
import java.util.Map;
import java.util.Set;
public class TableUpdates extends Response {
Map<Table.Name, TableUpdate> map = Maps.newHashMap();
public Set<Table.Name> availableUpdates() {
return map.keySet();
}
@SuppressWarnings("unchecked")
public <T extends Table> TableUpdate<T> getUpdate(Table.Name<T> name) {
return map.get(name);
}
private <T extends Table> void put(Table.Name<T> name, TableUpdate<T> update) {
map.put(name, update);
}
@JsonProperty("Interface")
public TableUpdate<Interface> getInterfaceUpdate() {
return getUpdate(Interface.NAME);
}
public void setInterfaceUpdate(TableUpdate<Interface> interfaceUpdate) {
put(Interface.NAME, interfaceUpdate);
}
@JsonProperty("Bridge")
TableUpdate<Bridge> getBridgeUpdate() {
return getUpdate(Bridge.NAME);
}
public void setBridgeUpdate(TableUpdate<Bridge> bridgeUpdate) {
put(Bridge.NAME, bridgeUpdate);
}
@JsonProperty("Port")
TableUpdate<Port> getPortUpdate() {
return getUpdate(Port.NAME);
}
void setPortUpdate(TableUpdate<Port> portUpdate) {
put(Port.NAME, portUpdate);
}
@JsonProperty("Capability")
public TableUpdate<Capability> getCapabilityUpdate() {
return getUpdate(Capability.NAME);
}
public void setCapabilityUpdate(TableUpdate<Capability> capabilityUpdate) {
put(Capability.NAME, capabilityUpdate);
}
@JsonProperty("Controller")
public TableUpdate<Controller> getControllerUpdate() {
return getUpdate(Controller.NAME);
}
public void setControllerUpdate(TableUpdate<Controller> controllerUpdate) {
put(Controller.NAME, controllerUpdate);
}
@JsonProperty("Manager")
public TableUpdate<Manager> getManagerUpdate() {
return getUpdate(Manager.NAME);
}
public void setManagerUpdate(TableUpdate<Manager> managerUpdate) {
put(Manager.NAME, managerUpdate);
}
@JsonProperty("Mirror")
public TableUpdate<Mirror> getMirrorUpdate() {
return getUpdate(Mirror.NAME);
}
public void setMirrorUpdate(TableUpdate<Mirror> mirrorUpdate) {
put(Mirror.NAME, mirrorUpdate);
}
@JsonProperty("NetFlow")
public TableUpdate<NetFlow> getNetFlowUpdate() {
return getUpdate(NetFlow.NAME);
}
public void setNetFlowUpdate(TableUpdate<NetFlow> netFlowUpdate) {
put(NetFlow.NAME, netFlowUpdate);
}
@JsonProperty("Open_vSwitch")
public TableUpdate<Open_vSwitch> getOpen_vSwitchUpdate() {
return getUpdate(Open_vSwitch.NAME);
}
public void setOpen_vSwitchUpdate(TableUpdate<Open_vSwitch> openVSwitchUpdate) {
put(Open_vSwitch.NAME, openVSwitchUpdate);
}
@JsonProperty("QoS")
public TableUpdate<Qos> getQosUpdate() {
return getUpdate(Qos.NAME);
}
public void setQosUpdate(TableUpdate<Qos> qosUpdate) {
put(Qos.NAME, qosUpdate);
}
@JsonProperty("Queue")
public TableUpdate<Queue> getQueueUpdate() {
return getUpdate(Queue.NAME);
}
public void setQueueUpdate(TableUpdate<Queue> queueUpdate) {
put(Queue.NAME, queueUpdate);
}
@JsonProperty("sFlow")
public TableUpdate<SFlow> getSFlowUpdate() {
return getUpdate(SFlow.NAME);
}
public void setSFlowUpdate(TableUpdate<SFlow> sFlowUpdate) {
put(SFlow.NAME, sFlowUpdate);
}
@JsonProperty("SSL")
public TableUpdate<SSL> getSSLUpdate() {
return getUpdate(SSL.NAME);
}
public void setSSLUpdate(TableUpdate<SSL> sslUpdate) {
put(SSL.NAME, sslUpdate);
}
@JsonProperty("Flow_Table")
public TableUpdate<Flow_Table> getFlow_TableUpdate() {
return getUpdate(Flow_Table.NAME);
}
public void setFlow_TableUpdate(TableUpdate<Flow_Table> Flow_TableUpdate) {
put(Flow_Table.NAME, Flow_TableUpdate);
}
@JsonProperty("Flow_Sample_Collector_Set")
public TableUpdate<Flow_Sample_Collector_Set> getFlow_Sample_Collector_SetUpdate() {
return getUpdate(Flow_Sample_Collector_Set.NAME);
}
public void setFlow_Sample_Collector_SetUpdate(TableUpdate<Flow_Sample_Collector_Set> Flow_Sample_Collector_SetUpdate) {
put(Flow_Sample_Collector_Set.NAME, Flow_Sample_Collector_SetUpdate);
}
@JsonProperty("IPFIX")
public TableUpdate<IPFIX> getIPFIXUpdate() {
return getUpdate(IPFIX.NAME);
}
public void setIPFIXUpdate(TableUpdate<IPFIX> IPFIXUpdate) {
put(IPFIX.NAME, IPFIXUpdate);
}
}