/*
* Copyright (C) Yutaka Matsuno 2010-2012 All rights reserved.
*/
package net.dependableos.dcase.diagram.common.command;
import java.util.List;
import java.util.Map;
import net.dependableos.dcase.BasicLink;
import net.dependableos.dcase.diagram.common.model.AttributeType;
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 a link.
*/
public class ChangeBasicLinkPropertyTransactionCommand extends
AbstractTransactionalCommand {
/**
* the link.
*/
private BasicLink basicLink;
/**
* the map of attributes.
*/
private Map<AttributeType, Object> attributeMap;
/**
* Allocates a ChangeBasicLinkPropertyTransactionCommand object and initialize it.
*
* @param domain the editing domain.
* @param label the command label.
* @param affectedFiles the list of affected IFiles.
* @param basicLink the link.
* @param attributeMap the map of attributes.
*/
@SuppressWarnings("unchecked")
public ChangeBasicLinkPropertyTransactionCommand(
TransactionalEditingDomain domain, String label,
List affectedFiles, BasicLink basicLink,
Map<AttributeType, Object> attributeMap) {
super(domain, label, affectedFiles);
this.basicLink = basicLink;
this.attributeMap = attributeMap;
}
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand
* #doExecuteWithResult(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
*/
@Override
protected CommandResult doExecuteWithResult(
IProgressMonitor progressMonitor, IAdaptable info)
throws ExecutionException {
// sets values of common attributes.
setCommonAttribute();
return CommandResult.newOKCommandResult();
}
/**
* Sets values of common attributes.
*/
private void setCommonAttribute() {
for (Map.Entry<AttributeType, Object> attribute : attributeMap
.entrySet()) {
Object value = attribute.getValue();
switch (attribute.getKey()) {
case NAME:
basicLink.setName((String) value);
break;
case DESC:
basicLink.setDesc((String) value);
break;
case ATTACHMENT:
basicLink.setAttachment((String) value);
break;
case STATUS:
basicLink.setStatus((String) value);
break;
case SIBLINGORDER:
basicLink.setSiblingOrder((String) value);
break;
case MESSAGE:
basicLink.setMessage((String) value);
break;
case USERDEF001:
basicLink.setUserdef001((String) value);
break;
case USERDEF002:
basicLink.setUserdef002((String) value);
break;
case USERDEF003:
basicLink.setUserdef003((String) value);
break;
case USERDEF004:
basicLink.setUserdef004((String) value);
break;
case USERDEF005:
basicLink.setUserdef005((String) value);
break;
case USERDEF006:
basicLink.setUserdef006((String) value);
break;
case USERDEF007:
basicLink.setUserdef007((String) value);
break;
case USERDEF008:
basicLink.setUserdef008((String) value);
break;
case USERDEF009:
basicLink.setUserdef009((String) value);
break;
case USERDEF010:
basicLink.setUserdef010((String) value);
break;
case USERDEF011:
basicLink.setUserdef011((String) value);
break;
case USERDEF012:
basicLink.setUserdef012((String) value);
break;
case USERDEF013:
basicLink.setUserdef013((String) value);
break;
case USERDEF014:
basicLink.setUserdef014((String) value);
break;
case USERDEF015:
basicLink.setUserdef015((String) value);
break;
case USERDEF016:
basicLink.setUserdef016((String) value);
break;
default:
break;
}
}
}
}