1 package org.openecomp.sdc.asdctool.impl.migration.v1707.jsonmodel.relations;
4 import org.apache.commons.lang3.tuple.ImmutablePair;
5 import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
6 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
7 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
8 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
9 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
10 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
11 import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
12 import org.openecomp.sdc.be.datatypes.elements.ListCapabilityDataDefinition;
13 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
14 import org.openecomp.sdc.be.datatypes.elements.MapDataDefinition;
15 import org.openecomp.sdc.be.datatypes.elements.MapListCapabiltyDataDefinition;
16 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
17 import org.openecomp.sdc.be.model.CapabilityDefinition;
18 import org.openecomp.sdc.be.model.ComponentInstance;
19 import org.openecomp.sdc.be.model.operations.api.ICapabilityOperation;
20 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
21 import org.openecomp.sdc.be.model.operations.impl.ComponentInstanceOperation;
22 import org.openecomp.sdc.be.resources.data.CapabilityData;
24 import javax.annotation.Resource;
25 import java.util.ArrayList;
26 import java.util.List;
28 import java.util.stream.Collectors;
30 public class FulfilledCapabilitiesMigrationService extends FulfilledCapabilityRequirementMigrationService<CapabilityDefinition, CapabilityData> {
32 @Resource(name = "capability-operation")
33 private ICapabilityOperation capabilityOperation;
35 @Resource(name = "component-instance-operation")
36 private ComponentInstanceOperation componentInstanceOperation;
39 Either<CapabilityDefinition, StorageOperationStatus> getToscaDefinition(CapabilityData data) {
40 return capabilityOperation.getCapability(data.getUniqueId());
44 void setPath(CapabilityDefinition def, List<String> path) {
49 String getType(CapabilityDefinition def) {
54 Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getFulfilledCapReqs(ComponentInstance instance, NodeTypeEnum nodeTypeEnum) {
55 return componentInstanceOperation.getFulfilledCapabilities(instance, nodeTypeEnum);
59 ListDataDefinition convertToDefinitionListObject(List<CapabilityDefinition> capReqDefList) {
60 List<CapabilityDataDefinition> capabilityDataDefinitions = new ArrayList<>();
61 capabilityDataDefinitions.addAll(capReqDefList);
62 return new ListCapabilityDataDefinition(capabilityDataDefinitions);
66 MapDataDefinition convertToDefinitionMapObject(Map<String, ListDataDefinition> reqCapForInstance) {
67 Map<String, ListCapabilityDataDefinition> capabilitiesList = castDataDefinitionListToCapabilityList(reqCapForInstance);
68 return new MapListCapabiltyDataDefinition(capabilitiesList);
72 Either<GraphVertex, TitanOperationStatus> getAssociatedDefinitions(GraphVertex component) {
73 return titanDao.getChildVertex(component, EdgeLabelEnum.FULLFILLED_REQUIREMENTS, JsonParseFlagEnum.NoParse);
77 Either<GraphVertex, StorageOperationStatus> associateToGraph(GraphVertex graphVertex, Map<String, MapDataDefinition> defsByInstance) {
78 return topologyTemplateOperation.assosiateElementToData(graphVertex, VertexTypeEnum.FULLFILLED_CAPABILITIES, EdgeLabelEnum.FULLFILLED_CAPABILITIES, defsByInstance);
81 private Map<String, ListCapabilityDataDefinition> castDataDefinitionListToCapabilityList(Map<String, ListDataDefinition> reqCapForInstance) {
82 return reqCapForInstance.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> (ListCapabilityDataDefinition) entry.getValue()));