blob: e8dcec7f706f81d06bdb3d20560647ad8bd8d9cd [file] [log] [blame]
package net.onrc.onos.core.topology;
import net.onrc.onos.api.batchoperation.BatchOperation;
import net.onrc.onos.api.batchoperation.BatchOperationEntry;
/**
* A list of topology operations.
*/
public class TopologyBatchOperation extends
BatchOperation<BatchOperationEntry<TopologyBatchOperation.Operator, TopologyEvent>> {
/**
* The topology operations' operators.
*/
public enum Operator {
/**
* Adds a new topology event.
*/
ADD,
/**
* Removes an existing topology event.
*/
REMOVE,
}
/**
* Appends an ADD-TopologyEvent operation.
*
* @param topologyEvent the Topology Event to be appended
* @return the TopologyBatchOperation object
*/
public TopologyBatchOperation appendAddOperation(
TopologyEvent topologyEvent) {
return (TopologyBatchOperation) addOperation(
new BatchOperationEntry<Operator, TopologyEvent>(
Operator.ADD, topologyEvent));
}
/**
* Appends a REMOVE-TopologyEvent operation.
*
* @param topologyEvent the Topology Event to be appended
* @return the TopologyBatchOperation object
*/
public TopologyBatchOperation appendRemoveOperation(
TopologyEvent topologyEvent) {
return (TopologyBatchOperation) addOperation(
new BatchOperationEntry<Operator, TopologyEvent>(
Operator.REMOVE, topologyEvent));
}
/**
* Concatenates specified TopologyBatchOperation.
*
* @param ops TopologyBatchOperation to concatenate.
* @return this
*/
public TopologyBatchOperation concat(final TopologyBatchOperation ops) {
for (BatchOperationEntry<Operator, TopologyEvent> e : ops.getOperations()) {
this.addOperation(e);
}
return this;
}
}