static string SimpleJobDllLoadTypes() { string dir = Environment.CurrentDirectory; IReceive folderWithDll = new ReceiverFolderHierarchical("#static:Directory.GetCurrentDirectory()#", "*.dll"); var filterFiles = new FilterForFilesHierarchical(); var recContentFile = new ReceiverFromDllRelational(); var loadDllromFiles = new TransformerApplyReceiver(recContentFile, "DllFileName", "FullName"); var fileRazor = Path.Combine(dir, "relationalGeneric.cshtml"); string filename = "#static:Directory.GetCurrentDirectory()#\\relationalDLL.html"; ISend senderHTML = new SyncSenderMultiple( new Sender_Text(filename, "<html><body>") { FileMode = FileMode.Create }, new Sender_HTMLRazor("Views/" + Path.GetFileName(fileRazor), filename), //new Sender_HTMLRelationViz("Name", filename), new Sender_Text(filename, "</body></html>") ) ; var job = new SimpleJob(); job.Receivers.Add(0, folderWithDll); job.FiltersAndTransformers.Add(0, filterFiles); job.FiltersAndTransformers.Add(1, loadDllromFiles); job.Senders.Add(0, senderHTML); return(job.SerializeMe()); }
public async Task TestReceiveSendDllHtml() { #region arrange var path = AppContext.BaseDirectory; var dir = AppContext.BaseDirectory; dir = Path.Combine(dir, "TestReceiveSendDllHtml"); if (Directory.Exists(dir)) { Directory.Delete(dir, true); } Directory.CreateDirectory(dir); var fileRazor = Path.Combine(dir, "relationalGeneric.cshtml"); File.Copy(@"Views\relationalGeneric.cshtml", fileRazor, true); string fileNameDll = Path.Combine(path, "StanskinsImplementation.dll"); string filename = Path.Combine(dir, "senderhtml.html"); if (File.Exists(filename)) { File.Delete(filename); } var receiverDll = new ReceiverFromDllRelational(fileNameDll); ISend senderHTML = new SyncSenderMultiple( new Sender_Text(filename, "<html><body>"), new Sender_HTMLRazor("TestReceiveSendDllHtml/" + Path.GetFileName(fileRazor), filename), new Sender_HTMLRelationViz("Name", filename), new Sender_Text(filename, "</body></html>") ) ; #endregion #region act var job = new SimpleJob(); job.Receivers.Add(0, receiverDll); job.Senders.Add(0, senderHTML); await job.Execute(); #endregion #region assert File.Exists(filename).ShouldBeTrue($"file {filename} should exists"); //Process.Start("explorer.exe", filename); #endregion }
public async Task TestReceiveFromJobConditional() { #region arrange var dir = AppContext.BaseDirectory; dir = Path.Combine(dir, "TestReceiveFromJobConditional"); if (Directory.Exists(dir)) { Directory.Delete(dir, true); } Directory.CreateDirectory(dir); var job = SimpleJobConditionalTransformersTest.GetJobCSV(); var receiver = new ReceiverFromJob(job); string file = SimpleJobConditionalTransformersTest.DeleteFileIfExists(Path.Combine(dir, "job.html")); //var sender = new Sender_HierarchicalVizJob(file,"Name"); //var sender = new SenderMediaToFile(file, // new MediaTransformStringToText("<html><body>"), // new MediaTransformDotJob(), // new MediaTransformStringToText("</body></html>") // ); var export = SimpleJobConditionalTransformersTest.DeleteFileIfExists(Path.Combine(dir, "export.cshtml")); File.WriteAllText(export, Sender_HTMLRazor.DefaultExport()); var sender = new SyncSenderMultiple( new Sender_Text(file, "<html><body>"), new Sender_HTMLRazor("TestReceiveFromJobConditional/" + Path.GetFileName(export), file), new Sender_HierarchicalVizJob(file, "Name"), new Sender_Text(file, "</body></html>") ); var newJob = new SimpleJob(); newJob.Receivers.Add(0, receiver); //newJob.Receivers.Add(1, new ReceiverFromJob(newJob)); newJob.Senders.Add(0, sender); #endregion #region act await newJob.Execute(); #endregion #region assert Assert.IsTrue(File.Exists(file)); //System.Diagnostics.Process.Start("explorer.exe", file); #endregion }
public async Task TestSendHTMLDataRelational() { #region arange var dir = AppContext.BaseDirectory; dir = Path.Combine(dir, "TestSendHTMLDataRelational"); if (Directory.Exists(dir)) { Directory.Delete(dir, true); } Directory.CreateDirectory(dir); CreateFilesAndFolders(dir); string filename = Path.Combine(dir, "senderhtml.html"); if (File.Exists(filename)) { File.Delete(filename); } IReceive r = new ReceiverFolderRelational(dir, "*.txt"); await r.LoadData(); var fileRazor = Path.Combine(dir, "relationalFolder.cshtml"); File.Copy(@"Views\relationalFolder.cshtml", fileRazor, true); #endregion #region act ISend sender = new SyncSenderMultiple( new Sender_Text(filename, "<html><body>"), new Sender_HTMLRazor("TestSendHTMLDataRelational/" + Path.GetFileName(fileRazor), filename), new Sender_HTMLRelationViz("Name", filename), new Sender_Text(filename, "</body></html>") ); sender.valuesToBeSent = r.valuesRead; await sender.Send(); #endregion #region assert //System.Diagnostics.Process.Start("explorer.exe", filename); Assert.IsTrue(File.Exists(filename), $"file {filename} must exists in export hierarchical"); Assert.IsTrue(File.ReadAllText(filename).Contains("ignat.txt"), "must contain data"); Assert.IsTrue(File.ReadAllText(filename).Contains("Viz("), "must contain viz ..."); //System.Diagnostics.Process.Start("explorer.exe", filename); #endregion }
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(); } } }
static string JobDllBlockly() { string dir = Environment.CurrentDirectory; IReceive folderWithDll = new ReceiverFolderHierarchical("#static:Directory.GetCurrentDirectory()#", "*.dll"); var filterFiles = new FilterForFilesHierarchical(); var recContentFile = new ReceiverFromDllRelational(); var loadDllFromFiles = new TransformerApplyReceiver(recContentFile, "DllFileName", "FullName"); //retain just types var filterTypes = new FilterRetainRelationalName(FilterType.Equal, "Types"); //load types that are not generic or abstract //var justTypes = new FilterComparableEqual(typeof(string), "Types", "NameRelation"); var notAbstract = new FilterComparableEqual(typeof(bool), false, "IsAbstract"); var notGeneric = new FilterComparableEqual(typeof(bool), false, "IsGeneric"); var notInterface = new FilterComparableEqual(typeof(bool), false, "IsInterface"); //var noInterface = new FilterExcludeRelation("Interfaces"); //var rel2plain = new TransformerRelationalToPlain(); var haveProps = new FilterComparableGreat(typeof(int), 0, "PropertiesNr"); //var justRelations = new FilterRetainItemsWithKey("NameRelation", FilterType.Equal); var fileRazor = Path.Combine(dir, "blockly.cshtml"); string filename = "#static:Directory.GetCurrentDirectory()#\\blockly.html"; ISend senderHTML = new SyncSenderMultiple( new Sender_Text(filename, "<html><body>") { FileMode = FileMode.Create }, new Sender_HTMLRazor("Views/" + Path.GetFileName(fileRazor), filename), //new Sender_HTMLRelationViz("Name", filename), new Sender_Text(filename, "</body></html>") ) ; var senderRow = new SenderByRowToFile("Name", "txt", "Block Definition", "txt"); var clear = new TransformClearValues(); var trReceiveHtml = new ReceiverHTMLTable(@"blockly.html", Encoding.UTF8); var decodeHtml = new TransformerHtmlDecode(); //var addJS = new TransformModifyField("Name", "{0}.js"); var senderBlockTag = new SenderByRowToFile("Name", "_def.txt", "Block definition", "txt"); var senderBlockDefinitionJs = new SenderByRowToFile("Name", "_block.js", "Block JS", "js"); var senderBlockCodeJs = new SenderByRowToFile("Name", "_code.js", "Block CodeGenerator", "js"); var job = new SimpleJobConditionalTransformers(); job .AddReceiver(folderWithDll) .AddFilter(filterFiles) .AddTransformer(loadDllFromFiles) .AddFilter(filterTypes) .AddFilter(notAbstract) .AddFilter(notGeneric) .AddFilter(notInterface) .AddFilter(haveProps) //.AddTransformer(noInterface) //.AddTransformer(rel2plain) .AddSender(senderHTML) .AddTransformer(clear) .Add(clear, trReceiveHtml) .Add(trReceiveHtml, decodeHtml) .Add(decodeHtml, senderBlockTag) .Add(decodeHtml, senderBlockDefinitionJs) .Add(decodeHtml, senderBlockCodeJs) ; return(job.SerializeMe()); }
public async Task TestSendHTMLDataHierarchical() { #region arange var dir = AppContext.BaseDirectory; dir = Path.Combine(dir, "TestSendDataHierarchical"); if (Directory.Exists(dir)) { Directory.Delete(dir, true); } Directory.CreateDirectory(dir); CreateFilesAndFolders(dir); string filename = Path.Combine(dir, "senderhtml.html"); if (File.Exists(filename)) { File.Delete(filename); } IReceive r = new ReceiverFolderHierarchical(dir, "*.txt"); await r.LoadData(); var fileRazor = Path.Combine(dir, "hierarFolder.cshtml"); File.Copy(@"Views\hierarFolder.cshtml", fileRazor, true); // File.WriteAllText(fileRazor, // @"@using System.Linq; //@using StankinsInterfaces; //@model StankinsInterfaces.IRow[] //Number Rows: @Model.Length //@{ // bool showTable=(Model.Length>0); // if(!showTable){ // return; // }; // var FieldNames= Model[0] // .Values // .Select(it => it.Key).ToArray(); //} //<table> //<thead> //<tr> //<td>ID</td> //@foreach(var col in FieldNames){ //<td> //@col //</td> //} //<td>Parent</td> //</thead> //<tbody> //@foreach(var item in Model){ // var m=item as IRowReceiveHierarchicalParent; //<tr> //<td>@m.ID</td> //@foreach(var col in FieldNames){ //<td> //@item.Values[col] //</td> //} //<td> //@if(m.Parent != null){ // <text>@m.Parent.ID</text> //} //</td> //</tr> //} //<tbody> //</table>"); #endregion #region act ISend sender = new SyncSenderMultiple( new Sender_Text(filename, "<html><body>"), new Sender_HTMLRazor("TestSendDataHierarchical/" + Path.GetFileName(fileRazor), filename), new Sender_HierarchicalVizFolder(filename, "Name"), new Sender_Text(filename, "</body></html>") ); sender.valuesToBeSent = r.valuesRead; await sender.Send(); #endregion #region assert Assert.IsTrue(File.Exists(filename), $"file {filename} must exists in export hierarchical"); Assert.IsTrue(File.ReadAllText(filename).Contains("ignat.txt"), "must contain data"); Assert.IsTrue(File.ReadAllText(filename).Contains("Viz("), "must contain viz ..."); //System.Diagnostics.Process.Start("explorer.exe", filename); #endregion }