use of io.github.edmm.core.parser.MappingEntity in project winery by eclipse.
the class EdmmConverterTest method transformProperties.
@Test
void transformProperties() {
// region *** build the TopologyTemplate ***
TTopologyTemplate.Builder topology = new TTopologyTemplate.Builder();
topology.addNodeTemplate(nodeTemplates.get("test_node_3"));
// endregion
TServiceTemplate serviceTemplate = new TServiceTemplate();
serviceTemplate.setTopologyTemplate(topology.build());
EdmmConverter edmmConverter = new EdmmConverter(nodeTypes, relationshipTypes, nodeTypeImplementations, relationshipTypeImplementations, artifactTemplates, edmmTypeExtendsMapping, edmm1to1Mapping);
EntityGraph transform = edmmConverter.transform(serviceTemplate);
assertNotNull(transform);
assertTrue(transform.vertexSet().stream().anyMatch(entity -> entity instanceof MappingEntity && entity.getName().equals("properties")));
Stream.of("os_family", "public_key", "ssh_port").forEach(key -> {
assertTrue(transform.vertexSet().stream().anyMatch(entity -> entity instanceof MappingEntity && entity.getName().equals(key) && entity.getParent().isPresent() && entity.getParent().get().getName().equals("properties") && entity.getChildren().size() == 1));
});
Stream.of("os_family", "public_key", "ssh_port").forEach(key -> {
assertTrue(transform.vertexSet().stream().anyMatch(entity -> entity instanceof ScalarEntity && entity.getName().equals(key) && !((ScalarEntity) entity).getValue().isEmpty() && entity.getParent().isPresent() && entity.getParent().get().getName().equals("properties")));
});
}
use of io.github.edmm.core.parser.MappingEntity in project winery by eclipse.
the class EdmmConverter method createNode.
private void createNode(TNodeTemplate nodeTemplate, EntityGraph entityGraph) {
// create the component inside the topology.
EntityId componentNodeId = EntityGraph.COMPONENTS.extend(nodeTemplate.getId());
entityGraph.addEntity(new MappingEntity(componentNodeId, entityGraph));
// add the type to the model
EntityId nodeTypeEntityId = this.createType(nodeTypes.get(nodeTemplate.getType()), EntityGraph.COMPONENT_TYPES, entityGraph);
entityGraph.addEntity(new ScalarEntity(nodeTypeEntityId.getName(), componentNodeId.extend(DefaultKeys.TYPE), entityGraph));
createProperties(nodeTemplate, componentNodeId, entityGraph);
createArtifact(nodeTemplate, componentNodeId, entityGraph);
createOperations(nodeTypes.get(nodeTemplate.getType()), componentNodeId, entityGraph);
}
use of io.github.edmm.core.parser.MappingEntity in project winery by eclipse.
the class EdmmConverter method createPropertiesDefinition.
private void createPropertiesDefinition(TEntityType toscaType, EntityId typeEntityId, EntityGraph entityGraph) {
if (Objects.nonNull(toscaType.getWinerysPropertiesDefinition())) {
EntityId propertiesEntityId = typeEntityId.extend(DefaultKeys.PROPERTIES);
entityGraph.addEntity(new MappingEntity(propertiesEntityId, entityGraph));
toscaType.getWinerysPropertiesDefinition().getPropertyDefinitions().forEach(propertyDef -> {
EntityId propertyEntityId = propertiesEntityId.extend(propertyDef.getKey());
entityGraph.addEntity(new MappingEntity(propertyEntityId, entityGraph));
String normalizedType = propertyDef.getType().replace("xsd:", "");
EntityId propertyTypeEntityId = propertyEntityId.extend(DefaultKeys.TYPE);
entityGraph.addEntity(new ScalarEntity(normalizedType, propertyTypeEntityId, entityGraph));
});
}
}
use of io.github.edmm.core.parser.MappingEntity in project winery by eclipse.
the class EdmmConverter method createOperations.
private void createOperations(TEntityType type, EntityId nodeTypeEntityId, EntityGraph entityGraph) {
if (type instanceof TNodeType && Objects.nonNull(((TNodeType) type).getInterfaces())) {
List<TInterface> interfaces = ((TNodeType) type).getInterfaces();
interfaces.forEach(anInterface -> {
anInterface.getOperations().forEach(operation -> {
EntityId operationsEntityId = nodeTypeEntityId.extend(DefaultKeys.OPERATIONS);
entityGraph.addEntity(new MappingEntity(operationsEntityId, entityGraph));
TNodeTypeImplementation implementation = nodeTypeImplementations.values().stream().filter(impl -> impl.getNodeType().equals(type.getQName())).findFirst().orElse(null);
String path = getImplementationForOperation(implementation, anInterface.getName(), operation.getName());
EntityId operationId = operationsEntityId.extend(operation.getName());
createPathReferenceEntity(entityGraph, path, operationId);
});
});
}
}
use of io.github.edmm.core.parser.MappingEntity in project winery by eclipse.
the class EdmmConverter method createTechnologyMapping.
private void createTechnologyMapping(List<TNodeTemplate> nodeTemplates, EntityGraph entityGraph) {
Map<String, List<TNodeTemplate>> deploymentTechnologyMapping = new HashMap<>();
for (TNodeTemplate nodeTemplate : nodeTemplates) {
Map<QName, String> attributes = nodeTemplate.getOtherAttributes();
String key = attributes.get(new QName(TOSCA_WINERY_EXTENSIONS_NAMESPACE, "deployment-technology"));
if (key != null) {
deploymentTechnologyMapping.computeIfAbsent(key, k -> new ArrayList<>());
deploymentTechnologyMapping.get(key).add(nodeTemplate);
}
}
if (!deploymentTechnologyMapping.isEmpty()) {
entityGraph.addEntity(new MappingEntity(EntityGraph.ORCHESTRATION_TECHNOLOGY, entityGraph));
deploymentTechnologyMapping.forEach((key, nodes) -> {
EntityId entity = EntityGraph.ORCHESTRATION_TECHNOLOGY.extend(key);
entityGraph.addEntity(new SequenceEntity(entity, entityGraph));
for (TNodeTemplate nodeTemplate : nodes) {
EntityId valueEntity = entity.extend(nodeTemplate.getId());
entityGraph.addEntity(new ScalarEntity(nodeTemplate.getId(), valueEntity, entityGraph));
}
});
}
}
Aggregations