/******************************************************************************* * Copyright (c) 2010-2015 Henshin developers. All rights reserved. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * TU Berlin, University of Luxembourg, SES S.A. *******************************************************************************/ /** * DeleteParameterCommand.java * * Created 28.12.2011 - 12:58:31 */ package de.tub.tfs.henshin.editor.commands.flow_diagram; import java.util.List; import org.eclipse.gef.commands.Command; import org.eclipse.gef.commands.CompoundCommand; import de.tub.tfs.henshin.editor.util.ModelUtil; import de.tub.tfs.henshin.model.flowcontrol.Activity; import de.tub.tfs.henshin.model.flowcontrol.FlowControlPackage; import de.tub.tfs.henshin.model.flowcontrol.FlowDiagram; import de.tub.tfs.henshin.model.flowcontrol.Parameter; import de.tub.tfs.henshin.model.flowcontrol.ParameterMapping; import de.tub.tfs.muvitor.commands.SimpleDeleteEObjectCommand; /** * A {@link Command command} to delete {@link Parameter flow control parameters} * . * * @author nam * */ public class DeleteActivityParameterCommand extends CompoundCommand { /** * Constructs a {@link DeleteActivityParameterCommand} to delete a given * {@link Parameter parameter} in a given {@link FlowDiagram flow diagram}. * * @param model * a {@link Parameter parameter} to delete. * @param diagram * the containing {@link FlowDiagram flow diagram} of * {@code model}. */ public DeleteActivityParameterCommand(final Parameter model, final FlowDiagram diagram) { if (model != null) { // deletes all mapping with model as source. List<ParameterMapping> allMappings = ModelUtil.getReferences(model, ParameterMapping.class, diagram, FlowControlPackage.Literals.PARAMETER_MAPPING__SRC); for (ParameterMapping m : allMappings) { add(new SimpleDeleteEObjectCommand(m)); if (m.getTarget().getProvider() == diagram) { add(new DeleteFlowDiagramParameterCommand(m.getTarget())); } } // deletes all mapping with model as target. allMappings = ModelUtil.getReferences(model, ParameterMapping.class, diagram, FlowControlPackage.Literals.PARAMETER_MAPPING__TARGET); for (ParameterMapping m : allMappings) { add(new SimpleDeleteEObjectCommand(m)); if (m.getSrc().getProvider() == diagram) { add(new DeleteFlowDiagramParameterCommand(m.getSrc())); } } add(new SimpleDeleteEObjectCommand(model)); add(new UpdateActivity2ParameterMappingIdCommand( (Activity) model.getProvider())); } } /** * @param parameter */ public DeleteActivityParameterCommand(final Parameter parameter) { this(parameter, ((Activity) parameter.getProvider()).getDiagram()); } }