2 * Copyright 2017-2020 ZTE Corporation.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package org.onap.holmes.common.aai;
18 import com.google.gson.JsonArray;
19 import com.google.gson.JsonObject;
20 import com.google.gson.JsonParser;
21 import org.jvnet.hk2.annotations.Service;
22 import org.onap.holmes.common.aai.entity.RelationshipList;
23 import org.onap.holmes.common.aai.entity.RelationshipList.RelatedToProperty;
24 import org.onap.holmes.common.aai.entity.RelationshipList.Relationship;
25 import org.onap.holmes.common.aai.entity.RelationshipList.RelationshipData;
26 import org.onap.holmes.common.aai.entity.VmEntity;
27 import org.onap.holmes.common.aai.entity.VmResourceLink;
28 import org.onap.holmes.common.aai.entity.VnfEntity;
30 import java.util.ArrayList;
31 import java.util.Collections;
32 import java.util.List;
35 public class AaiResponseUtil {
37 public static final String RELATIONSHIP_LIST = "relationship-list";
39 public List<VmResourceLink> convertJsonToVmResourceLink(String responseJson)
41 List<VmResourceLink> vmResourceLinkList = new ArrayList<>();
42 String resultDataKey = "result-data";
43 JsonObject jsonNode = JsonParser.parseString(responseJson).getAsJsonObject();
44 if (jsonNode != null && jsonNode.get(resultDataKey) != null) {
45 JsonArray resultData = jsonNode.getAsJsonArray(resultDataKey);
46 vmResourceLinkList = convertResultDataList(resultData);
48 return vmResourceLinkList;
51 public VmEntity convertJsonToVmEntity(String responseJson) {
52 JsonObject jsonObject = JsonParser.parseString(responseJson).getAsJsonObject();
53 if (jsonObject == null ||jsonObject.size() == 0) {
56 VmEntity vmEntity = new VmEntity();
57 vmEntity.setInMaint(getBooleanElementByNode(jsonObject, "in-maint"));
58 vmEntity.setClosedLoopDisable(
59 getBooleanElementByNode(jsonObject, "is-closed-loop-disabled"));
60 vmEntity.setProvStatus(getTextElementByNode(jsonObject, "prov-status"));
61 vmEntity.setResourceVersion(getTextElementByNode(jsonObject, "resource-version"));
62 vmEntity.setVserverId(getTextElementByNode(jsonObject, "vserver-id"));
63 vmEntity.setVserverName(getTextElementByNode(jsonObject, "vserver-name"));
64 vmEntity.setVserverName2(getTextElementByNode(jsonObject, "vserver-name2"));
65 vmEntity.setVserverSelflink(getTextElementByNode(jsonObject, "vserver-selflink"));
67 setRelationShips(jsonObject, vmEntity.getRelationshipList());
68 if (vmEntity.getRelationshipList().getRelationships() == null) {
69 vmEntity.getRelationshipList().setRelationships(Collections.emptyList());
74 public VnfEntity convertJsonToVnfEntity(String responseJson) {
75 JsonObject jsonObject = JsonParser.parseString(responseJson).getAsJsonObject();
77 if (jsonObject.size() == 0) {
81 VnfEntity vnfEntity = new VnfEntity();
82 vnfEntity.setInMaint(getBooleanElementByNode(jsonObject, "in-maint"));
83 vnfEntity.setClosedLoopDisabled(
84 getBooleanElementByNode(jsonObject, "is-closed-loop-disabled"));
85 vnfEntity.setOrchestrationStatus(getTextElementByNode(jsonObject, "orchestration-status"));
86 vnfEntity.setProvStatus(getTextElementByNode(jsonObject, "prov-status"));
87 vnfEntity.setResourceVersion(getTextElementByNode(jsonObject, "resource-version"));
88 vnfEntity.setServiceId(getTextElementByNode(jsonObject, "service-id"));
89 vnfEntity.setVnfId(getTextElementByNode(jsonObject, "vnf-id"));
90 vnfEntity.setVnfName(getTextElementByNode(jsonObject, "vnf-name"));
91 vnfEntity.setVnfType(getTextElementByNode(jsonObject, "vnf-type"));
93 setRelationShips(jsonObject, vnfEntity.getRelationshipList());
94 if (vnfEntity.getRelationshipList().getRelationships() == null) {
95 vnfEntity.getRelationshipList().setRelationships(Collections.emptyList());
100 private void setRelationShips(JsonObject jsonObject, RelationshipList relationshipList) {
101 if (jsonObject.get(RELATIONSHIP_LIST) != null) {
102 JsonObject relationshipListNode = jsonObject.getAsJsonObject(RELATIONSHIP_LIST);
103 String relationship = "relationship";
104 if (relationshipListNode.get(relationship) != null) {
105 JsonArray relationshipNode = relationshipListNode.getAsJsonArray(relationship);
107 .setRelationships(convertRelationships(relationshipNode));
112 private List<VmResourceLink> convertResultDataList(JsonArray resultData) {
113 List<VmResourceLink> vmResourceLinkList = new ArrayList<>();
114 String resourceLink = "resource-link";
115 String resourceType = "resource-type";
116 for (int i = 0; i < resultData.size(); i++) {
117 JsonObject jsonObject = resultData.get(i).getAsJsonObject();
118 if (jsonObject.get(resourceLink) != null
119 && jsonObject.get(resourceType) != null) {
120 VmResourceLink vmResourceLink = new VmResourceLink();
121 vmResourceLink.setResourceLink(getTextElementByNode(jsonObject, resourceLink));
122 vmResourceLink.setResourceType(getTextElementByNode(jsonObject, resourceType));
123 vmResourceLinkList.add(vmResourceLink);
126 return vmResourceLinkList;
129 private List<Relationship> convertRelationships(JsonArray relationshipNode) {
130 List<Relationship> relationshipList = new ArrayList<>();
131 for (int i = 0; i < relationshipNode.size(); i++) {
132 Relationship relationship = new Relationship();
133 JsonObject jsonObject = relationshipNode.get(i).getAsJsonObject();
135 relationship.setRelatedLink(getTextElementByNode(jsonObject, "related-link"));
136 relationship.setRelatedTo(getTextElementByNode(jsonObject, "related-to"));
137 if (jsonObject.get("related-to-property") != null) {
138 JsonArray relatedToPropertyNode = jsonObject.getAsJsonArray("related-to-property");
139 relationship.setRelatedToPropertyList(
140 convertRelatedToProperty(relatedToPropertyNode));
142 relationship.setRelatedToPropertyList(Collections.emptyList());
144 if (jsonObject.get("relationship-data") != null) {
145 JsonArray relationshipDataNode = jsonObject.getAsJsonArray("relationship-data");
147 .setRelationshipDataList(convertRelationshipDate(relationshipDataNode));
149 relationship.setRelationshipDataList(Collections.emptyList());
151 relationshipList.add(relationship);
154 return relationshipList;
157 private List<RelationshipData> convertRelationshipDate(JsonArray relationshipDataNode) {
158 List<RelationshipData> relationshipDataList = new ArrayList<>();
159 for (int i = 0; i < relationshipDataNode.size(); i++) {
160 JsonObject jsonObject = relationshipDataNode.get(i).getAsJsonObject();
161 RelationshipData relationshipData = new RelationshipData();
162 relationshipData.setRelationshipKey(
163 getTextElementByNode(jsonObject, "relationship-key"));
164 relationshipData.setRelationshipValue(
165 getTextElementByNode(jsonObject, "relationship-value"));
166 relationshipDataList.add(relationshipData);
167 relationshipDataList.add(relationshipData);
170 return relationshipDataList;
173 private List<RelatedToProperty> convertRelatedToProperty(JsonArray relatedToPropertyNode) {
174 List<RelatedToProperty> relatedToPropertyList = new ArrayList<>();
175 for (int i = 0; i < relatedToPropertyNode.size(); i++) {
176 JsonObject jsonObject = relatedToPropertyNode.get(i).getAsJsonObject();
177 RelatedToProperty relatedToProperty = new RelatedToProperty();
179 .setPropertyKey(getTextElementByNode(jsonObject, "property-key"));
180 relatedToProperty.setPropertyValue(
181 getTextElementByNode(jsonObject, "property-value"));
182 relatedToPropertyList.add(relatedToProperty);
184 return relatedToPropertyList;
187 private String getTextElementByNode(JsonObject jsonNode, String name) {
188 if (jsonNode.get(name) != null) {
189 return jsonNode.get(name).getAsString();
194 private Boolean getBooleanElementByNode(JsonObject jsonNode, String name) {
195 if (jsonNode.get(name) != null) {
196 return jsonNode.get(name).getAsBoolean();