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.exception.CorrelationException;
24 public class CorrelationUtil {
26 private AaiQuery aaiQuery;
28 private static class LazyHolder {
29 private static final CorrelationUtil INSTANCE = new CorrelationUtil();
31 private CorrelationUtil (){}
33 public static final CorrelationUtil getInstance() {
34 return LazyHolder.INSTANCE;
37 public boolean isTopologicallyRelated(String eventId, String sourceId, String sourceName) {
39 return Optional.ofNullable(getVmEntity(sourceId, sourceName)).map(vmEntity ->
40 getIsRelated(eventId, vmEntity)).orElse(false);
43 private boolean getIsRelated(String eventId, VmEntity vmEntity) {
44 List<Relationship> relationships = vmEntity.getRelationshipList().getRelationships();
45 for (Relationship relationship : relationships) {
46 boolean isRelated = relationship.getRelationshipDataList().stream().anyMatch(
47 relationshipData -> relationshipData.getRelationshipValue().equals(eventId));
55 private VmEntity getVmEntity(String sourceId, String sourceName) {
56 VmEntity vmEntity = null;
58 vmEntity = aaiQuery.getAaiVmData(sourceId, sourceName);
59 } catch (CorrelationException e) {
60 log.error("Failed to get vm data", e.getMessage());