1 package org.openecomp.sdc.be.components.merge.instance;
3 import static org.apache.commons.collections.MapUtils.isNotEmpty;
5 import java.util.ArrayList;
6 import java.util.Collection;
8 import java.util.stream.Collectors;
10 import org.openecomp.sdc.be.dao.api.ActionStatus;
11 import org.openecomp.sdc.be.impl.ComponentsUtils;
12 import org.openecomp.sdc.be.model.CapabilityDefinition;
13 import org.openecomp.sdc.be.model.Component;
14 import org.openecomp.sdc.be.model.ComponentInstance;
15 import org.openecomp.sdc.be.model.User;
16 import org.openecomp.sdc.exception.ResponseFormat;
18 import fj.data.Either;
20 @org.springframework.stereotype.Component
21 public class ComponentInstanceCapabiliteisPropertiesMerge implements ComponentInstanceMergeInterface {
23 private ComponentCapabilitiesPropertiesMergeBL capabilitiesPropertiesMergeBL;
24 private ComponentsUtils componentsUtils;
26 public ComponentInstanceCapabiliteisPropertiesMerge(ComponentCapabilitiesPropertiesMergeBL capabilitiesPropertiesMergeBL, ComponentsUtils componentsUtils) {
27 this.capabilitiesPropertiesMergeBL = capabilitiesPropertiesMergeBL;
28 this.componentsUtils = componentsUtils;
32 public void saveDataBeforeMerge(DataForMergeHolder dataHolder, Component containerComponent, ComponentInstance currentResourceInstance, Component originComponent) {
33 dataHolder.setOrigInstanceCapabilities(getAllInstanceCapabilities(currentResourceInstance));
34 dataHolder.setOrigInstanceNode(originComponent);
38 public Either<Component, ResponseFormat> mergeDataAfterCreate(User user, DataForMergeHolder dataHolder, Component updatedContainerComponent, String newInstanceId) {
39 Component origInstanceNode = dataHolder.getOrigInstanceNode();
40 List<CapabilityDefinition> origInstanceCapabilities = dataHolder.getOrigInstanceCapabilities();
41 ActionStatus mergeStatus = capabilitiesPropertiesMergeBL.mergeComponentInstanceCapabilities(updatedContainerComponent, origInstanceNode, newInstanceId, origInstanceCapabilities);
42 return Either.iif(!ActionStatus.OK.equals(mergeStatus), () -> componentsUtils.getResponseFormat(mergeStatus), () -> updatedContainerComponent);
45 private List<CapabilityDefinition> getAllInstanceCapabilities(ComponentInstance currentResourceInstance) {
46 return isNotEmpty( currentResourceInstance.getCapabilities() ) ? currentResourceInstance.getCapabilities().values().stream().flatMap(Collection::stream).collect(Collectors.toList()) : new ArrayList<>() ;