6103be9261ffbf68f60f88394fbad85626201bda
[bgpcep.git] / bgp / bmp-impl / src / main / java / org / opendaylight / protocol / bmp / impl / app / TablesUtil.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.protocol.bmp.impl.app;
9
10 import com.google.common.collect.ImmutableMap;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bmp.monitor.rev150512.BmpMonitor;
15 import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
18
19 public final class TablesUtil {
20
21     public static final QName BMP_TABLES_QNAME = QName.create(BmpMonitor.QNAME.getNamespace(), BmpMonitor.QNAME.getRevision(), "tables").intern();
22     public static final QName BMP_ATTRIBUTES_QNAME = QName.create(BmpMonitor.QNAME.getNamespace(), BmpMonitor.QNAME.getRevision(), "attributes").intern();
23     public static final QName BMP_ROUTES_QNAME = QName.create(BmpMonitor.QNAME.getNamespace(), BmpMonitor.QNAME.getRevision(), "routes").intern();
24     public static final QName BMP_AFI_QNAME = QName.create(BMP_TABLES_QNAME, "afi").intern();
25     public static final QName BMP_SAFI_QNAME = QName.create(BMP_TABLES_QNAME, "safi").intern();
26
27     private TablesUtil() {
28         throw new UnsupportedOperationException("Utility class");
29     }
30
31     /**
32      * Creates Yang Instance Identifier path argument from supplied AFI and SAFI
33      *
34      * @param afi Class representing AFI
35      * @param safi Class representing SAFI
36      * @return NodeIdentifierWithPredicates for specified AFI, SAFI combination.
37      */
38     public static NodeIdentifierWithPredicates toYangTablesKey(final Class<? extends AddressFamily> afi,
39             final Class<? extends SubsequentAddressFamily> safi) {
40         final ImmutableMap<QName, Object> keyValues = ImmutableMap.<QName, Object>of(
41                         BMP_AFI_QNAME, BindingReflections.findQName(afi),
42                         BMP_SAFI_QNAME, BindingReflections.findQName(safi));
43         return new NodeIdentifierWithPredicates(BMP_TABLES_QNAME, keyValues);
44     }
45
46     /**
47      * Creates Yang Instance Identifier path argument from supplied QNAMES and AFI and SAFI
48      *
49      * @param nodeName QName reprenting node
50      * @param afi Class representing AFI
51      * @param safi Class representing SAFI
52      * @return NodeIdentifierWithPredicates for specified AFI, SAFI combination.
53      */
54     public static NodeIdentifierWithPredicates toYangTablesKey(final QName nodeName, final Class<? extends AddressFamily> afi,
55             final Class<? extends SubsequentAddressFamily> safi) {
56         final QName afiQname = QName.create(nodeName, "afi").intern();
57         final QName safiQname = QName.create(nodeName, "safi").intern();
58         final ImmutableMap<QName, Object> keyValues = ImmutableMap.<QName, Object>of(
59                         afiQname, BindingReflections.findQName(afi),
60                         safiQname, BindingReflections.findQName(safi));
61         return new NodeIdentifierWithPredicates(nodeName, keyValues);
62     }
63
64     /**
65      * Creates Yang Instance Identifier path argument from supplied {@link TablesKey}
66      *
67      * @param k Tables key representing table.
68      * @return NodeIdentifierWithPredicates of for specified AFI, SAFI combination.
69      */
70     public static NodeIdentifierWithPredicates toYangTablesKey(final TablesKey k) {
71         return toYangTablesKey(k.getAfi(), k.getSafi());
72     }
73 }