public async Task TestExportRelationalHTMLSqlServer() { #region arrange string folderName = AppContext.BaseDirectory; //CreateExportFilesSqlServer(Path.Combine(folderName,"Views")); var connectionString = GetSqlServerConnectionString(); using (var conn = new SqlConnection(connectionString)) { await conn.OpenAsync(); using (var cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = @" IF OBJECT_ID('dbo.TestAndrei', 'U') IS NOT NULL DROP TABLE dbo.TestAndrei;"; await cmd.ExecuteNonQueryAsync(); cmd.CommandText = @"create table TestAndrei( ID int, FirstName varchar(64) not null )"; await cmd.ExecuteNonQueryAsync(); } } var rr = new ReceiverRelationalSqlServer(); rr.ConnectionString = connectionString; string OutputFileName = SimpleJobConditionalTransformersTest.DeleteFileIfExists(Path.Combine(folderName, "relationalSqlServer.html")); var sender = new Sender_HTMLRazor("Views/sqlserver.cshtml", OutputFileName); var senderViz = new Sender_HTMLRelationViz("Name", OutputFileName); var filter = new FilterExcludeRelation("columns", "tables"); var job = new SimpleJobConditionalTransformers(); job.Receivers.Add(0, rr); job.AddSender(sender); job.Add(filter); job.Add(filter, senderViz); #endregion #region act await job.Execute(); #endregion #region assert Assert.IsTrue(File.Exists(OutputFileName), $"{OutputFileName} must exists"); //Process.Start("explorer.exe", OutputFileName); var text = File.ReadAllText(OutputFileName); Assert.IsTrue(text.Contains("TestAndrei"), "must contain table testandrei"); Assert.IsTrue(text.Contains("FirstName"), "must contain column FirstName "); #endregion }
static string DocumentSqlServer() { var rr = new ReceiverRelationalSqlServer(); rr.ConnectionString = "#file:SqlServerConnectionString#"; string OutputFileName = "relationalSqlServer.html"; var sender = new Sender_HTMLRazor("Views/sqlserver.cshtml", OutputFileName); sender.FileMode = FileMode.Create; var filter = new FilterExcludeRelation(new string[] { "columns", "tables", "views" }); var senderViz = new Sender_HTMLRelationViz("Name", OutputFileName); var si = new SimpleJobConditionalTransformers(); si.Receivers.Add(0, rr); si.AddSender(sender); si.Add(filter); si.Add(filter, senderViz); return(si.SerializeMe()); }
static async Task ExecuteSlnAnalysis() { string root = "@static:Path.GetPathRoot(#static:Directory.GetCurrentDirectory()#)@"; var si = new SimpleJob(); var recFolder = new ReceiverFolderHierarchical(root, "*tank*.sln;*StankinsSimpleJobNET*.exe"); si.Receivers.Add(0, recFolder); IFilter fi = new FilterForFilesHierarchical(); si.FiltersAndTransformers.Add(0, fi); si.UnSerialize(si.SerializeMe()); await si.Execute(); fi = si.FiltersAndTransformers[0] as IFilter; var exe = fi.valuesTransformed.FirstOrDefault(it => it.Values["FullName"].ToString().EndsWith(".exe")); if (exe == null) { Console.WriteLine("please build StankinsSimpleJobNET"); return; } string exePath = exe.Values["FullName"].ToString(); string exeDir = Path.GetDirectoryName(exePath); //cleanup foreach (var item in Directory.GetFiles(exeDir, "*.json")) { File.Delete(item); } //File.Copy("SolutionExport.txt", Path.Combine(exeDir, "SolutionExport.txt")); var slns = fi.valuesTransformed.Select(it => it.Values["FullName"]?.ToString()).Where(it => (it ?? "").Contains(".sln")).ToArray(); foreach (var sln in slns) { Console.WriteLine($"interpret:{sln}"); var psi = new ProcessStartInfo(exePath, "execute SolutionExport.txt"); psi.WorkingDirectory = exeDir; psi.Environment["solutionPath"] = sln; var p = Process.Start(psi); if (p.WaitForExit(60 * 1000)) { var newJob = new SimpleJobConditionalTransformers(); var json = Path.Combine(exeDir, Path.GetFileNameWithoutExtension(sln) + ".json"); var rec = new ReceiverJSONFileInt(json, Encoding.UTF8); newJob.Receivers.Add(0, rec); string fileName = Path.Combine(AppContext.BaseDirectory, Path.GetFileNameWithoutExtension(sln) + ".html"); if (File.Exists(fileName)) { File.Delete(fileName); } Console.WriteLine($"exporting to {fileName}"); string fileRazor = "solution.cshtml"; var sender = new SyncSenderMultiple( new Sender_Text(fileName, "<html><body>"), new Sender_HTMLRazor("Views/" + Path.GetFileName(fileRazor), fileName) ); newJob.AddSender(sender); var filter = new FilterExcludeRelation("referencedIn", "assemblyReferenced"); var senderViz = new SyncSenderMultiple( new Sender_HTMLRelationViz("Name", fileName), new Sender_Text(fileName, "</body></html>") ); newJob.Add(filter, senderViz); await newJob.Execute(); } } }