56e616e9b36ef28550bf9fee1e5b90864706dd5d
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf.ifpac.equipment;
19
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.Equipment;
24 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.equipment.g.ContainedHolder;
25 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.equipment.g.ManufacturedThing;
26 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.manufactured.thing.g.EquipmentInstance;
27 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.manufactured.thing.g.EquipmentType;
28 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.manufactured.thing.g.ManufacturerProperties;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.InventoryBuilder;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34 /**
35  * Extend the eqipment type of core model with additional parameters
36  */
37 public class ExtendedEquipment {
38
39     private static final Logger LOG = LoggerFactory.getLogger(ExtendedEquipment.class);
40
41     public static final String ESDATATYPENAME = "inventoryequipment";
42     private final String parentUuid;
43     private final int treeLevel;
44     private final Equipment equipment;
45     private final String nodeId;
46     private final String path;
47     /**
48      * Equipment with additional information beside NETCONF equipment
49      *
50      * @param parentUuid of parent equipment
51      * @param equipment NETCONF Equipment
52      * @param treeLevel level of tree starting with root at 0
53      */
54     public ExtendedEquipment(String nodeId, String parentUuid, Equipment equipment, String path, int treeLevel) {
55         super();
56         this.nodeId = nodeId;
57         this.parentUuid = parentUuid;
58         this.equipment = equipment;
59         this.path = path;
60         this.treeLevel = treeLevel;
61     }
62
63     public String getParentUuid() {
64         return parentUuid;
65     }
66
67     public Equipment getEquipment() {
68         return equipment;
69     }
70
71     public int getTreeLevel() {
72         return treeLevel;
73     }
74     public String getNodeId() {
75         return nodeId;
76     }
77
78     public Inventory getCreateInventoryInput() {
79
80         InventoryBuilder inventoryBuilder = new InventoryBuilder();
81
82         // General
83         inventoryBuilder.setNodeId(getNodeId());
84         inventoryBuilder.setParentUuid(getParentUuid());
85         inventoryBuilder.setTreeLevel(Long.valueOf(getTreeLevel()));
86
87         if (getEquipment() != null) {
88             inventoryBuilder.setUuid(getEquipment().getUuid().getValue());
89             // -- String list with ids of holders
90             List<String> containerHolderKeyList = new ArrayList<>();
91             List<ContainedHolder> containerHolderList = getEquipment().getContainedHolder();
92             if (containerHolderList != null) {
93                 for (ContainedHolder containerHolder : containerHolderList) {
94                     containerHolderKeyList.add(containerHolder.getUuid().getValue());
95                 }
96             }
97             inventoryBuilder.setContainedHolder(containerHolderKeyList);
98
99             // -- Manufacturer related things
100             ManufacturedThing mThing = getEquipment().getManufacturedThing();
101             if (mThing != null) {
102                 ManufacturerProperties mProperties = mThing.getManufacturerProperties();
103                 if (mProperties != null) {
104                     inventoryBuilder.setManufacturerName(mProperties.getManufacturerName());
105                     inventoryBuilder.setManufacturerIdentifier(mProperties.getManufacturerIdentifier());
106                 }
107                 EquipmentType mType = mThing.getEquipmentType();
108                 if (mType != null) {
109                     inventoryBuilder.setDescription(mType.getDescription());
110                     inventoryBuilder.setModelIdentifier(mType.getModelIdentifier());
111                     inventoryBuilder.setPartTypeId(mType.getPartTypeIdentifier());
112                     inventoryBuilder.setTypeName(mType.getTypeName());
113                     inventoryBuilder.setVersion(mType.getVersion());
114                 }
115                 EquipmentInstance mInstance = mThing.getEquipmentInstance();
116                 if (mInstance != null) {
117                     String manufacturedDateString = mInstance.getManufactureDate();
118                     if (manufacturedDateString != null && !manufacturedDateString.isEmpty()) {
119                         try {
120                             inventoryBuilder.setDate(manufacturedDateString);
121                         } catch (IllegalArgumentException e) {
122                             LOG.debug("Format problem", e);
123                         }
124                     }
125                     inventoryBuilder.setSerial(mInstance.getSerialNumber());
126                 }
127             }
128         }
129
130         return inventoryBuilder.build();
131     }
132
133     @Override
134     public String toString() {
135         return "ExtendedEquipment [parentUuid=" + parentUuid + ", treeLevel=" + treeLevel + ", equipment=" + equipment
136                 + ", nodeId=" + nodeId + ", path=" + path + "]";
137     }
138
139 }