public static IEtlProcess Resolve(IEtlForexConfig config, string dbName) { using (IUnityContainer container = new UnityContainer()) { container.RegisterInstance(typeof(IEtlForexConfig), config); container.RegisterType <ISourceSpecification, ForexiteSourceSpecification>(); var source = container.Resolve <ISourceSpecification>(); container.RegisterType(typeof(IExtracter <>), typeof(Extracter)); container.RegisterType(typeof(ITransformer <>), typeof(Transformer)); container.RegisterType(typeof(ILoader <>), typeof(Loader)); container.RegisterType(typeof(IManifest <>), typeof(Manifest), new InjectionConstructor(new object[] { source, dbName })); container.RegisterType(typeof(IFileCompression), source.FileCompressionHandler, new InjectionConstructor()); container.RegisterType <ICleaner, Cleaner>(); container.RegisterType <IBinner, Binner>(); container.RegisterType <IConnectionFactory, SQLiteConnectionFactory>( new InjectionConstructor(new object[] { new DirectoryInfo(config.RootSQLiteFolder), dbName })); container.RegisterType <IFinancialRepository, FinancialRepository>(); container.RegisterType(typeof(IEtlProcess), typeof(EtlProcess <FormatObject>)); return(container.Resolve <IEtlProcess>()); } }
public Extracter(ISourceSpecification source, IEtlForexConfig config) { Source = source; TempDownloadLocation = new DirectoryInfo(Path.Combine(config.RootTempFolder, "Extracter")); Aggregator = new DownloadAggregator(Source, TempDownloadLocation); }
public Transformer(IFileCompression compression, ICleaner cleaner, IBinner binner, IEtlForexConfig config) : this() { TempLocation = new DirectoryInfo(Path.Combine(config.RootTempFolder, "Transformer")); Compression = compression; Cleaner = cleaner; Binner = binner; }
public Transformer(ISourceSpecification source, IFileCompression compression, ICleaner cleaner, IBinner binner, IEtlForexConfig config) { TempLocation = new DirectoryInfo(Path.Combine(config.RootTempFolder, "Transformer")); Source = source; Compression = compression; Cleaner = cleaner; Binner = binner; }