Example #1
0
        public DirectToDbApplier(QueryExecuter queryExecuter, IDatabaseSchemaVersionManager schemaVersionManager, QueryStatementSplitter splitter, IDbmsSyntax dbmsSyntax, string changeLogTableName, TextWriter infoTextWriter)
        {
            if (queryExecuter == null)
            {
                throw new ArgumentNullException("queryExecuter");
            }

            if (schemaVersionManager == null)
            {
                throw new ArgumentNullException("schemaVersionManager");
            }

            if (splitter == null)
            {
                throw new ArgumentNullException("splitter");
            }

            if (infoTextWriter == null)
            {
                throw new ArgumentNullException("infoTextWriter");
            }

            this.queryExecuter        = queryExecuter;
            this.schemaVersionManager = schemaVersionManager;
            this.splitter             = splitter;
            this.dbmsSyntax           = dbmsSyntax;
            this.changeLogTableName   = changeLogTableName;
            this.infoTextWriter       = infoTextWriter;
        }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DatabaseSchemaVersionManager" /> class.
 /// </summary>
 /// <param name="queryExecuter">The query executer.</param>
 /// <param name="syntax">The syntax.</param>
 /// <param name="changeLogTableName">Name of the change log table.</param>
 /// <param name="autoCreateChangeLogTable">if set to <c>true</c> the change log table will automatically be created.</param>
 public DatabaseSchemaVersionManager(QueryExecuter queryExecuter, IDbmsSyntax syntax, string changeLogTableName, bool autoCreateChangeLogTable)
 {
     this.syntax                   = syntax;
     this.queryExecuter            = queryExecuter;
     this.changeLogTableName       = changeLogTableName;
     this.AutoCreateChangeLogTable = autoCreateChangeLogTable;
 }
        public DirectToDbApplier(
            QueryExecuter queryExecuter,
            DatabaseSchemaVersionManager schemaVersionManager,
            QueryStatementSplitter splitter,
            IDbmsSyntax dbmsSyntax,
            string changeLogTableName,
            TextWriter infoTextWriter)
        {
            if (queryExecuter == null)
                throw new ArgumentNullException("queryExecuter");

            if (schemaVersionManager == null)
                throw new ArgumentNullException("schemaVersionManager");

            if (splitter == null)
                throw new ArgumentNullException("splitter");

            if (infoTextWriter == null)
                throw new ArgumentNullException("infoTextWriter");

            this.queryExecuter = queryExecuter;
            this.schemaVersionManager = schemaVersionManager;
            this.splitter = splitter;
            this.dbmsSyntax = dbmsSyntax;
            this.changeLogTableName = changeLogTableName;
            this.infoTextWriter = infoTextWriter;
        }
        public TemplateBasedApplier(
            TextWriter writer,
            IDbmsSyntax syntax,
            string changeLogTableName,
            string delimiter,
            IDelimiterType delimiterType,
            DirectoryInfo templateDirectory)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }

            if (syntax == null)
            {
                throw new ArgumentNullException("syntax");
            }

            this.writer             = writer;
            this.syntax             = syntax;
            this.delimiter          = delimiter;
            this.changeLogTableName = changeLogTableName;

            this.delimiterType = delimiterType ?? new NormalDelimiter();

            this.templateDirectory = templateDirectory;
        }
        protected void SetUp()
        {
            var factory  = new DbmsFactory(Dbms, ConnectionString);
            var executer = new QueryExecuter(factory);

            this.syntax           = factory.CreateDbmsSyntax();
            databaseSchemaVersion = new DatabaseSchemaVersionManager(executer, this.syntax, TableName);
        }
