37bfc1d852d32d7d1c2d29a576f2ec6a99efac04
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / aai / AaiResponseUtil.java
1 /**
2  * Copyright 2017 ZTE Corporation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.holmes.common.aai;
17
18 import com.fasterxml.jackson.databind.JsonNode;
19 import com.fasterxml.jackson.databind.ObjectMapper;
20 import java.io.IOException;
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24 import org.jvnet.hk2.annotations.Service;
25 import org.onap.holmes.common.aai.entity.RelationshipList.RelatedToProperty;
26 import org.onap.holmes.common.aai.entity.RelationshipList.Relationship;
27 import org.onap.holmes.common.aai.entity.RelationshipList.RelationshipData;
28 import org.onap.holmes.common.aai.entity.VmEntity;
29 import org.onap.holmes.common.aai.entity.VmResourceLink;
30 import org.onap.holmes.common.aai.entity.VnfEntity;
31
32 @Service
33 public class AaiResponseUtil {
34
35     public static final String RELATIONSHIP_LIST = "relationship-list";
36     public List<VmResourceLink> convertJsonToVmResourceLink(String responseJson) throws IOException {
37         ObjectMapper mapper = new ObjectMapper();
38         JsonNode jsonNode = mapper.readTree(responseJson);
39
40         List<VmResourceLink> vmResourceLinkList = new ArrayList<>();
41         if (jsonNode.has("result-data")) {
42             JsonNode resultData = jsonNode.get("result-data");
43             vmResourceLinkList = convertResultDataList(resultData);
44         }
45         return vmResourceLinkList;
46     }
47
48     public VmEntity convertJsonToVmEntity(String responseJson) throws IOException {
49         ObjectMapper mapper = new ObjectMapper();
50         JsonNode jsonNode = mapper.readTree(responseJson);
51         if (!jsonNode.iterator().hasNext()) {
52             return null;
53         }
54         VmEntity vmEntity = new VmEntity();
55         vmEntity.setInMaint(getBooleanElementByNode(jsonNode, "in-maint"));
56         vmEntity.setClosedLoopDisable(getBooleanElementByNode(jsonNode,"is-closed-loop-disabled"));
57         vmEntity.setProvStatus(getTextElementByNode(jsonNode, "prov-status"));
58         vmEntity.setResourceVersion(getTextElementByNode(jsonNode,"resource-version"));
59         vmEntity.setVserverId(getTextElementByNode(jsonNode,"vserver-id"));
60         vmEntity.setVserverName(getTextElementByNode(jsonNode,"vserver-name"));
61         vmEntity.setVserverName2(getTextElementByNode(jsonNode,"vserver-name2"));
62         vmEntity.setVserverSelflink(getTextElementByNode(jsonNode,"vserver-selflink"));
63
64         if (jsonNode.has(RELATIONSHIP_LIST)) {
65             JsonNode relationshipListNode = jsonNode.get(RELATIONSHIP_LIST);
66             if (relationshipListNode.has("relationship")) {
67                 JsonNode relationshipNode = relationshipListNode.get("relationship");
68                 vmEntity.getRelationshipList().setRelationships(convertRelationships(relationshipNode));
69             }
70         }
71         if (vmEntity.getRelationshipList().getRelationships() == null) {
72             vmEntity.getRelationshipList().setRelationships(Collections.emptyList());
73         }
74         return vmEntity;
75     }
76
77     public VnfEntity convertJsonToVnfEntity(String responseJson) throws IOException {
78         ObjectMapper mapper = new ObjectMapper();
79         JsonNode jsonNode = mapper.readTree(responseJson);
80
81         if(!jsonNode.elements().hasNext())
82             return null;
83
84         VnfEntity vnfEntity = new VnfEntity();
85         vnfEntity.setInMaint(getBooleanElementByNode(jsonNode, "in-maint"));
86         vnfEntity.setClosedLoopDisabled(getBooleanElementByNode(jsonNode, "is-closed-loop-disabled"));
87         vnfEntity.setOrchestrationStatus(getTextElementByNode(jsonNode, "orchestration-status"));
88         vnfEntity.setProvStatus(getTextElementByNode(jsonNode, "prov-status"));
89         vnfEntity.setResourceVersion(getTextElementByNode(jsonNode,"resource-version"));
90         vnfEntity.setServiceId(getTextElementByNode(jsonNode,"service-id"));
91         vnfEntity.setVnfId(getTextElementByNode(jsonNode,"vnf-id"));
92         vnfEntity.setVnfName(getTextElementByNode(jsonNode,"vnf-name"));
93         vnfEntity.setVnfType(getTextElementByNode(jsonNode,"vnf-type"));
94
95         if (jsonNode.has(RELATIONSHIP_LIST)) {
96             JsonNode relationshipListNode = jsonNode.get(RELATIONSHIP_LIST);
97             if (relationshipListNode.has("relationship")) {
98                 JsonNode relationshipNode = relationshipListNode.get("relationship");
99                 vnfEntity.getRelationshipList().setRelationships(convertRelationships(relationshipNode));
100             }
101         }
102         if (vnfEntity.getRelationshipList().getRelationships() == null) {
103             vnfEntity.getRelationshipList().setRelationships(Collections.emptyList());
104         }
105         return vnfEntity;
106     }
107
108     private List<VmResourceLink> convertResultDataList(JsonNode resultData) {
109         List<VmResourceLink> vmResourceLinkList = new ArrayList<>();
110         resultData.forEach(node ->{
111             if (node.has("resource-link") && node.has("resource-type")) {
112                 VmResourceLink vmResourceLink = new VmResourceLink();
113                 vmResourceLink.setResourceLink(getTextElementByNode(node, "resource-link"));
114                 vmResourceLink.setResourceType(getTextElementByNode(node, "resource-type"));
115                 vmResourceLinkList.add(vmResourceLink);
116             }
117         });
118         return vmResourceLinkList;
119     }
120
121     private List<Relationship> convertRelationships(JsonNode relationshipNode) {
122         List<Relationship> relationshipList = new ArrayList<>();
123         relationshipNode.forEach(node ->{
124             Relationship relationship = new Relationship();
125             relationship.setRelatedLink(getTextElementByNode(node, "related-link"));
126             relationship.setRelatedTo(getTextElementByNode(node, "related-to"));
127             if (node.has("related-to-property")) {
128                 JsonNode relatedToPropertyNode = node.get("related-to-property");
129                 relationship.setRelatedToPropertyList(
130                         convertRelatedToProperty(relatedToPropertyNode));
131             } else {
132                 relationship.setRelatedToPropertyList(Collections.emptyList());
133             }
134             if (node.has("relationship-data")) {
135                 JsonNode relationshipDataNode = node.get("relationship-data");
136                 relationship
137                         .setRelationshipDataList(convertRelationshipDate(relationshipDataNode));
138             } else {
139                 relationship.setRelationshipDataList(Collections.emptyList());
140             }
141             relationshipList.add(relationship);
142         });
143         return relationshipList;
144     }
145
146     private List<RelationshipData> convertRelationshipDate(JsonNode relationshipDataNode) {
147         List<RelationshipData> relationshipDataList = new ArrayList<>();
148         relationshipDataNode.forEach(node ->{
149             RelationshipData relationshipData = new RelationshipData();
150             relationshipData.setRelationshipKey(
151                     getTextElementByNode(node,"relationship-key"));
152             relationshipData.setRelationshipValue(
153                     getTextElementByNode(node,"relationship-value"));
154             relationshipDataList.add(relationshipData);
155         });
156         return relationshipDataList;
157     }
158
159     private List<RelatedToProperty> convertRelatedToProperty(JsonNode relatedToPropertyNode) {
160         List<RelatedToProperty> relatedToPropertyList = new ArrayList<>();
161         relatedToPropertyNode.forEach(node ->{
162             RelatedToProperty relatedToProperty = new RelatedToProperty();
163             relatedToProperty
164                     .setPropertyKey(getTextElementByNode(node, "property-key"));
165             relatedToProperty.setPropertyValue(
166                     getTextElementByNode(node, "property-value"));
167             relatedToPropertyList.add(relatedToProperty);
168         });
169         return relatedToPropertyList;
170     }
171
172     private String getTextElementByNode(JsonNode jsonNode,String name){
173         if(jsonNode.has(name)){
174             return jsonNode.get(name).asText();
175         }
176         return null;
177     }
178
179     private Boolean getBooleanElementByNode(JsonNode jsonNode,String name){
180         if(jsonNode.has(name)){
181             return jsonNode.get(name).asBoolean();
182         }
183         return null;
184     }
185 }