Example #1
0
        private static void processTranformation()
        {
           
            Pipeline processPipeline = new Pipeline();


            // Load all pipeline components and triggers from available assemblies
            foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
                foreach (Type t in a.GetTypes())
                {
                    if (t.GetInterface("MohawkCollege.EHR.gpmr.Pipeline.IPipelineComponent") != null
                        && !t.IsAbstract)
                    {
                        processPipeline.Components.Add((IPipelineComponent)a.CreateInstance(t.FullName));
                        System.Diagnostics.Trace.WriteLine(string.Format("Found pipeline component {0}", t.FullName), "debug");
                    }
                    else if (t.GetInterface("MohawkCollege.EHR.gpmr.Pipeline.IPipelineTrigger") != null
                        && !t.IsAbstract)
                    {
                        processPipeline.Triggers.Add((IPipelineTrigger)a.CreateInstance(t.FullName));
                        System.Diagnostics.Trace.WriteLine(string.Format("Found pipeline trigger {0}", t.FullName), "debug");
                    }
                }

            // Initialize the process pipeline
            processPipeline.Initialize();

            // Set data segment
            processPipeline.Data.Add("EnabledRenderers", new DumpableStringCollection(parameters.Renderers));
            processPipeline.Data.Add("CommandParameters", parameters.Extensions);

            if (parameters.StrictMode && parameters.QuirksMode)
            {
                Console.WriteLine("The --quirks and --strict parameters are exclusive and cannot be combined");
                return;
            }

            processPipeline.Mode = parameters.StrictMode ? Pipeline.OperationModeType.Strict : parameters.QuirksMode ? Pipeline.OperationModeType.Quirks : Pipeline.OperationModeType.Normal;


            if (processPipeline.Mode == Pipeline.OperationModeType.Quirks)
                Console.WriteLine("--- WARNING ---\r\n You are executing GPMR in Quirks mode, GPMR will continue to process models that cannot be verified to be correct\r\n--- WARNING ---");

            processPipeline.Output = parameters.OutputDirectory;

            // Saturate the pipeline file list
            foreach (string filePattern in parameters.Sources)
            {
                // See what we are including
                if (filePattern.Contains("*") || filePattern.Contains("?"))
                {
                    string path = Path.GetDirectoryName(filePattern);
                    foreach (string file in Directory.GetFiles(path, Path.GetFileName(filePattern)))
                        processPipeline.InputFiles.Push(file);
                }
                else
                    processPipeline.InputFiles.Push(filePattern);

            }

            // Begin Pipeline Execution
            try
            {
                processPipeline.Execute();
            }
            catch (Exception e)
            {
                System.Diagnostics.Trace.WriteLine("The execution of the pipeline has failed. No processing can continue", "fatal");
                System.Diagnostics.Trace.WriteLine(e.Message, "fatal");
            }
        }