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