public void Execute(string fullFilename, ConnectionSettings settings, ITaskObserver taskObserver)
{
string scriptFilename = getFilename(fullFilename);
if (_executionTracker.TestDataScriptAlreadyExecuted(settings, scriptFilename))
{
taskObserver.Log(string.Format("Skipping (already executed): {0}", scriptFilename));
}
else
{
string sql = _fileSystem.ReadTextFile(fullFilename);
if (!_executor.ScriptSupportsTransactions(sql))
{
taskObserver.Log(string.Format("Executing: {0}", scriptFilename));
_executor.ExecuteNonQuery(settings, sql, true);
_executionTracker.MarkTestDataScriptAsExecuted(settings, scriptFilename, taskObserver);
}
else
{
taskObserver.Log(string.Format("Executing: {0} in a transaction", scriptFilename));
_executor.ExecuteNonQueryTransactional(settings, sql);
_executionTracker.MarkTestDataScriptAsExecuted(settings, scriptFilename, taskObserver);
}
}
}