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.meter
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.inventory.rev130819.NodeRef
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInputBuilder
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterInputBuilder
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterService
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInputBuilder
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.meter.update.OriginalMeterBuilder
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.meter.update.UpdatedMeterBuilder
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter
21 import org.opendaylight.yangtools.yang.binding.DataObject
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterRef
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri
26 class MeterTransaction extends AbstractTransaction {
29 val SalMeterService salMeterService;
31 new(DataModification<InstanceIdentifier<? extends DataObject>, DataObject> modification,SalMeterService salMeterService) {
33 _salMeterService = salMeterService;
36 override remove(InstanceIdentifier<?> instanceId, DataObject obj) {
37 if(obj instanceof Meter) {
38 val meter = (obj as Meter)
39 val nodeInstanceId = instanceId.firstIdentifierOf(Node);
40 val builder = new RemoveMeterInputBuilder(meter);
41 builder.setNode(new NodeRef(nodeInstanceId));
42 builder.setMeterRef(new MeterRef(instanceId));
43 builder.setTransactionUri(new Uri(modification.getIdentifier() as String));
44 _salMeterService.removeMeter(builder.build());
48 override update(InstanceIdentifier<?> instanceId, DataObject originalObj, DataObject updatedObj) {
49 if(originalObj instanceof Meter && updatedObj instanceof Meter) {
50 val originalMeter = (originalObj as Meter)
51 val updatedMeter = (updatedObj as Meter)
52 val nodeInstanceId = instanceId.firstIdentifierOf(Node);
53 val builder = new UpdateMeterInputBuilder();
54 builder.setNode(new NodeRef(nodeInstanceId));
55 builder.setMeterRef(new MeterRef(instanceId));
56 val ufb = new UpdatedMeterBuilder(updatedMeter);
57 builder.setUpdatedMeter((ufb.build()));
58 builder.setTransactionUri(new Uri(modification.getIdentifier() as String));
59 val ofb = new OriginalMeterBuilder(originalMeter);
60 builder.setOriginalMeter(ofb.build());
61 _salMeterService.updateMeter(builder.build());
66 override add(InstanceIdentifier<?> instanceId, DataObject obj) {
67 if(obj instanceof Meter) {
68 val meter = (obj as Meter)
69 val nodeInstanceId = instanceId.firstIdentifierOf(Node);
70 val builder = new AddMeterInputBuilder(meter);
71 builder.setNode(new NodeRef(nodeInstanceId));
72 builder.setMeterRef(new MeterRef(instanceId));
73 builder.setTransactionUri(new Uri(modification.getIdentifier() as String));
74 _salMeterService.addMeter(builder.build());
78 override validate() throws IllegalStateException {
79 MeterTransactionValidator.validate(this)