public static ILifetimeScope Create(Process process, IPipelineLogger logger)
        {
            if (process.OutputIsConsole())
            {
                logger.SuppressConsole();
            }

            var builder = new ContainerBuilder();

            builder.RegisterInstance(logger).As <IPipelineLogger>().SingleInstance();
            builder.RegisterCallback(new RootModule().Configure);
            builder.RegisterCallback(new ContextModule(process).Configure);

            // providers
            builder.RegisterCallback(new AdoModule(process).Configure);
            builder.RegisterCallback(new InternalModule(process).Configure);
            builder.RegisterCallback(new FileModule(process).Configure);
            builder.RegisterCallback(new ExcelModule(process).Configure);

            builder.RegisterCallback(new EntityPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessControlModule(process).Configure);

            return(builder.Build().BeginLifetimeScope());
        }
        public static ILifetimeScope Create(Process process, IPipelineLogger logger, string placeHolderStyle)
        {
            if (process.OutputIsConsole())
            {
                logger.SuppressConsole();
            }

            var builder = new ContainerBuilder();

            builder.Register(ctx => placeHolderStyle).Named <string>("placeHolderStyle");
            builder.RegisterInstance(logger).As <IPipelineLogger>().SingleInstance();
            builder.RegisterCallback(new TransformModule().Configure);
            builder.RegisterCallback(new ShorthandTransformModule().Configure);
            builder.RegisterCallback(new ValidateModule().Configure);
            builder.RegisterCallback(new ShorthandValidateModule().Configure);
            builder.RegisterCallback(new RootModule().Configure);
            builder.RegisterCallback(new ContextModule(process).Configure);

            // providers
            builder.RegisterCallback(new AdoModule(process).Configure);
            builder.RegisterCallback(new LuceneModule(process).Configure);
            builder.RegisterCallback(new SolrModule(process).Configure);
            builder.RegisterCallback(new ElasticModule(process).Configure);
            builder.RegisterCallback(new InternalModule(process).Configure);
            builder.RegisterCallback(new ConsoleModule(process).Configure);
            builder.RegisterCallback(new FileModule(process).Configure);
            builder.RegisterCallback(new GeoJsonModule(process).Configure);
            builder.RegisterCallback(new KmlModule(process).Configure);
            builder.RegisterCallback(new FolderModule(process).Configure);
            builder.RegisterCallback(new DirectoryModule(process).Configure);
            builder.RegisterCallback(new ExcelModule(process).Configure);
            builder.RegisterCallback(new WebModule(process).Configure);
            builder.RegisterCallback(new SSASModule(process).Configure);
            builder.RegisterCallback(new RethinkDBModule(process).Configure);

            // template providers
            builder.RegisterCallback(new WordModule(process).Configure);
            builder.RegisterCallback(new RazorModule(process).Configure);

            // etc
            builder.RegisterCallback(new MapModule(process).Configure);
            builder.RegisterCallback(new TemplateModule(process).Configure);
            builder.RegisterCallback(new ActionModule(process).Configure);

            builder.RegisterCallback(new EntityPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessControlModule(process).Configure);

            return(builder.Build().BeginLifetimeScope());
        }
