package com.temenos.interaction.rimdsl.rim;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.emf.common.util.EList;
/**
* Constructs commands and add to the list of commands.
*
* @author aphethean
*
*/
public class CommandFactory {
Map<String, Command> commandMap = new HashMap<String, Command>();
EList<Command> modelReferences;
public CommandFactory(EList<Command> modelReferences) {
this.modelReferences = modelReferences;
}
public ResourceCommand createResourceCommand(String commandName, Map<String,String> properties) {
// a resource command references a command
ResourceCommand resourceCommand = RimFactory.eINSTANCE.createResourceCommand();
if (commandMap.get(commandName) == null) {
Command command = RimFactory.eINSTANCE.createCommand();
command.setName(commandName);
// command.getProperties();
commandMap.put(commandName, command);
modelReferences.add(command);
}
resourceCommand.setCommand(commandMap.get(commandName));
// add any resource specific command properties
if (properties != null) {
for (String key : properties.keySet()) {
CommandProperty commandProperty = RimFactory.eINSTANCE.createCommandProperty();
commandProperty.setName(key);
commandProperty.setValue(properties.get(key));
resourceCommand.getProperties().add(commandProperty);
}
}
return resourceCommand;
}
}