示例#1
0
        public void Migrate()
        {
            if (!GemFireXDDbi.SchemaExists(SchemaName))
            {
                Migrator.OnMigrateEvent(new MigrateEventArgs(
                                            Result.Unknown, String.Format("Migrating database schema {0}...", SchemaName)));

                GemFireXDDbi.Create(String.Format("CREATE SCHEMA {0}", this.SchemaName));
            }

            if ((!this.Created) && (!GemFireXDDbi.TableExists(this.TableName)))
            {
                foreach (String tblFullName in referencedTables)
                {
                    if (!this.TableFullName.Equals(tblFullName))
                    {
                        Migrator.GetTableFromList(tblFullName).Migrate();
                    }
                }

                Migrator.OnMigrateEvent(new MigrateEventArgs(
                                            Result.Unknown, String.Format("Creating table {0}...", TableFullName)));

                Helper.Log(GetCreateTableSql());
                GemFireXDDbi.Create(GetCreateTableSql());
                this.Created = true;

                Helper.Log(String.Format("Table {0} created", TableFullName));

                MigrateData();
            }
        }
示例#2
0
        public bool Validate(DataTable origTable)
        {
            Migrator.OnMigrateEvent(new MigrateEventArgs(
                                        Result.Unknown, String.Format("Validating table {0} data...", TableFullName)));

            DataTable destTable = GemFireXDDbi.GetTableData(TableFullName);

            for (int i = 0; i < origTable.Rows.Count; i++)
            {
                for (int j = 0; j < origTable.Columns.Count; j++)
                {
                    if (!Validate(destTable.Rows[i][j], origTable.Rows[i][j]))
                    {
                        Helper.Log(String.Format(
                                       "Validate failed on table {0}, row {1}, column {2}", TableFullName, i, j));

                        Helper.Log(String.Format("dest -> {0}; orig -> {1}",
                                                 destTable.Rows[i][j].ToString(), origTable.Rows[i][j].ToString()));

                        Migrator.Errorred = true;
                        return(false);
                    }
                }
            }

            Helper.Log(String.Format("Table {0} validated", TableFullName));
            return(true);
        }
示例#3
0
        private void MigrateData()
        {
            Helper.Log(String.Format("Start migrating table {0}", TableFullName));

            DataTable sqlTable = null;

            Migrator.OnMigrateEvent(new MigrateEventArgs(
                                        Result.Unknown, String.Format("Copying table {0} data...", TableFullName)));

            sqlTable = SQLSvrDbi.GetTableData(TableFullName);

            GFXDClientConnection connection = GemFireXDDbi.OpenNewConnection();

            GemFireXDDbi.BatchInsert(connection, GetInsertSql(), sqlTable, this);

            while (connection.State == ConnectionState.Executing)
            {
                Helper.Log("Connection is still executing");
                Thread.Sleep(5000);
            }

            Validate(sqlTable);

            Helper.Log(String.Format("Table {0} migrated", TableFullName));
        }
示例#4
0
        public void Migrate()
        {
            try
            {
                if (!GemFireXDDbi.IndexExists(IndexName) && !Created)
                {
                    Migrator.OnMigrateEvent(new MigrateEventArgs(
                                                Result.Unknown, String.Format("Migrating index {0}...", IndexName)));

                    Util.Helper.Log(GetCreateIndexSql());
                    GemFireXDDbi.Create(GetCreateIndexSql());
                    Util.Helper.Log(String.Format("Index {0} created", IndexName));

                    this.Created = true;
                }
                else
                {
                    Util.Helper.Log(String.Format("Index {0} already exists", IndexName));
                }
            }
            catch (Exception e)
            {
                Migrator.Errorred = true;
                Util.Helper.Log(e);
            }
        }
示例#5
0
        public void Migrate()
        {
            String sql = GetCreateModuleSql();

            try
            {
                Util.Helper.Log(sql);
                GemFireXDDbi.Create(sql);
                Util.Helper.Log(String.Format("Module {0} created", ModuleName));
            }
            catch (Exception e)
            {
                Migrator.Errorred = true;
                Util.Helper.Log(e);
            }
        }
示例#6
0
        private void AddColumns()
        {
            DataTable dt = SQLSvrDbi.GetTableColumns(SchemaName, TableName);

            if (dt != null & dt.Rows.Count > 0)
            {
                foreach (DataRow row in dt.Rows)
                {
                    DbField field = new DbField();

                    String colName = row["ColumnName"].ToString().Trim();

                    if (GemFireXDDbi.IsReservedWord(colName))
                    {
                        colName = String.Format("\"{0}\"", colName);
                    }
                    if (colName.Contains(" "))
                    {
                        colName = colName.Replace(" ", "_");
                    }

                    field.FieldName = colName;

                    if (!String.IsNullOrEmpty(row["CharMaxLength"].ToString()))
                    {
                        field.Length = Convert.ToInt32(row["CharMaxLength"].ToString());
                    }

                    field.FieldType = DbTypeMap.GetGFXDTypeFromSqlType(row["DataType"].ToString());

                    if (row["IsNullable"].ToString().Trim() == "YES")
                    {
                        field.IsNullable = true;
                    }

                    Columns.Add(field);
                }
            }
        }
示例#7
0
 public bool Validate()
 {
     return(GemFireXDDbi.TableExists(TableName));
 }