Example #6
0
        protected override void SetUp()
        {
            var factory  = new DbmsFactory(Dbms, firebirdConnectionString, firebirdSqlDataFirebirdClient);
            var executer = new QueryExecuter(factory);

            this.syntax = factory.CreateDbmsSyntax();

            databaseSchemaVersion = new DatabaseSchemaVersionManager(executer, this.syntax, TableName);
        }
        protected override void SetUp()
        {
            var factory = new DbmsFactory(Dbms, firebirdConnectionString, firebirdSqlDataFirebirdClient);
            var executer = new QueryExecuter(factory);

            this.syntax = factory.CreateDbmsSyntax();

            databaseSchemaVersion = new DatabaseSchemaVersionManager(executer, this.syntax, TableName);
        }
 public UndoTemplateBasedApplier(
     TextWriter writer,
     IDbmsSyntax syntax,
     string changeLogTableName,
     string delimiter,
     IDelimiterType delimiterType,
     DirectoryInfo templateDirectory)
     : base(writer, syntax, changeLogTableName, delimiter, delimiterType, templateDirectory)
 {
 }
        protected override void SetUp()
        {
            var factory = new DbmsFactory(Dbms, ConnectionString, mySqlDataDll);
            var executer = new QueryExecuter(factory);

            this.syntax = factory.CreateDbmsSyntax();
            syntax.SetDefaultDatabaseName(connectionString);

            databaseSchemaVersion = new DatabaseSchemaVersionManager(executer, this.syntax, TableName);
        }
 public DirectToDbApplierAccessor(
     QueryExecuter queryExecuter, 
     DatabaseSchemaVersionManager schemaVersionManager, 
     QueryStatementSplitter splitter, 
     IDbmsSyntax dbmsSyntax,
     string changeLogTableName,
     TextWriter infoTextWriter)
     : base(queryExecuter, schemaVersionManager, splitter, dbmsSyntax, changeLogTableName, infoTextWriter)
 {
 }
 public DirectToDbApplierAccessor(
     QueryExecuter queryExecuter,
     DatabaseSchemaVersionManager schemaVersionManager,
     QueryStatementSplitter splitter,
     IDbmsSyntax dbmsSyntax,
     string changeLogTableName,
     TextWriter infoTextWriter)
     : base(queryExecuter, schemaVersionManager, splitter, dbmsSyntax, changeLogTableName, infoTextWriter)
 {
 }
 public UndoTemplateBasedApplier(
     TextWriter writer,
     IDbmsSyntax syntax,
     string changeLogTableName,
     string delimiter,
     IDelimiterType delimiterType,
     DirectoryInfo templateDirectory)
     : base(writer, syntax, changeLogTableName, delimiter, delimiterType, templateDirectory)
 {
 }
Example #13
0
        protected override void SetUp()
        {
            var factory  = new DbmsFactory(Dbms, ConnectionString, mySqlDataDll);
            var executer = new QueryExecuter(factory);

            this.syntax = factory.CreateDbmsSyntax();
            syntax.SetDefaultDatabaseName(connectionString);

            databaseSchemaVersion = new DatabaseSchemaVersionManager(executer, this.syntax, TableName);
        }
 	public ToPrintStreamDeployer(DatabaseSchemaVersionManager schemaManager, DirectoryInfo dir,
                                  TextWriter outputPrintStream,
                                  IDbmsSyntax dbmsSyntax, bool useTransaction, TextWriter undoOutputPrintStream)
     {
         this.schemaManager = schemaManager;
         this.dir = dir;
         doOutputPrintStream = outputPrintStream;
         this.dbmsSyntax = dbmsSyntax;
     	this.useTransaction = useTransaction;
     	this.undoOutputPrintStream = undoOutputPrintStream;
     }
 public ToPrintStreamDeployer(DatabaseSchemaVersionManager schemaManager, DirectoryInfo dir,
                              TextWriter outputPrintStream,
                              IDbmsSyntax dbmsSyntax, bool useTransaction, TextWriter undoOutputPrintStream)
 {
     this.schemaManager         = schemaManager;
     this.dir                   = dir;
     doOutputPrintStream        = outputPrintStream;
     this.dbmsSyntax            = dbmsSyntax;
     this.useTransaction        = useTransaction;
     this.undoOutputPrintStream = undoOutputPrintStream;
 }
        public ChangeScriptExecuter(TextWriter printStream, IDbmsSyntax dbmsSyntax, bool useTransaction)
        {
            output          = printStream;
            _dbmsSyntax     = dbmsSyntax;
            _useTransaction = useTransaction;
            /* Header data: information and control settings for the entire script. */
            DateTime now = DateTime.Now;

            output.WriteLine("-- Script generated at " + now.ToString(new DateTimeFormatInfo().SortableDateTimePattern));
            output.WriteLine();
            output.WriteLine(dbmsSyntax.GenerateScriptHeader());
        }
     public ChangeScriptExecuter(TextWriter printStream, IDbmsSyntax dbmsSyntax, bool useTransaction,
                                 Encoding encoding)
     {
         output = printStream;
     	_dbmsSyntax = dbmsSyntax;
 		_useTransaction = useTransaction;
         _encoding = encoding;
         /* Header data: information and control settings for the entire script. */
         DateTime now = DateTime.Now;
         output.WriteLine("-- Script generated at " + now.ToString(new DateTimeFormatInfo().SortableDateTimePattern));
         output.WriteLine();
         output.WriteLine(dbmsSyntax.GenerateScriptHeader());
     }
        public PowershellPrintStreamDeployer(DatabaseSchemaVersionManager schemaManager, ChangeScriptRepository repository,
                                             TextWriter outputPrintStream,
                                             IDbmsSyntax dbmsSyntax, bool useTransaction,
                                             TextWriter undoOutputPrintStream,
                                             TextWriter infoPrintStream)
        {   
            this.schemaManager = schemaManager;
            this.doOutputPrintStream = outputPrintStream;
            this.dbmsSyntax = dbmsSyntax;
            this.useTransaction = useTransaction;
            this.undoOutputPrintStream = undoOutputPrintStream;
            this.infoPrintStream = infoPrintStream;
            this.repository = repository;

        }
