Sync Integ to Master
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / merge / GlobalInputsFilteringBusinessLogic.java
1 package org.openecomp.sdc.be.components.merge;
2
3 import fj.data.Either;
4 import org.openecomp.sdc.be.components.impl.BaseBusinessLogic;
5 import org.openecomp.sdc.be.components.impl.generic.GenericTypeBusinessLogic;
6 import org.openecomp.sdc.be.dao.api.ActionStatus;
7 import org.openecomp.sdc.be.model.InputDefinition;
8 import org.openecomp.sdc.be.model.Resource;
9 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
10 import org.springframework.stereotype.Component;
11
12 import java.util.List;
13 import java.util.Set;
14 import java.util.stream.Collectors;
15
16 @Component
17 public class GlobalInputsFilteringBusinessLogic extends BaseBusinessLogic {
18
19     @javax.annotation.Resource
20     private GenericTypeBusinessLogic genericTypeBusinessLogic;
21
22     Either<List<InputDefinition>, ActionStatus> filterGlobalInputs(Resource newResource) {
23             Either<Resource, StorageOperationStatus> genericComp = toscaOperationFacade.getLatestCertifiedNodeTypeByToscaResourceName(newResource.fetchGenericTypeToscaNameFromConfig());
24             return genericComp.bimap(genericResource -> findCommonInputs(genericResource, newResource),
25                                      storageOperationStatus -> componentsUtils.convertFromStorageResponse(storageOperationStatus));
26     }
27
28     private List<InputDefinition> findCommonInputs(Resource genericResource, Resource resource) {
29         List<InputDefinition> resourceInputs = resource.getInputs();
30         List<InputDefinition> genericInputs = genericTypeBusinessLogic.generateInputsFromGenericTypeProperties(genericResource);
31         Set<String> genericInputsNames = genericInputs.stream().map(InputDefinition::getName).collect(Collectors.toSet());
32         return resourceInputs.stream().filter(input -> genericInputsNames.contains(input.getName())).collect(Collectors.toList());
33     }
34
35 }