Beispiel #3
0
        public static ILifetimeScope Create(Process process, IPipelineLogger logger)
        {
            if (process.OutputIsConsole())
            {
                logger.SuppressConsole();
            }

            var builder = new ContainerBuilder();

            builder.RegisterInstance(logger).As <IPipelineLogger>().SingleInstance();
            builder.RegisterCallback(new RootModule(process.Shorthand).Configure);
            builder.RegisterCallback(new ContextModule(process).Configure);

            // providers
            builder.RegisterCallback(new AdoModule(process).Configure);
            builder.RegisterCallback(new LuceneModule(process).Configure);
            builder.RegisterCallback(new SolrModule(process).Configure);
            builder.RegisterCallback(new ElasticModule(process).Configure);
            builder.RegisterCallback(new InternalModule(process).Configure);
            builder.RegisterCallback(new FileModule(process).Configure);
            builder.RegisterCallback(new GeoJsonModule(process).Configure);
            builder.RegisterCallback(new KmlModule(process).Configure);
            builder.RegisterCallback(new FolderModule(process).Configure);
            builder.RegisterCallback(new DirectoryModule(process).Configure);
            builder.RegisterCallback(new ExcelModule(process).Configure);
            builder.RegisterCallback(new WebModule(process).Configure);

            builder.RegisterCallback(new MapModule(process).Configure);
            builder.RegisterCallback(new TemplateModule(process).Configure);
            builder.RegisterCallback(new ActionModule(process).Configure);
            builder.RegisterCallback(new TransformModule(process).Configure);

            builder.RegisterCallback(new EntityPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessControlModule(process).Configure);

            return(builder.Build().BeginLifetimeScope());
        }
        public static ILifetimeScope Create(Process process, IPipelineLogger logger, string placeHolderStyle)
        {
            var loadContext = new PipelineContext(logger, process);

            if (process.OutputIsConsole())
            {
                logger.SuppressConsole();
            }

            var builder = new ContainerBuilder();

            builder.Properties["Process"] = process;

            builder.Register(ctx => placeHolderStyle).Named <string>("placeHolderStyle");
            builder.RegisterInstance(logger).As <IPipelineLogger>().SingleInstance();

            /* this stuff is loaded (again) because tfl actions can create processes, which will need short-hand to expand configuration in advance */
            builder.RegisterCallback(new TransformModule(process, logger).Configure);
            builder.RegisterCallback(new ValidateModule(process, logger).Configure);
            builder.RegisterCallback(new RootModule().Configure);
            builder.RegisterCallback(new ContextModule(process).Configure);

            // provider loading section
            var providers = new HashSet <string>(process.Connections.Select(c => c.Provider).Distinct(), StringComparer.OrdinalIgnoreCase);

            builder.RegisterCallback(new InternalModule(process).Configure);
            builder.RegisterCallback(new FileModule(process).Configure);

            if (providers.Contains("console"))
            {
                builder.RegisterCallback(new ConsoleModule(process).Configure);
            }
            if (providers.Contains("kml"))
            {
                builder.RegisterCallback(new KmlModule(process).Configure);
            }
            if (providers.Contains("filesystem"))
            {
                builder.RegisterCallback(new FileSystemModule(process).Configure);
            }

            var pluginsFolder = Path.Combine(AssemblyDirectory, "plugins");

            if (Directory.Exists(pluginsFolder))
            {
                var assemblies = new List <Assembly>();
                var files      = Directory.GetFiles(pluginsFolder, "Transformalize.Provider.*.Autofac.dll", SearchOption.TopDirectoryOnly);
                foreach (var file in files)
                {
                    var info = new FileInfo(file);
                    var name = info.Name.ToLower().Split('.').FirstOrDefault(f => f != "dll" && f != "transformalize" && f != "provider" && f != "autofac");

                    // temporary hack
                    if (name.StartsWith("amazonkinesis"))
                    {
                        name = name.Replace("amazonkinesis", string.Empty);
                    }

                    switch (name)
                    {
                    case "filehelpers" when(providers.Contains("file") || providers.Contains("folder")):
                        loadContext.Debug(() => "Loading filehelpers provider");
                        assemblies.Add(Assembly.LoadFile(new FileInfo(file).FullName));
                        break;

                    case "ado":
                        loadContext.Debug(() => "Loading ADO provider");
                        assemblies.Add(Assembly.LoadFile(new FileInfo(file).FullName));
                        break;

                    default:
                        if (providers.Contains(name))
                        {
                            loadContext.Debug(() => $"Loading {name} provider.");
                            var assembly = Assembly.LoadFile(new FileInfo(file).FullName);
                            assemblies.Add(assembly);
                        }
                        else
                        {
                            loadContext.Debug(() => $"Loading {name} isn't necessary for this arrangement.");
                        }
                        break;
                    }
                }
                if (assemblies.Any())
                {
                    builder.RegisterAssemblyModules(assemblies.ToArray());
                }
            }

            // etc
            builder.RegisterCallback(new EntityPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessControlModule(process).Configure);

            return(builder.Build().BeginLifetimeScope());
        }
