X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2FInventoryMapping.java;fp=opendaylight%2Fmd-sal%2Fcompatibility%2Fsal-compatibility%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcompatibility%2FInventoryMapping.java;h=2dce505d2860a06c42114cbec8c415fbc602da00;hp=0000000000000000000000000000000000000000;hb=c5cb36292e3e99f601d017bcbccc42709d9084d8;hpb=65309af0da8da39a3189dec7c62b16cf93ae2e78 diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/InventoryMapping.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/InventoryMapping.java new file mode 100644 index 0000000000..2dce505d28 --- /dev/null +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/InventoryMapping.java @@ -0,0 +1,105 @@ +/** + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.sal.compatibility; + +import org.eclipse.xtend2.lib.StringConcatenation; +import org.eclipse.xtext.xbase.lib.Conversions; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import org.opendaylight.controller.sal.core.Node; +import org.opendaylight.controller.sal.core.NodeConnector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; + +import java.util.List; + +@SuppressWarnings("all") +public class InventoryMapping { + public static NodeConnector toAdNodeConnector(final InstanceIdentifier identifier) { + final List path = identifier.getPath(); + final PathArgument lastPathArgument = IterableExtensions.last(path); + final NodeConnectorKey tpKey = ((IdentifiableItem) lastPathArgument).getKey(); + return InventoryMapping.nodeConnectorFromId(tpKey.getId().getValue()); + } + + public static Node toAdNode(final InstanceIdentifier identifier) { + final List path = identifier.getPath(); + final PathArgument lastPathArgument = IterableExtensions.last(path); + final NodeKey tpKey = ((IdentifiableItem) lastPathArgument).getKey(); + return InventoryMapping.nodeFromNodeId(tpKey.getId().getValue()); + } + + public static NodeRef toNodeRef(final Node node) { + final NodeId nodeId = new NodeId(InventoryMapping.toNodeId(node)); + final NodeKey nodeKey = new NodeKey(nodeId); + final InstanceIdentifierBuilder builder = InstanceIdentifier.builder(); + final InstanceIdentifierBuilder nodes = builder.node(Nodes.class); + final InstanceIdentifierBuilder child = + nodes.child(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node.class, nodeKey); + final InstanceIdentifier path = child.toInstance(); + return new NodeRef(path); + } + + public static NodeKey toNodeKey(final Node node) { + final NodeId nodeId = new NodeId(InventoryMapping.toNodeId(node)); + return new NodeKey(nodeId); + } + + public static NodeConnectorKey toNodeConnectorKey(final NodeConnector nc) { + final NodeConnectorId nodeConnectorId = new NodeConnectorId(InventoryMapping.toNodeConnectorId(nc)); + return new NodeConnectorKey(nodeConnectorId); + } + + public static String toNodeId(final Node node) { + final StringConcatenation builder = new StringConcatenation(); + builder.append("ad-sal:"); + builder.append(node.getType(), ""); + builder.append("::"); + builder.append(node.getNodeIDString(), ""); + return builder.toString(); + } + + public static String toNodeConnectorId(final NodeConnector nc) { + final StringConcatenation builder = new StringConcatenation(); + builder.append(InventoryMapping.toNodeId(nc.getNode()), ""); + builder.append("::"); + builder.append(nc.getNodeConnectorIDString(), ""); + return builder.toString(); + } + + public static Node nodeFromNodeId(final String nodeId) { + final String[] split = nodeId.split("::"); + return InventoryMapping.nodeFromString(split); + } + + public static NodeConnector nodeConnectorFromId(final String invId) { + final String[] split = invId.split("::"); + return InventoryMapping.nodeConnectorFromString(split); + } + + private static NodeConnector nodeConnectorFromString(final String[] string) { + final List subList = ((List)Conversions.doWrapArray(string)).subList(0, 1); + final Node node = InventoryMapping.nodeFromString(((String[])Conversions.unwrapArray(subList, String.class))); + final String index3 = string[2]; + return NodeConnector.fromStringNoNode(index3, node); + } + + private static Node nodeFromString(final String[] strings) { + String index0 = strings[0]; + final String type = index0.substring(6); + String id = strings[1]; + return Node.fromString(type, id); + } +}