001    package nl.cwi.sen1.tunit.execution;
002    
003    import java.util.HashMap;
004    import java.util.Map;
005    
006    import nl.cwi.sen1.tunit.TUnitTestCase;
007    import toolbus.ToolBus;
008    import toolbus.tool.ToolDefinition;
009    import toolbus.tool.ToolInstance;
010    import toolbus.tool.execution.DefaultToolExecutor;
011    import toolbus.tool.execution.IToolExecutor;
012    import toolbus.tool.execution.IToolExecutorFactory;
013    
014    public class DefaultTestToolExecutorFactory implements IToolExecutorFactory{
015            private final TUnitTestCase testCase;
016            
017            private final Map<String, Class<?>> execuableToolComValidators;
018            
019            public DefaultTestToolExecutorFactory(TUnitTestCase testCase){
020                    super();
021                    
022                    this.testCase = testCase;
023                    
024                    execuableToolComValidators = new HashMap<String, Class<?>>();
025            }
026            
027            public void addComValidatorForExecutableTool(String name, Class<?> toolStubClass){
028                    execuableToolComValidators.put(name, toolStubClass);
029            }
030            
031            public IToolExecutor getToolExecutor(ToolInstance toolInstance, ToolDefinition toolDefinition, ToolBus toolbus){
032                    String name = toolInstance.getToolName();
033                    Class<?> toolComValidatorClass = execuableToolComValidators.get(name);
034                    if(toolComValidatorClass != null){
035                            return new ToolComValidatorExecutor(testCase, name, toolInstance.getToolID(), toolComValidatorClass);
036                    }
037                    
038                    return new DefaultToolExecutor(toolInstance, toolDefinition, toolbus);
039            }
040    }