Beispiel #5
0
        public static ILifetimeScope Create(Process process, IPipelineLogger logger, string placeHolderStyle)
        {
            var loadContext = new PipelineContext(logger, process);

            if (process.OutputIsConsole())
            {
                logger.SuppressConsole();
            }

            var builder = new ContainerBuilder();

            builder.Properties["Process"] = process;

            builder.Register(ctx => placeHolderStyle).Named <string>("placeHolderStyle");
            builder.RegisterInstance(logger).As <IPipelineLogger>().SingleInstance();

            /* this stuff is loaded (again) because tfl actions can create processes, which will need short-hand to expand configuration in advance */
            builder.RegisterCallback(new TransformModule(process, logger).Configure);
            builder.RegisterCallback(new ShorthandTransformModule().Configure);
            builder.RegisterCallback(new ValidateModule().Configure);
            builder.RegisterCallback(new ShorthandValidateModule().Configure);

            builder.RegisterCallback(new RootModule().Configure);
            builder.RegisterCallback(new ContextModule(process).Configure);

            // provider loading section
            var providers = new HashSet <string>(process.Connections.Select(c => c.Provider).Distinct(), StringComparer.OrdinalIgnoreCase);

            builder.RegisterCallback(new InternalModule(process).Configure);
            builder.RegisterCallback(new AdoModule(process).Configure);

            if (providers.Contains("console"))
            {
                builder.RegisterCallback(new ConsoleModule(process).Configure);
            }
            if (providers.Contains("file"))
            {
                builder.RegisterCallback(new FileModule(process).Configure);
            }
            if (providers.Contains("geojson"))
            {
                builder.RegisterCallback(new GeoJsonModule(process).Configure);
            }
            if (providers.Contains("kml"))
            {
                builder.RegisterCallback(new KmlModule(process).Configure);
            }
            if (providers.Contains("folder"))
            {
                builder.RegisterCallback(new FolderModule(process).Configure);
            }
            if (providers.Contains("filesystem"))
            {
                builder.RegisterCallback(new FileSystemModule(process).Configure);
            }
            if (providers.Contains("excel"))
            {
                builder.RegisterCallback(new ExcelModule(process).Configure);
            }
            if (providers.Contains("web"))
            {
                builder.RegisterCallback(new WebModule(process).Configure);
            }
            if (providers.Contains("rethinkdb"))
            {
                builder.RegisterCallback(new RethinkDBModule(process).Configure);
            }

            var pluginsFolder = Path.Combine(AssemblyDirectory, "plugins");

            if (Directory.Exists(pluginsFolder))
            {
                var assemblies = new List <Assembly>();
                foreach (var file in Directory.GetFiles(pluginsFolder, "Transformalize.Provider.*.Autofac.dll", SearchOption.TopDirectoryOnly))
                {
                    var info = new FileInfo(file);
                    var name = info.Name.ToLower().Split('.').FirstOrDefault(f => f != "dll" && f != "transformalize" && f != "provider" && f != "autofac");
                    if (!providers.Contains(name))
                    {
                        continue;
                    }
                    loadContext.Debug(() => $"Loading {name} provider");
                    var assembly = Assembly.LoadFile(new FileInfo(file).FullName);
                    assemblies.Add(assembly);
                }
                if (assemblies.Any())
                {
                    builder.RegisterAssemblyModules(assemblies.ToArray());
                }
            }

            // template providers
            builder.RegisterCallback(new RazorModule(process).Configure);

            // etc
            builder.RegisterCallback(new MapModule(process).Configure);
            builder.RegisterCallback(new TemplateModule(process).Configure);
            builder.RegisterCallback(new ActionModule(process).Configure);

            builder.RegisterCallback(new EntityPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessPipelineModule(process).Configure);
            builder.RegisterCallback(new ProcessControlModule(process).Configure);

            return(builder.Build().BeginLifetimeScope());
        }