Example #1
0
        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());
        }
Example #2
0
        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
        }
Example #4
0
        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
        }
Example #5
0
        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();
                }
            }
        }
Example #6
0
        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());
        }
Example #7
0
        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
        }