2 * Copyright 2017 ZTE Corporation.
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
14 package org.onap.holmes.common.aai;
16 import java.util.List;
17 import java.util.Optional;
18 import lombok.extern.slf4j.Slf4j;
19 import org.onap.holmes.common.aai.entity.RelationshipList.Relationship;
20 import org.onap.holmes.common.aai.entity.VmEntity;
21 import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;
22 import org.onap.holmes.common.exception.CorrelationException;
25 public class CorrelationUtil {
27 private static AaiQuery aaiQuery;
29 private static class LazyHolder {
30 private static final CorrelationUtil INSTANCE = new CorrelationUtil();
32 private CorrelationUtil (){}
34 public static final CorrelationUtil getInstance() {
35 if (aaiQuery == null) {
36 aaiQuery = ServiceLocatorHolder.getLocator().getService(AaiQuery.class);
38 return LazyHolder.INSTANCE;
41 public boolean isTopologicallyRelated(String sourceId, String rootSourceId, String rootSourceName) {
42 return Optional.ofNullable(getVmEntity(rootSourceId, rootSourceName)).map(vmEntity ->
43 getIsRelated(sourceId, vmEntity)).orElse(false);
46 private boolean getIsRelated(String sourceId, VmEntity vmEntity) {
47 List<Relationship> relationships = vmEntity.getRelationshipList().getRelationships();
48 for (Relationship relationship : relationships) {
49 boolean isRelated = relationship.getRelationshipDataList().stream().anyMatch(
50 relationshipData -> relationshipData.getRelationshipValue().equals(sourceId));
58 private VmEntity getVmEntity(String rootSourceId, String rootSourceName) {
59 VmEntity vmEntity = null;
61 vmEntity = aaiQuery.getAaiVmData(rootSourceId, rootSourceName);
62 } catch (CorrelationException e) {
63 log.error("Failed to get the VM data.", e);