@Override protected void processNodeOperation(Csar csar, Topology topology, UpdateNodePositionOperation operation, NodeTemplate nodeTemplate) { // Set the position information of the node as meta-data. if (nodeTemplate.getTags() == null) { nodeTemplate.setTags(Lists.newArrayList(new Tag(Constants.X_META, String.valueOf(operation.getCoords().getX())), new Tag(Constants.Y_META, String.valueOf(operation.getCoords().getY())))); return; } boolean xSet = false; boolean ySet = false; for (Tag tag : nodeTemplate.getTags()) { if (Constants.X_META.equals(tag.getName())) { tag.setValue(String.valueOf(operation.getCoords().getX())); xSet = true; } if (Constants.Y_META.equals(tag.getName())) { tag.setValue(String.valueOf(operation.getCoords().getY())); ySet = true; } } if (!xSet) { nodeTemplate.getTags().add(new Tag(Constants.X_META, String.valueOf(operation.getCoords().getX()))); } if (!ySet) { nodeTemplate.getTags().add(new Tag(Constants.Y_META, String.valueOf(operation.getCoords().getY()))); } } }
/** * Build a node template. Note that a Tosca Context is required. * * @param nodeType the type of the node * @param templateToMerge the template that can be used to merge into the new node template * @param adaptToType This flag allow to know if we should adapt the templateToMerge node to the type. * @return new constructed node template. */ public static NodeTemplate buildNodeTemplate(NodeType nodeType, NodeTemplate templateToMerge, boolean adaptToType) { // clone the type of the node to avoid impacts, this should be improved in the future nodeType = CloneUtil.clone(nodeType); NodeTemplate nodeTemplate = new NodeTemplate(); fillAbstractInstantiableTemplate(nodeTemplate, nodeType, templateToMerge, !adaptToType); nodeTemplate.setCapabilities(Maps.newLinkedHashMap()); nodeTemplate.setRequirements(Maps.newLinkedHashMap()); fillCapabilitiesMap(nodeTemplate.getCapabilities(), nodeType.getCapabilities(), templateToMerge != null ? templateToMerge.getCapabilities() : null, adaptToType); fillRequirementsMap(nodeTemplate.getRequirements(), nodeType.getRequirements(), templateToMerge != null ? templateToMerge.getRequirements() : null, adaptToType); if (templateToMerge != null && templateToMerge.getRelationships() != null) { nodeTemplate.setRelationships(templateToMerge.getRelationships()); } if (templateToMerge != null && templateToMerge.getTags() != null) { nodeTemplate.setTags(templateToMerge.getTags()); } return nodeTemplate; }
NodeTemplate newNodeTemplate = TemplateBuilder.buildNodeTemplate(newType, oldNodeTemplate, false); newNodeTemplate.setName(operation.getNodeName()); newNodeTemplate.setTags(oldNodeTemplate.getTags()); newNodeTemplate.setName(oldNodeTemplate.getName()); newNodeTemplate.setRelationships(oldNodeTemplate.getRelationships());