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