/** * Converts TOSCA YAML RelationshipTemplate to TOSCA XML RelationshipTemplate Additional TOSCA YAML element * interfaces is not converted * * @param node TOSCA YAML RelationshipTemplate * @return TOSCA XML RelationshipTemplate */ private List<TRelationshipTemplate> convert(org.eclipse.winery.model.tosca.yaml.TRelationshipTemplate node, String id) { if (node == null) { return null; } List<TRelationshipTemplate> relationshipTemplates = new ArrayList<>(); int num = 0; String idName = id; while (this.relationshipSTMap.containsKey(idName)) { TRelationshipTemplate.SourceOrTargetElement sourceElement = new TRelationshipTemplate.SourceOrTargetElement(); sourceElement.setRef(this.nodeTemplateMap.get(this.relationshipSTMap.get(idName).getKey())); TRelationshipTemplate.SourceOrTargetElement targetElement = new TRelationshipTemplate.SourceOrTargetElement(); targetElement.setRef(this.nodeTemplateMap.get(this.relationshipSTMap.get(idName).getValue())); relationshipTemplates.add( new TRelationshipTemplate.Builder(idName, node.getType(), sourceElement, targetElement).build() ); idName = id + num++; } return relationshipTemplates; }
public void setSourceNodeTemplate(@NonNull TNodeTemplate value) { Objects.requireNonNull(value); SourceOrTargetElement sourceElement = new SourceOrTargetElement(); sourceElement.setRef(value); this.sourceElement = sourceElement; }
newHostedOnRelationship.setName(id); TRelationshipTemplate.SourceOrTargetElement sourceElement = new TRelationshipTemplate.SourceOrTargetElement(); TRelationshipTemplate.SourceOrTargetElement targetElement = new TRelationshipTemplate.SourceOrTargetElement(); sourceElement.setRef(predecessorOfNewHost); targetElement.setRef(newMatchingNodeTemplate);
clonedRT.setSourceNodeTemplate(clonedNTsByIds.get(relationshipTemplate.getSourceElement().getRef().getId())); } else { TRelationshipTemplate.SourceOrTargetElement source = new TRelationshipTemplate.SourceOrTargetElement(); source.setRef(relationshipTemplate.getSourceElement().getRef()); clonedRT.setSourceElement(source); clonedRT.setTargetNodeTemplate(clonedNTsByIds.get(relationshipTemplate.getTargetElement().getRef().getId())); } else { TRelationshipTemplate.SourceOrTargetElement target = new TRelationshipTemplate.SourceOrTargetElement(); target.setRef(relationshipTemplate.getTargetElement().getRef()); clonedRT.setTargetElement(target);
matchingRelationshipTemplate.setName(id); matchingRelationshipTemplate.setType(relationshipTypeQName); TRelationshipTemplate.SourceOrTargetElement sourceElement = new TRelationshipTemplate.SourceOrTargetElement(); TRelationshipTemplate.SourceOrTargetElement targetElement = new TRelationshipTemplate.SourceOrTargetElement(); sourceElement.setRef(requirement); targetElement.setRef(capability);
/** * Switch the target of a relationship to a new node template * * @param incomingRel all relationships which has to be switched to a new target element * @param newTarget the new target element * @return list of the reassigned relationships */ private List<TRelationshipTemplate> reassignIncomingRelationships(List<TRelationshipTemplate> incomingRel, TNodeTemplate newTarget) { List<TRelationshipTemplate> newIncomingRel = new ArrayList<>(); for (TRelationshipTemplate incomingRelationship : incomingRel) { TRelationshipTemplate newIncomingRelationship = BackendUtils.clone(incomingRelationship); TRelationshipTemplate.SourceOrTargetElement targetElementNew = new TRelationshipTemplate.SourceOrTargetElement(); targetElementNew.setRef(newTarget); newIncomingRelationship.setTargetElement(targetElementNew); //TargetLable is only appended if not done yet if (incomingRelationship.getId().contains(ModelUtilities.getTargetLabel(newTarget).get())) { newIncomingRelationship.setId(Util.makeNCName(incomingRelationship.getId())); newIncomingRelationship.setName(Util.makeNCName(incomingRelationship.getName())); } else { newIncomingRelationship.setId(Util.makeNCName(incomingRelationship.getId() + "-" + ModelUtilities.getTargetLabel(newTarget).get())); newIncomingRelationship.setName(Util.makeNCName(incomingRelationship.getName() + "-" + ModelUtilities.getTargetLabel(newTarget).get())); } newIncomingRel.add(newIncomingRelationship); } return newIncomingRel; }
/** * This method instantiates a {@link TRelationshipTemplate} for a given {@link TRelationshipType}. * * @param relationshipType the {@link TRelationshipType} used for the {@link TRelationshipTemplate} * instantiation. * @param sourceNodeTemplate the source {@link TNodeTemplate} of the connection * @param targetNodeTemplate the target {@link TNodeTemplate} of the connection * @return the instantiated {@link TRelationshipTemplate} */ public static TRelationshipTemplate instantiateRelationshipTemplate(TRelationshipType relationshipType, TNodeTemplate sourceNodeTemplate, TNodeTemplate targetNodeTemplate) { TRelationshipTemplate relationshipTemplate = new TRelationshipTemplate(); relationshipTemplate.setId(UUID.randomUUID().toString()); relationshipTemplate.setName(relationshipType.getName()); relationshipTemplate.setType(new QName(relationshipType.getTargetNamespace(), relationshipType.getName())); // connect the NodeTemplates SourceOrTargetElement source = new SourceOrTargetElement(); source.setRef(sourceNodeTemplate); relationshipTemplate.setSourceElement(source); SourceOrTargetElement target = new SourceOrTargetElement(); target.setRef(targetNodeTemplate); relationshipTemplate.setTargetElement(target); return relationshipTemplate; }
/** * Switch the source of a relationship to a new node template * * @param outgoingRel all relationships which has to be switched to a new source element * @param newSource the new source element * @return list of the reassigned relationships */ private List<TRelationshipTemplate> reassignOutgoingRelationships(List<TRelationshipTemplate> outgoingRel, TNodeTemplate newSource) { List<TRelationshipTemplate> newOutgoingRel = new ArrayList<>(); for (TRelationshipTemplate outgoingRelationship : outgoingRel) { TRelationshipTemplate newOutgoingRelationship = BackendUtils.clone(outgoingRelationship); TRelationshipTemplate.SourceOrTargetElement sourceElementNew = new TRelationshipTemplate.SourceOrTargetElement(); sourceElementNew.setRef(newSource); newOutgoingRelationship.setSourceElement(sourceElementNew); //TargetLable is only appended if not done yet if (outgoingRelationship.getId().contains(ModelUtilities.getTargetLabel(newSource).get())) { newOutgoingRelationship.setId(Util.makeNCName(outgoingRelationship.getId())); newOutgoingRelationship.setName(Util.makeNCName(outgoingRelationship.getName())); } else { newOutgoingRelationship.setId(Util.makeNCName(outgoingRelationship.getId() + "-" + ModelUtilities.getTargetLabel(newSource).get())); newOutgoingRelationship.setName(Util.makeNCName(outgoingRelationship.getName() + "-" + ModelUtilities.getTargetLabel(newSource).get())); } newOutgoingRel.add(newOutgoingRelationship); } return newOutgoingRel; }
public void setTargetNodeTemplate(TNodeTemplate value) { SourceOrTargetElement targetElement = new SourceOrTargetElement(); targetElement.setRef(value); this.targetElement = targetElement; }