private static void LaunchProcessor(DbToFileConfig fileConfig) { IDatabaseExtractor databaseExtractor = _serviceProvider.GetService <IDatabaseExtractor>(); IFileWriter fileWriter = _serviceProvider.GetService <IFileWriterFactory>().Create(fileConfig.OutputFormat); var processor = new Processor(databaseExtractor, fileWriter); processor.Process(fileConfig.TableGroups, fileConfig.FileOutputName); }
public override bool Execute() { List <DBObjectType> dataToExtract = GetDataToExtractEnum(); List <DBObjectType> dataToGenerateOutput = GetDataToGenerateOutputEnum(); ExtractionType exType; if (this.extractiontype.ToLower() == "database") { exType = ExtractionType.Database; } else if (this.extractiontype == "script") { exType = ExtractionType.Script; } else { throw new Exception(String.Format("Invalid extraction type: {0}", this.extractiontype)); } Database db = null; List <BaseStatement> statementCol = null; if (exType == ExtractionType.Database) { if (String.IsNullOrEmpty(_DBExtractorClass)) { throw new Exception("For database extraction type, dbextractorclass is required"); } Type dbExtractorClass = Type.GetType(_DBExtractorClass); if (dbExtractorClass == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", _DBExtractorClass)); } IDatabaseExtractor dbExtractor = (IDatabaseExtractor)Activator.CreateInstance(dbExtractorClass); DatabaseExtractor extractor = new DatabaseExtractor(); extractor.Extractor = dbExtractor; extractor.InputConnectionString = _InputConnectionString; db = extractor.Extract(dataToExtract); } else { if (String.IsNullOrEmpty(ScriptExtractorClass)) { throw new Exception("For script extraction type, scriptextractorclass is required"); } Type scriptExtractorClass = Type.GetType(ScriptExtractorClass); if (scriptExtractorClass == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", scriptExtractorClass)); } IScriptExtractor scriptExtractor = (IScriptExtractor)Activator.CreateInstance(scriptExtractorClass); if (_InputFiles == null) { throw new Exception("InputFiles must be specified."); } foreach (ITaskItem file in _InputFiles) { scriptExtractor.InputFiles.Add(file.ItemSpec); } statementCol = scriptExtractor.Extract(dataToExtract); } Type outputGenClass = Type.GetType(_OutputGeneratorClass); if (outputGenClass == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", _OutputGeneratorClass)); } IOutputGenerator gen = (IOutputGenerator)Activator.CreateInstance(outputGenClass); if (gen.ExpectedInputType == ExpectedInputType.StatementCollection) { if (statementCol == null) { DatabaseToStatementCollectionConverter conv = new DatabaseToStatementCollectionConverter(); statementCol = conv.Convert(db); } Type scriptOutputGenClass = Type.GetType(_ScriptOutputGeneratorClass); if (((IStatementCollectionOutputGenerator)gen).RequiresScriptOutputHandler) { if (scriptOutputGenClass == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", _ScriptOutputGeneratorClass)); } IScriptOutputHandler scriptOutputGen = (IScriptOutputHandler)Activator.CreateInstance(scriptOutputGenClass); ((IStatementCollectionOutputGenerator)gen).ScriptOutputGen = scriptOutputGen; } if (String.IsNullOrEmpty(ScriptFileOutputGenerator)) { throw new Exception(String.Format("For output file type you must specify ScriptFileOutputGenerator")); } Type scriptFileOutputGeneratorType = Type.GetType(ScriptFileOutputGenerator); if (scriptFileOutputGeneratorType == null) { throw new Exception(String.Format("Couldn't create instance for type {0}", ScriptFileOutputGenerator)); } ((IStatementCollectionOutputGenerator)gen).ScriptFileOutputGenerator = (IScriptFileOutputGenerator)Activator.CreateInstance(scriptFileOutputGeneratorType); gen.OutputDir = OutputDir; ((IStatementCollectionOutputGenerator)gen).GenerateOutput(statementCol, dataToGenerateOutput); } else { StatementCollectionToDatabaseConverter conv = new StatementCollectionToDatabaseConverter(); db = conv.Convert(statementCol); gen.OutputDir = OutputDir; ((IDBSchemaOutputGenerator)gen).GenerateOutput(db, dataToGenerateOutput); } return(true); }
public ExtractingDatabaseInitializationService(IDatabaseExtractor extractor, IDatabasePathProvider pathProvider) { _extractor = extractor; _pathProvider = pathProvider; }
public Processor(IDatabaseExtractor databaseExtractor, IFileWriter fileWriter) { _databaseExtractor = databaseExtractor ?? throw new ArgumentNullException(nameof(databaseExtractor)); _fileWriter = fileWriter ?? throw new ArgumentNullException(nameof(fileWriter)); }