aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.SQLExaminer/ExaminerSequenceConfigurationRunner.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-08-09 13:52:40 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-08-09 13:52:40 +0300
commitb2db361984b7f6833d24eb4c574ec3513d8b7633 (patch)
tree1696a76a81582ab43cae0e01c01c3ff1c2d799e1 /Software/Visual_Studio/Tango.SQLExaminer/ExaminerSequenceConfigurationRunner.cs
parenta5f9c99d51f7e096ff612da6605ab4d4f5067009 (diff)
downloadTango-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.cs75
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));
+ }
+ }
+
+ });
+ }
+ }
+}