package org.alien4cloud.tosca.editor.processors.workflow; import alien4cloud.exception.AlreadyExistException; import org.alien4cloud.tosca.editor.EditionContextManager; import org.alien4cloud.tosca.editor.operations.workflow.RenameWorkflowOperation; import org.springframework.stereotype.Component; import org.alien4cloud.tosca.model.templates.Topology; import alien4cloud.paas.wf.Workflow; import lombok.extern.slf4j.Slf4j; /** * Process the {@link RenameWorkflowOperation} operation * Renames a workflow */ @Slf4j @Component public class RenameWorkflowProcessor extends AbstractWorkflowProcessor<RenameWorkflowOperation> { @Override protected void processWorkflowOperation(RenameWorkflowOperation operation, Workflow workflow) { Topology topology = EditionContextManager.getTopology(); ensureNotStandard(workflow, "standard workflow <" + workflow.getName() + "> can not be renamed"); ensureUniqueness(topology, operation.getNewName()); log.debug("renaming workflow <{}> to <{}> from topology <{}>", workflow.getName(), operation.getNewName(), topology.getId()); topology.getWorkflows().remove(workflow.getName()); workflow.setName(operation.getNewName()); topology.getWorkflows().put(workflow.getName(), workflow); } private void ensureUniqueness(Topology topology, String name) { if (topology.getWorkflows().containsKey(name)) { throw new AlreadyExistException(String.format("The workflow '%s' already exists in topology '%s'.", name, topology.getId())); } } }