diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-09 13:52:40 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-09 13:52:40 +0300 |
| commit | b2db361984b7f6833d24eb4c574ec3513d8b7633 (patch) | |
| tree | 1696a76a81582ab43cae0e01c01c3ff1c2d799e1 /Software/Visual_Studio/Tango.SQLExaminer/ExaminerSequenceConfigurationRunner.cs | |
| parent | a5f9c99d51f7e096ff612da6605ab4d4f5067009 (diff) | |
| download | Tango-b2db361984b7f6833d24eb4c574ec3513d8b7633.tar.gz Tango-b2db361984b7f6833d24eb4c574ec3513d8b7633.zip | |
Removed APPLICATION_VERSIONS & EMBEDDED_SOFTWARE_VERSIONS TABLES.
Added TANGO_VERSIONS.
Working on PPC machine setup.
Diffstat (limited to 'Software/Visual_Studio/Tango.SQLExaminer/ExaminerSequenceConfigurationRunner.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.SQLExaminer/ExaminerSequenceConfigurationRunner.cs | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.SQLExaminer/ExaminerSequenceConfigurationRunner.cs b/Software/Visual_Studio/Tango.SQLExaminer/ExaminerSequenceConfigurationRunner.cs new file mode 100644 index 000000000..f6a5b31c2 --- /dev/null +++ b/Software/Visual_Studio/Tango.SQLExaminer/ExaminerSequenceConfigurationRunner.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.SQLExaminer +{ + public class ExaminerSequenceConfigurationRunner + { + public event EventHandler<String> Log; + public event EventHandler<ExaminerSequenceItem> ScriptExecuting; + + public String SequenceFile { get; private set; } + + public ExaminerSequenceDataSource Source { get; private set; } + + public ExaminerSequenceDataSource Target { get; private set; } + + public String MachineSerialNumber { get; private set; } + + public String ScriptsFolder { get; private set; } + + public ExaminerSequenceConfigurationRunner(String sequenceFile, String scriptsFolder, ExaminerSequenceDataSource source, ExaminerSequenceDataSource target, String machineSerialNumber) + { + SequenceFile = sequenceFile; + ScriptsFolder = scriptsFolder; + Source = source; + Target = target; + MachineSerialNumber = machineSerialNumber; + } + + public Task Run() + { + return Task.Factory.StartNew(() => + { + ExaminerSequenceConfiguration sequence = ExaminerSequenceConfiguration.FromFile(SequenceFile); + + foreach (var item in sequence.Items) + { + ScriptExecuting?.Invoke(this, item); + + ExaminerConfigurationBuilder builder = new ExaminerConfigurationBuilder(Path.Combine(ScriptsFolder, item.FileName)); + builder.SetSourceServer(Source.Address, Source.DataBaseName, Source.IntegratedSecurity, Source.UserName, Source.Password); + builder.SetTargetServer(Target.Address, Target.DataBaseName, Target.IntegratedSecurity, Target.UserName, Target.Password); + + if (item.RequiresSerialNumber) + { + builder.SetMachineSerialNumber(MachineSerialNumber); + } + + builder.Synchronize(); + + ExaminerProcess process = new ExaminerProcess(builder.Build(), item.Type == ExaminerSequenceItemType.Schema ? ExaminerProcessType.Schema : ExaminerProcessType.Data); + process.Progress += (x, msg) => + { + if (msg != null && !msg.Contains("SQL Examiner")) + { + Log?.Invoke(this, msg); + } + }; + + var result = process.Execute().Result; + + if (result.ExitCode != ExaminerProcessExitCode.Success) + { + throw new InvalidDataException(String.Format("Synchronization script '{0}' has terminated with exit code '{1}'.", item.Name, result.ExitCode)); + } + } + + }); + } + } +} |
