blob: e8dcec7f706f81d06bdb3d20560647ad8bd8d9cd [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 }
Yuta HIGUCHId423ac12014-08-29 22:09:23 -070052
53 /**
54 * Concatenates specified TopologyBatchOperation.
55 *
56 * @param ops TopologyBatchOperation to concatenate.
57 * @return this
58 */
59 public TopologyBatchOperation concat(final TopologyBatchOperation ops) {
60 for (BatchOperationEntry<Operator, TopologyEvent> e : ops.getOperations()) {
61 this.addOperation(e);
62 }
63 return this;
64 }
Pavlin Radoslavovdd08e8c2014-08-14 11:02:57 -070065}