Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 public ExtractingDatabaseInitializationService(IDatabaseExtractor extractor, IDatabasePathProvider pathProvider)
 {
     _extractor    = extractor;
     _pathProvider = pathProvider;
 }
Ejemplo n.º 4
0
 public Processor(IDatabaseExtractor databaseExtractor, IFileWriter fileWriter)
 {
     _databaseExtractor = databaseExtractor ?? throw new ArgumentNullException(nameof(databaseExtractor));
     _fileWriter        = fileWriter ?? throw new ArgumentNullException(nameof(fileWriter));
 }