1 package org.openecomp.sdc.be.components.merge;
4 import org.openecomp.sdc.be.components.impl.generic.GenericTypeBusinessLogic;
5 import org.openecomp.sdc.be.dao.api.ActionStatus;
6 import org.openecomp.sdc.be.impl.ComponentsUtils;
7 import org.openecomp.sdc.be.model.Component;
8 import org.openecomp.sdc.be.model.InputDefinition;
9 import org.openecomp.sdc.be.model.Resource;
10 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
11 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
13 import java.util.List;
15 import java.util.stream.Collectors;
17 @org.springframework.stereotype.Component
18 public class GlobalInputsFilteringBusinessLogic {
20 private GenericTypeBusinessLogic genericTypeBusinessLogic;
21 private ToscaOperationFacade toscaOperationFacade;
22 private ComponentsUtils componentsUtils;
24 public GlobalInputsFilteringBusinessLogic(GenericTypeBusinessLogic genericTypeBusinessLogic, ToscaOperationFacade toscaOperationFacade, ComponentsUtils componentsUtils) {
25 this.genericTypeBusinessLogic = genericTypeBusinessLogic;
26 this.toscaOperationFacade = toscaOperationFacade;
27 this.componentsUtils = componentsUtils;
30 public Either<List<InputDefinition>, ActionStatus> filterGlobalInputs(Component newResource) {
31 Either<Resource, StorageOperationStatus> genericComp = toscaOperationFacade.getLatestCertifiedNodeTypeByToscaResourceName(newResource.fetchGenericTypeToscaNameFromConfig());
32 return genericComp.bimap(genericResource -> findCommonInputs(genericResource, newResource),
33 storageOperationStatus -> componentsUtils.convertFromStorageResponse(storageOperationStatus));
36 private List<InputDefinition> findCommonInputs(Resource genericResource, Component resource) {
37 List<InputDefinition> resourceInputs = resource.getInputs();
38 List<InputDefinition> genericInputs = genericTypeBusinessLogic.generateInputsFromGenericTypeProperties(genericResource);
39 Set<String> genericInputsNames = genericInputs.stream().map(InputDefinition::getName).collect(Collectors.toSet());
40 return resourceInputs.stream().filter(input -> genericInputsNames.contains(input.getName())).collect(Collectors.toList());