2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.frm.group
10 import org.opendaylight.controller.frm.AbstractTransaction
11 import org.opendaylight.controller.md.sal.common.api.data.DataModification
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupInputBuilder
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupService
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupInputBuilder
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.OriginalGroupBuilder
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.UpdatedGroupBuilder
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupRef
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node
22 import org.opendaylight.yangtools.yang.binding.DataObject
23 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri
26 class GroupTransaction extends AbstractTransaction {
29 val SalGroupService groupService;
31 new(DataModification<InstanceIdentifier<? extends DataObject>, DataObject> modification,SalGroupService groupService) {
33 _groupService = groupService;
36 override remove(InstanceIdentifier<?> instanceId, DataObject obj) {
37 if(obj instanceof Group) {
38 val group = (obj as Group)
39 val nodeInstanceId = instanceId.firstIdentifierOf(Node);
40 val builder = new RemoveGroupInputBuilder(group);
41 builder.setNode(new NodeRef(nodeInstanceId));
42 builder.setTransactionUri(new Uri(modification.getIdentifier() as String));
43 builder.setGroupRef(new GroupRef(instanceId));
44 _groupService.removeGroup(builder.build());
48 override update(InstanceIdentifier<?> instanceId, DataObject originalObj, DataObject updatedObj) {
49 if(originalObj instanceof Group && updatedObj instanceof Group) {
50 val originalGroup = (originalObj as Group)
51 val updatedGroup = (updatedObj as Group)
52 val nodeInstanceId = instanceId.firstIdentifierOf(Node);
53 val builder = new UpdateGroupInputBuilder();
54 builder.setNode(new NodeRef(nodeInstanceId));
55 builder.setGroupRef(new GroupRef(instanceId));
56 val ufb = new UpdatedGroupBuilder(updatedGroup);
57 builder.setUpdatedGroup((ufb.build()));
58 builder.setTransactionUri(new Uri(modification.getIdentifier() as String));
59 val ofb = new OriginalGroupBuilder(originalGroup);
60 builder.setOriginalGroup(ofb.build());
61 _groupService.updateGroup(builder.build());
66 override add(InstanceIdentifier<?> instanceId, DataObject obj) {
67 if(obj instanceof Group) {
68 val group = (obj as Group)
69 val nodeInstanceId = instanceId.firstIdentifierOf(Node);
70 val builder = new AddGroupInputBuilder(group);
71 builder.setNode(new NodeRef(nodeInstanceId));
72 builder.setGroupRef(new GroupRef(instanceId));
73 builder.setTransactionUri(new Uri(modification.getIdentifier() as String));
74 _groupService.addGroup(builder.build());
78 override validate() throws IllegalStateException {
79 GroupTransactionValidator.validate(this)