Example #19
0
        public void nao_criar_tabela_changelog()
        {
            const string conteudoSql  = "Create Table tabelaTeste (id int not null, name varchar(45) not null, primary key (id));";
            var          changeScript = new ChangeScript("1.0.0.0", 1);

            splitter.Setup(s => s.Split(It.IsAny <string>())).Returns <string>(s => new[] { s });
            dbmsSyntax = new MsSqlDbmsSyntax();
            var changeLogTableSqlScript = dbmsSyntax.CreateChangeLogTableSqlScript(ChangeLogTableName);

            var directToDbApplier = new DirectToDbApplier(queryExecuter.Object, schemaVersionManager.Object, splitter.Object, dbmsSyntax, ChangeLogTableName, System.Console.Out);

            directToDbApplier.ApplyScriptContent(changeScript, conteudoSql, false);

            schemaVersionManager.Verify(x => x.RecordScriptStatus(changeScript, ScriptStatus.SucessRevisedUser, It.IsAny <string>()), Times.Once);
            queryExecuter.Verify(x => x.Execute(changeLogTableSqlScript), Times.Never());
        }
Example #20
0
        public override bool Execute()
        {
            bool result = false;

            try
            {
                LogTaskProperties();

                using (TextWriter outputPrintStream = new StreamWriter(outputfile.FullName))
                {
                    TextWriter undoOutputPrintStream = null;
                    if (undoOutputfile != null)
                    {
                        undoOutputPrintStream = new StreamWriter(undoOutputfile.FullName);
                    }
                    DbmsFactory factory    = new DbmsFactory(dbType, dbConnection);
                    IDbmsSyntax dbmsSyntax = factory.CreateDbmsSyntax(DatabaseSchemaVersionManager.DEFAULT_CHANGE_OWNER);
                    DatabaseSchemaVersionManager databaseSchemaVersion = new DatabaseSchemaVersionManager(factory, deltaSet, null);

                    ToPrintStreamDeployer toPrintSteamDeployer = new ToPrintStreamDeployer(databaseSchemaVersion, dir, outputPrintStream, dbmsSyntax, useTransaction, undoOutputPrintStream);
                    toPrintSteamDeployer.DoDeploy(lastChangeToApply);

                    if (undoOutputPrintStream != null)
                    {
                        undoOutputPrintStream.Close();
                    }
                }
                result = true;
            }
            catch (DbDeployException ex)
            {
                Log.LogErrorFromException(ex, true);
                Console.Error.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Log.LogErrorFromException(ex, true);
                Console.Error.WriteLine("Failed to apply changes: " + ex.Message);
                Console.Error.WriteLine("Stack Trace:");
                Console.Error.Write(ex.StackTrace);
            }
            return(result);
        }
