예제 #1
0
        public int ExecuteDataPlan(nDumpOptions nDumpOptions, ILogger logger, DataPlan dataPlan)
        {
            if (nDumpOptions.Export)
            {
                var queryExecutor = new QueryExecutor(nDumpOptions.SourceConnectionString);
                ISelectionFilteringStrategy filteringStrategy = nDumpOptions.ApplyFilters ? (ISelectionFilteringStrategy)
                                                                                         new UseFilterIfPresentStrategy(queryExecutor, logger)
                                                                    : new IgnoreFilterStrategy();
                var exporter = new SqlDataExporter(logger, nDumpOptions.CsvDirectory,
                                                   queryExecutor, filteringStrategy);
                try
                {
                    exporter.ExportToCsv(dataPlan.SetupScripts, dataPlan.DataSelects);

                }
                catch (nDumpApplicationException ex)
                {

                    logger.Log("Export To Csv Failed.\n" + ex.StackTrace);
                    return -1;

                }
            }
            if (nDumpOptions.Transform)
            {
                var transformer = new DataTransformer(nDumpOptions.SqlDirectory, nDumpOptions.CsvDirectory,
                                                      logger);
                try
                {

                    transformer.ConvertCsvToSql(dataPlan.DataSelects);

                }
                catch (nDumpApplicationException ex)
                {

                    logger.Log("Export To Csv Failed.\n" + ex.StackTrace);
                    return -1;

                }
            }
            if (nDumpOptions.Import)
            {
                var importer = new SqlDataImporter(logger,
                                                   new QueryExecutor(nDumpOptions.TargetConnectionString), new IncrementingNumberSqlScriptFileStrategy(nDumpOptions.SqlDirectory));
                try
                {
                    importer.RemoveDataAndImportFromSqlFiles(dataPlan.DataSelects);
                }
                catch (nDumpApplicationException ex)
                {

                    logger.Log("Import Of Sql Failed.\n" + ex.Message + "\n" + ex.StackTrace);
                    return -1;

                }

            }
            return 0;
        }
예제 #2
0
        public void ShouldNotExecuteEmptyScriptFoundByStrategy()
        {
            var queryExecutor = new Mock<IQueryExecutor>();
            var scriptStrategy = new Mock<ISqlScriptFileStrategy>();

            var table1 = new SqlTableSelect("1");
            scriptStrategy.Setup(ss => ss.GetEnumeratorFor(table1.TableName)).Returns(new List<SqlScript> { new SqlScript("01", "01"), new SqlScript("02", String.Empty) }.GetEnumerator());
            queryExecutor.Setup(qe => qe.ExecuteNonQueryStatement("01")).Verifiable();
            queryExecutor.Setup(qe => qe.ExecuteNonQueryStatement("02")).Throws(new Exception());
            var sqlDataImporter = new SqlDataImporter(new NullLogger(), queryExecutor.Object, scriptStrategy.Object);

            sqlDataImporter.InsertDataIntoDesinationTables(new List<SqlTableSelect> { table1 });
            queryExecutor.Verify();
            scriptStrategy.VerifyAll();
        }
예제 #3
0
        public void ShouldDeleteFromTablesInReverseOrder()
        {
            var queryExecutor= new Mock<IQueryExecutor>();

            var sqlDataImporter = new SqlDataImporter(new NullLogger(), queryExecutor.Object,null);

            var calls = new List<string>();
            var table1 = new SqlTableSelect("1");
            var table2=new SqlTableSelect("2");
            var delete2 = "delete from 2";
            queryExecutor.Setup(qe => qe.ExecuteNonQueryStatement(delete2)).Callback((string s)=> calls.Add(s));
            var delete1 = "delete from 1";
            queryExecutor.Setup(qe => qe.ExecuteNonQueryStatement(delete1)).Callback((string s) => calls.Add(s));
            sqlDataImporter.DeleteDataFromAllDestinationTables(new List<SqlTableSelect>{table1,table2});
            Assert.AreEqual(delete1,calls[1]);
            Assert.AreEqual(delete2,calls[0]);
        }