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; }
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(); }
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]); }