blob: f7d70491d121518c5e1399fd7c606ee4cdffcc5e [file] [log] [blame]
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -07001package net.onrc.onos.core.topology;
2
3import net.onrc.onos.api.batchoperation.BatchOperation;
4import net.onrc.onos.api.batchoperation.BatchOperationEntry;
5
6/**
7 * A list of topology operations.
8 */
9public class TopologyBatchOperation extends
Pavlin Radoslavov24409672014-08-20 16:45:11 -070010 BatchOperation<BatchOperationEntry<TopologyBatchOperation.Operator, TopologyEvent>> {
Yuta HIGUCHI7c28ebb2014-08-19 00:29:30 -070011
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070012 /**
13 * The topology operations' operators.
14 */
15 public enum Operator {
16 /**
17 * Adds a new topology event.
18 */
19 ADD,
20
21 /**
22 * Removes an existing topology event.
23 */
24 REMOVE,
25 }
26
27 /**
Pavlin Radoslavov24409672014-08-20 16:45:11 -070028 * Appends an ADD-TopologyEvent operation.
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070029 *
Pavlin Radoslavov24409672014-08-20 16:45:11 -070030 * @param topologyEvent the Topology Event to be appended
Yuta HIGUCHI7c28ebb2014-08-19 00:29:30 -070031 * @return the TopologyBatchOperation object
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070032 */
Pavlin Radoslavov24409672014-08-20 16:45:11 -070033 public TopologyBatchOperation appendAddOperation(
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070034 TopologyEvent topologyEvent) {
Yuta HIGUCHI7c28ebb2014-08-19 00:29:30 -070035 return (TopologyBatchOperation) addOperation(
Pavlin Radoslavov24409672014-08-20 16:45:11 -070036 new BatchOperationEntry<Operator, TopologyEvent>(
Yuta HIGUCHI7c28ebb2014-08-19 00:29:30 -070037 Operator.ADD, topologyEvent));
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070038 }
39
40 /**
Pavlin Radoslavov24409672014-08-20 16:45:11 -070041 * Appends a REMOVE-TopologyEvent operation.
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070042 *
Pavlin Radoslavov24409672014-08-20 16:45:11 -070043 * @param topologyEvent the Topology Event to be appended
Yuta HIGUCHI7c28ebb2014-08-19 00:29:30 -070044 * @return the TopologyBatchOperation object
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070045 */
Pavlin Radoslavov24409672014-08-20 16:45:11 -070046 public TopologyBatchOperation appendRemoveOperation(
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070047 TopologyEvent topologyEvent) {
Yuta HIGUCHI7c28ebb2014-08-19 00:29:30 -070048 return (TopologyBatchOperation) addOperation(
Pavlin Radoslavov24409672014-08-20 16:45:11 -070049 new BatchOperationEntry<Operator, TopologyEvent>(
Yuta HIGUCHI7c28ebb2014-08-19 00:29:30 -070050 Operator.REMOVE, topologyEvent));
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070051 }
52}