Modernize codebase a bit
[bgpcep.git] / bmp / 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.mdsal.binding.spec.reflect.BindingReflections;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.AddressFamily;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.SubsequentAddressFamily;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bmp.monitor.rev180329.BmpMonitor;
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
22             = QName.create(BmpMonitor.QNAME.getModule(), "tables");
23     public static final QName BMP_ATTRIBUTES_QNAME =
24             QName.create(BmpMonitor.QNAME.getModule(), "attributes");
25     public static final QName BMP_ROUTES_QNAME = QName.create(BmpMonitor.QNAME.getModule(), "routes");
26     public static final QName BMP_AFI_QNAME = QName.create(BMP_TABLES_QNAME.getModule(), "afi");
27     public static final QName BMP_SAFI_QNAME = QName.create(BMP_TABLES_QNAME.getModule(), "safi");
28     private static final String AFI = "afi";
29     private static final String SAFI = "safi";
30
31     private TablesUtil() {
32         throw new UnsupportedOperationException("Utility class");
33     }
34
35     /**
36      * Creates Yang Instance Identifier path argument from supplied AFI and SAFI.
37      *
38      * @param afi Class representing AFI
39      * @param safi Class representing SAFI
40      * @return NodeIdentifierWithPredicates for specified AFI, SAFI combination.
41      */
42     public static NodeIdentifierWithPredicates toYangTablesKey(final Class<? extends AddressFamily> afi,
43             final Class<? extends SubsequentAddressFamily> safi) {
44         return NodeIdentifierWithPredicates.of(BMP_TABLES_QNAME, ImmutableMap.of(
45             BMP_AFI_QNAME, BindingReflections.findQName(afi),
46             BMP_SAFI_QNAME, BindingReflections.findQName(safi)));
47     }
48
49     /**
50      * Creates Yang Instance Identifier path argument from supplied QNAMES and AFI and SAFI.
51      *
52      * @param nodeName QName reprenting node
53      * @param afi Class representing AFI
54      * @param safi Class representing SAFI
55      * @return NodeIdentifierWithPredicates for specified AFI, SAFI combination.
56      */
57     public static NodeIdentifierWithPredicates toYangTablesKey(final QName nodeName,
58             final Class<? extends AddressFamily> afi,
59             final Class<? extends SubsequentAddressFamily> safi) {
60         final QName afiQname = QName.create(nodeName, AFI).intern();
61         final QName safiQname = QName.create(nodeName, SAFI).intern();
62         return NodeIdentifierWithPredicates.of(nodeName, ImmutableMap.of(
63             afiQname, BindingReflections.findQName(afi),
64             safiQname, BindingReflections.findQName(safi)));
65     }
66
67     /**
68      * Creates Yang Instance Identifier path argument from supplied {@link TablesKey}.
69      *
70      * @param tablesKey Tables key representing table.
71      * @return NodeIdentifierWithPredicates of for specified AFI, SAFI combination.
72      */
73     public static NodeIdentifierWithPredicates toYangTablesKey(final TablesKey tablesKey) {
74         return toYangTablesKey(tablesKey.getAfi(), tablesKey.getSafi());
75     }
76 }