/* * Copyright (C) Yutaka Matsuno 2010-2012 All rights reserved. */ package net.dependableos.dcase.diagram.common.command; import java.util.List; import java.util.Map.Entry; import net.dependableos.dcase.BasicNode; import net.dependableos.dcase.diagram.common.model.AttributeType; import net.dependableos.dcase.diagram.common.model.NodeInfo; import net.dependableos.dcase.diagram.common.util.LinkManager; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gmf.runtime.common.core.command.CommandResult; import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand; /** * A transaction command to change the value of attributes of nodes. */ public class ChangeNodePropertyTransactionCommand extends AbstractTransactionalCommand { /** * the list of nodes. */ private List<NodeInfo> changeNodeList; /** * the link manager. */ private LinkManager linkManager; /** * Allocates a ChangeNodePropertyTransactionCommand object and initialize it. * * @param domain the editing domain. * @param label the command label. * @param nodeList the list of nodes. * @param linkManager the link manager. */ public ChangeNodePropertyTransactionCommand( TransactionalEditingDomain domain, String label, List<NodeInfo> nodeList, LinkManager linkManager) { super(domain, label, null); this.linkManager = linkManager; this.changeNodeList = nodeList; } /** * {@inheritDoc} */ @Override protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { for (NodeInfo nodeInfo : changeNodeList) { BasicNode basicNode = this.linkManager.getBasicNode((String) nodeInfo.getAttribute(AttributeType.ID)); for (Entry<AttributeType, Object> entry : nodeInfo.getAttributeMap().entrySet()) { Object value = entry.getValue(); if (value == null) { continue; } switch (entry.getKey()) { case NAME: basicNode.setName((String) value); break; case DESC: basicNode.setDesc((String) value); break; case ATTACHMENT: basicNode.setAttachment((String) value); break; case STATUS: basicNode.setStatus((String) value); break; case FLAG: basicNode.setFlag((String) value); break; case RESPNAME: basicNode.setRespName((String) value); break; case RESPADDRESS: basicNode.setRespAddress((String) value); break; case RESPICON: basicNode.setRespIcon((String) value); break; case RESPTIME: basicNode.setRespTime((String) value); break; case MESSAGE: basicNode.setMessage((String) value); break; case REQUIREMENT: basicNode.setRequirement((String) value); break; case PARENT: basicNode.setParent((String) value); break; case REFSOURCE: basicNode.setRefSource((String) value); break; case PARAMETERDEFS: basicNode.setParameterDefs((String) value); break; case PARAMETERVALS: basicNode.setParameterVals((String) value); break; case PARAMETERIZEDDESC: basicNode.setParameterizedDesc((String) value); break; case USERDEF001: basicNode.setUserdef001((String) value); break; case USERDEF002: basicNode.setUserdef002((String) value); break; case USERDEF003: basicNode.setUserdef003((String) value); break; case USERDEF004: basicNode.setUserdef004((String) value); break; case USERDEF005: basicNode.setUserdef005((String) value); break; case USERDEF006: basicNode.setUserdef006((String) value); break; case USERDEF007: basicNode.setUserdef007((String) value); break; case USERDEF008: basicNode.setUserdef008((String) value); break; case USERDEF009: basicNode.setUserdef009((String) value); break; case USERDEF010: basicNode.setUserdef010((String) value); break; case USERDEF011: basicNode.setUserdef011((String) value); break; case USERDEF012: basicNode.setUserdef012((String) value); break; case USERDEF013: basicNode.setUserdef013((String) value); break; case USERDEF014: basicNode.setUserdef014((String) value); break; case USERDEF015: basicNode.setUserdef015((String) value); break; case USERDEF016: basicNode.setUserdef016((String) value); break; default: break; } } } return CommandResult.newOKCommandResult(); } }