2a931378f03056b5e1b28626e38c87468740bb73
[ccsdk/features.git] / sdnr / wt / devicemanager-onap / onf14 / provider / src / main / java / org / onap / ccsdk / features / sdnr / wt / devicemanager / onf14 / dom / impl / dataprovider / Onf14DomToInternalDataModel.java
1 package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.dataprovider;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.HashSet;
6 import java.util.List;
7 import java.util.Objects;
8 import java.util.Set;
9
10 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DMDOMUtility;
11 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Inventory;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.InventoryBuilder;
14 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
15 import org.opendaylight.yangtools.yang.common.Uint32;
16 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
17 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
18 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
19 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
22
23 public class Onf14DomToInternalDataModel {
24     private static final Logger LOG = LoggerFactory.getLogger(Onf14DomToInternalDataModel.class);
25
26     public Inventory getInternalEquipment(NodeId nodeId, MapEntryNode currentEq, MapEntryNode parentEq,
27             long treeLevel) {
28
29         Objects.requireNonNull(nodeId);
30         Objects.requireNonNull(currentEq);
31
32         InventoryBuilder inventoryBuilder = new InventoryBuilder();
33         String parentUuid = parentEq != null ? Onf14DMDOMUtility.getUuidFromEquipment(parentEq) : "None";
34
35         // General
36         inventoryBuilder.setNodeId(nodeId.getValue());
37         inventoryBuilder.setTreeLevel(Uint32.valueOf(treeLevel));
38         inventoryBuilder.setUuid(Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
39         inventoryBuilder.setParentUuid(parentUuid);
40
41         Set<String> containedHolderKeyList = new HashSet<>();
42         MapNode containedHolderMap = (MapNode) currentEq
43                 .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_CONTAINED_HOLDER));
44         if (containedHolderMap != null) {
45             Collection<MapEntryNode> containedHolderCollection = containedHolderMap.body();
46             for (MapEntryNode holder : containedHolderCollection) {
47                 String occupyingFru = Onf14DMDOMUtility.getLeafValue(holder,
48                         Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_OCCUPYING_FRU);
49
50                 if (occupyingFru != null) {
51                     containedHolderKeyList.add(occupyingFru);
52                 }
53             }
54         }
55         inventoryBuilder.setContainedHolder(containedHolderKeyList);
56
57         // actual-equipment
58         ContainerNode actualEquipment = (ContainerNode) currentEq
59                 .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQUIPMENT));
60         if (actualEquipment != null) {
61             ContainerNode manThing = (ContainerNode) actualEquipment
62                     .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_MANUFACTURED_THING));
63             if (manThing != null) {
64                 // Manufacturer properties
65                 ContainerNode props = (ContainerNode) manThing
66                         .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_MANUFACTURER_PROPS));
67                 if (props != null) {
68                     inventoryBuilder.setManufacturerName(Onf14DMDOMUtility.getLeafValue(props,
69                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_MANUFACTURER_NAME));
70
71                     inventoryBuilder.setManufacturerIdentifier(Onf14DMDOMUtility.getLeafValue(props,
72                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_MANUFACTURER_ID));
73
74                 } else {
75                     LOG.debug("manufacturer-properties is not present in Equipment with uuid={}",
76                             Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
77                 }
78
79                 // Equipment instance
80                 ContainerNode equipmentInstance = (ContainerNode) manThing.childByArg(
81                         new NodeIdentifier(Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_INSTANCE));
82                 if (equipmentInstance != null) {
83                     inventoryBuilder.setSerial(Onf14DMDOMUtility.getLeafValue(equipmentInstance,
84                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_INSTANCE_SERIAL_NUM));
85
86                     inventoryBuilder.setDate(Onf14DMDOMUtility.getLeafValue(equipmentInstance,
87                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_INSTANCE_MANUFACTURED_DATE));
88
89                 } else {
90                     LOG.debug("equipment-instance is not present in Equipment with uuid={}",
91                             Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
92                 }
93
94                 // Equipment type
95                 ContainerNode equipmentType = (ContainerNode) manThing.childByArg(
96                         new NodeIdentifier(Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_TYPE));
97                 if (equipmentType != null) {
98                     inventoryBuilder.setVersion(Onf14DMDOMUtility.getLeafValue(equipmentType,
99                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_TYPE_VERSION));
100
101                     inventoryBuilder.setDescription(Onf14DMDOMUtility.getLeafValue(equipmentType,
102                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_TYPE_DESCRIPTION));
103
104                     inventoryBuilder.setPartTypeId(Onf14DMDOMUtility.getLeafValue(equipmentType,
105                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_TYPE_PART_TYPE_ID));
106
107                     inventoryBuilder.setModelIdentifier(Onf14DMDOMUtility.getLeafValue(equipmentType,
108
109                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_TYPE_MODEL_ID));
110
111                     inventoryBuilder.setTypeName(Onf14DMDOMUtility.getLeafValue(equipmentType,
112                             Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_ACTUAL_EQPT_EQPT_TYPE_TYPE_NAME));
113
114                 } else {
115                     LOG.debug("equipment-type is not present in Equipment with uuid={}",
116                             Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
117                 }
118             } else {
119                 LOG.debug("manufactured-thing is not present in Equipment with uuid={}",
120                         Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
121             }
122         } else {
123             LOG.debug("actual-equipment is not present in Equipment with uuid={}",
124                     Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
125         }
126
127         return inventoryBuilder.build();
128     }
129 }