Example #21
0
        protected override void ExecuteTask()
        {
            try
            {
                Encoding encoding = new OutputFileEncoding(outputFileEncoding).AsEncoding();
                using (TextWriter outputPrintStream = new StreamWriter(outputfile.FullName, true, encoding))
                {
                    TextWriter undoOutputPrintStream = null;
                    if (undoOutputfile != null)
                    {
                        undoOutputPrintStream = new StreamWriter(undoOutputfile.FullName, true, encoding);
                    }

                    DbmsFactory factory = new DbmsFactory(dbType, dbConnection);
                    DatabaseSchemaVersionManager databaseSchemaVersion = new DatabaseSchemaVersionManager(factory, deltaSet, GetCurrentDbVersion(), changeLogTable, changeOwner);

                    IDbmsSyntax           dbmsSyntax           = factory.CreateDbmsSyntax(changeOwner);
                    ToPrintStreamDeployer toPrintSteamDeployer = new ToPrintStreamDeployer(databaseSchemaVersion, dir, outputPrintStream, dbmsSyntax, useTransaction, undoOutputPrintStream);
                    toPrintSteamDeployer.DoDeploy(lastChangeToApply);

                    if (undoOutputPrintStream != null)
                    {
                        undoOutputPrintStream.Close();
                    }
                }
            }
            catch (DbDeployException ex)
            {
                Console.Error.WriteLine(ex.Message);
                throw new BuildException(ex.Message);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine("Failed to apply changes: " + ex);
                Console.Error.WriteLine("Stack Trace:");
                Console.Error.Write(ex.StackTrace);
                throw new BuildException(ex.Message);
            }
        }
        public void SetUp()
        {
            IDbmsSyntax   syntax       = null;
            QueryExecuter nullExecuter = null;

            var factory = new Mock <DbmsFactory>("mssql", string.Empty);

            factory.Setup(f => f.CreateConnection()).Returns(new Mock <IDbConnection>().Object);
            factory.Setup(f => f.CreateDbmsSyntax()).Returns(syntax);

            this.queryExecuter = new Mock <QueryExecuter>(factory.Object);

            this.schemaVersionManager = new Mock <DatabaseSchemaVersionManager>(nullExecuter, syntax, "empty", false);

            this.splitter = new Mock <QueryStatementSplitter>();

            this.applier = new DirectToDbApplierAccessor(
                this.queryExecuter.Object,
                this.schemaVersionManager.Object,
                this.splitter.Object,
                System.Console.Out);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SqlCmdApplier" /> class.
        /// </summary>
        /// <param name="connectionString">The database connection string.</param>
        /// <param name="schemaVersionManager">The schema version manager.</param>
        /// <param name="dbmsSyntax">Database syntax</param>
        /// <param name="changeLogTableName">ChangeLog table name</param>
        /// <param name="infoTextWriter">The info text writer.</param>
        public SqlCmdApplier(
            string connectionString,
            DatabaseSchemaVersionManager schemaVersionManager,
            IDbmsSyntax dbmsSyntax,
            string changeLogTableName,
            TextWriter infoTextWriter)
        {
            if (string.IsNullOrWhiteSpace(connectionString))
            {
                throw new ArgumentNullException("connectionString");
            }

            if (schemaVersionManager == null)
            {
                throw new ArgumentNullException("schemaVersionManager");
            }

            if (dbmsSyntax == null)
            {
                throw new ArgumentNullException("dbmsSyntax");
            }

            if (changeLogTableName == null)
            {
                throw new ArgumentNullException("changeLogTableName");
            }

            if (infoTextWriter == null)
            {
                throw new ArgumentNullException("infoTextWriter");
            }

            this.schemaVersionManager = schemaVersionManager;
            this.dbmsSyntax = dbmsSyntax;
            this.changeLogTableName = changeLogTableName;
            this.infoTextWriter = infoTextWriter;
            this.connectionString = connectionString;
        }
Example #24
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SqlCmdApplier" /> class.
        /// </summary>
        /// <param name="connectionString">The database connection string.</param>
        /// <param name="schemaVersionManager">The schema version manager.</param>
        /// <param name="dbmsSyntax">Database syntax</param>
        /// <param name="changeLogTableName">ChangeLog table name</param>
        /// <param name="infoTextWriter">The info text writer.</param>
        public SqlCmdApplier(
            string connectionString,
            DatabaseSchemaVersionManager schemaVersionManager,
            IDbmsSyntax dbmsSyntax,
            string changeLogTableName,
            TextWriter infoTextWriter)
        {
            if (string.IsNullOrWhiteSpace(connectionString))
            {
                throw new ArgumentNullException("connectionString");
            }

            if (schemaVersionManager == null)
            {
                throw new ArgumentNullException("schemaVersionManager");
            }

            if (dbmsSyntax == null)
            {
                throw new ArgumentNullException("dbmsSyntax");
            }

            if (changeLogTableName == null)
            {
                throw new ArgumentNullException("changeLogTableName");
            }

            if (infoTextWriter == null)
            {
                throw new ArgumentNullException("infoTextWriter");
            }

            this.schemaVersionManager = schemaVersionManager;
            this.dbmsSyntax           = dbmsSyntax;
            this.changeLogTableName   = changeLogTableName;
            this.infoTextWriter       = infoTextWriter;
            this.connectionString     = connectionString;
        }
        public void SetUp()
        {
            dbmsSyntax = null;
            QueryExecuter nullExecuter = null;

            var factory = new Mock<DbmsFactory>("mssql", string.Empty, null);
            factory.Setup(f => f.CreateConnection()).Returns(new Mock<IDbConnection>().Object);
            factory.Setup(f => f.CreateDbmsSyntax()).Returns(dbmsSyntax);

            this.queryExecuter = new Mock<QueryExecuter>(factory.Object);

            this.schemaVersionManager = new Mock<DatabaseSchemaVersionManager>(nullExecuter, dbmsSyntax, "empty");

            this.splitter = new Mock<QueryStatementSplitter>();

            this.applier = new DirectToDbApplierAccessor(
                this.queryExecuter.Object,
                this.schemaVersionManager.Object,
                this.splitter.Object,
                dbmsSyntax,
                ChangeLogTableName,
                System.Console.Out);
        }
        public TemplateBasedApplier(
            TextWriter writer,
            IDbmsSyntax syntax,
            string changeLogTableName,
            string delimiter,
            IDelimiterType delimiterType,
            DirectoryInfo templateDirectory)
        {
            if (writer == null)
                throw new ArgumentNullException("writer");

            if (syntax == null)
                throw new ArgumentNullException("syntax");

            this.writer = writer;
            this.syntax = syntax;
            this.delimiter = delimiter;
            this.changeLogTableName = changeLogTableName;

            this.delimiterType = delimiterType ?? new NormalDelimiter();
            
            this.templateDirectory = templateDirectory;
        }
        public void nao_criar_tabela_changelog()
        {
            const string conteudoSql = "Create Table tabelaTeste (id int not null, name varchar(45) not null, primary key (id));";
            var changeScript = new ChangeScript("1.0.0.0", 1);
            splitter.Setup(s => s.Split(It.IsAny<string>())).Returns<string>(s => new[] { s });
            dbmsSyntax = new MsSqlDbmsSyntax();
            var changeLogTableSqlScript = dbmsSyntax.CreateChangeLogTableSqlScript(ChangeLogTableName);

            var directToDbApplier = new DirectToDbApplier(queryExecuter.Object, schemaVersionManager.Object, splitter.Object, dbmsSyntax, ChangeLogTableName, System.Console.Out);
            directToDbApplier.ApplyScriptContent(changeScript, conteudoSql, false);

            schemaVersionManager.Verify(x => x.RecordScriptStatus(changeScript, ScriptStatus.SucessRevisedUser, It.IsAny<string>()), Times.Once);
            queryExecuter.Verify(x => x.Execute(changeLogTableSqlScript), Times.Never());
        }
Example #28
0
 public StubSchemaManager(IDbmsSyntax syntax, bool changeLogTableExists)
     : base(null, syntax, "ChangeLog")
 {
     this.changeLogTableExists = changeLogTableExists;
 }
 public DatabaseSchemaVersionManager(QueryExecuter queryExecuter, IDbmsSyntax syntax, string changeLogTableName)
 {
     this.syntax = syntax;
     this.queryExecuter = queryExecuter;
     this.changeLogTableName = changeLogTableName;
 }
 public ChangeScriptExecuter(TextWriter printStream, IDbmsSyntax dbmsSyntax, bool useTransaction)
     : this(printStream, dbmsSyntax, useTransaction, DefaultEncoding) {}
Example #31
0
 public StubSchemaManager(IDbmsSyntax syntax) : base(null, syntax, "changelog")
 {
 }
Example #32
0
 public StubSchemaManager(IDbmsSyntax syntax)
     : base(null, syntax, "ChangeLog", true)
 {
 }
 public StubSchemaManager(IDbmsSyntax syntax, bool changeLogTableExists)
     : base(null, syntax, "ChangeLog")
 {
     this.changeLogTableExists = changeLogTableExists;
 }
 public StubSchemaManager(IDbmsSyntax syntax) : base(null, syntax, "changelog")
 {
 }