コード例 #1
0
ファイル: Main.cs プロジェクト: maestropanel/mpimport
        private void _migrate_Action(MigrateManager m, ApiAction e)
        {
            this.UIThread(delegate
            {
                if (e == null)
                {
                    return;
                }

                progressBarFinish.Value = e.Count > progressBarFinish.Maximum ? progressBarFinish.Maximum : e.Count;

                labelFinisDomain.Text      = e.DomainName;
                labelFinishMessage.Text    = e.Message;
                labelFinishCounter.Text    = String.Format("{0}/{1}", e.Count, progressbarMaximum);
                labelFinishErrorCount.Text = e.ErrorCount.ToString();

                if (executeTask.IsCompleted)
                {
                    MessageBox.Show("Migration Complete", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    buttonShowLogs.Enabled = true;
                }

                if (executeTask.IsCanceled)
                {
                    MessageBox.Show("Operation cancelled by user", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    buttonShowLogs.Enabled = true;
                }

                if (executeTask.IsFaulted)
                {
                    MessageBox.Show("Error: " + executeTask.Exception.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    buttonShowLogs.Enabled = true;
                }
            });
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        private static void RegisterDatabaseCommands(MigrateManager migrateManager)
        {
            migrateManager.ServicesContainer.RegisterTransient <ICreateTableCommand, PostgresCreateTableCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IRenameTableCommand, PostgresRenameTableCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IDropTableCommand, PostgresDropTableCommand>();
            migrateManager.ServicesContainer.RegisterTransient <ITableValuesCommand, PostgresTableValuesCommand>();

            migrateManager.ServicesContainer.RegisterTransient <ICreateColumnCommand, PostgresCreateColumnCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IAlterColumnCommand, PostgresAlterColumnCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IRenameColumnCommand, PostgresRenameColumnCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IDropColumnCommand, PostgresDropColumnCommand>();

            migrateManager.ServicesContainer.RegisterTransient <ICreateColumnDefaultValueCommand, PostgresCreateColumnDefaultValueCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IDropColumnDefaultValueCommand, PostgresDropColumnDefaultValueCommand>();

            migrateManager.ServicesContainer.RegisterTransient <ICreateUniqueKeyCommand, PostgresCreateUniqueCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IDropUniqueKeyCommand, PostgresDropUniqueCommand>();

            migrateManager.ServicesContainer.RegisterTransient <ICreatePrimaryKeyCommand, PostgresCreatePrimaryKeyCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IDropPrimaryKeyCommand, PostgresDropPrimaryKeyCommand>();

            migrateManager.ServicesContainer.RegisterTransient <ICreateForeignKeyCommand, PostgresCreateForeignKeyCommand>();
            migrateManager.ServicesContainer.RegisterTransient <IDropForeignKeyCommand, PostgresDropForeignKeyCommand>();

            migrateManager.ServicesContainer.Register <IBeforeActualizationScriptCommand, PostgresBeforeActualizationScriptCommand>();
            migrateManager.ServicesContainer.Register <IAfterActualizationScriptCommand, PostgresAfterActualizationScriptCommand>();
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static MigrateManager UseEfCodeTablesManager(this MigrateManager migrateManager)
        {
            migrateManager.ServicesContainer.Register <ICodeTablesManager, EfCodeTablesManager>();
            migrateManager.ServicesContainer.Register <IMigrateValidator, EntityFrameworkMigrationValidator>();
            migrateManager.ServicesContainer.Register <ITableFinder, TableFinder>();

            migrateManager.UseSafeMode();
            return(migrateManager);
        }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static MigrateManager UseMetadataManager(this MigrateManager migrateManager)
        {
            migrateManager.ServicesContainer.Register <ICodeTablesManager, MetadataCodeTablesManager>();
            migrateManager.ServicesContainer.Register <IMigrateValidator, MetadataMigrationValidator>();
            migrateManager.ServicesContainer.Register <MetadataManager>();

            migrateManager.UseSafeMode();
            return(migrateManager);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            MigrateManager.Create(ConnectionString)
            .UseSqlServerDatabase()
            .UseMetadataManager()
            .Migrate();

            Console.WriteLine("Migrate success");
            Console.ReadLine();
        }
コード例 #6
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static MigrateManager UseMySqlServerDatabase(this MigrateManager migrateManager)
        {
            migrateManager.ServicesContainer.Register <IDatabaseTablesManager, MySqlDatabaseTablesManager>();
            migrateManager.ServicesContainer.Register <IDatabaseCreator, MySqlDatabaseCreator>();
            migrateManager.ServicesContainer.Register <IMigrationsHistoryRepository, MySqlMigrationsHistoryRepository>();
            migrateManager.ServicesContainer.Register <IColumnTypeMappingSource, MySqlColumnTypeMappingSource>();

            RegisterDatabaseCommands(migrateManager);
            return(migrateManager);
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: Bunyod545/SBFramework
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            MigrateManager.Create(ConnectionString)
            .UsePostgresServerDatabase()
            .UseEfCodeTablesManager()
            .Migrate();

            Console.WriteLine("Migrate success");
            Console.ReadLine();
        }
コード例 #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            TableAttribute.DefaultSchema = "testmetadatamigrator";

            MigrateManager.Create(ConnectionString)
            .UseMySqlServerDatabase()
            .UseMetadataManager()
            .Migrate();

            Console.WriteLine("Migrate success");
            Console.ReadLine();
        }
コード例 #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <param name="foreignKeyMetadata"></param>
        /// <returns></returns>
        private ForeignKeyInfo GetForeignKey(MetadataTableInfo table, ForeignKeyMetadata foreignKeyMetadata)
        {
            var foreignKey = new ForeignKeyInfo();

            foreignKey.Name   = foreignKeyMetadata.Name;
            foreignKey.Column = table.GetColumn(foreignKeyMetadata.Column.Name);
            foreignKey.Table  = table;

            foreignKey.ReferenceTable  = GetReferenceTable(foreignKeyMetadata);
            foreignKey.ReferenceColumn = GetReferenceColumn(foreignKey, foreignKeyMetadata);

            MigrateManager.CorrectName(foreignKey);
            return(foreignKey);
        }
コード例 #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tableInfo"></param>
        /// <param name="columnMetadata"></param>
        /// <returns></returns>
        private ColumnInfo GetColumn(TableInfo tableInfo, ColumnMetadata columnMetadata)
        {
            var columnInfo = new ColumnInfo();

            columnInfo.Table        = tableInfo;
            columnInfo.IsAllowNull  = columnMetadata.IsAllowNull;
            columnInfo.Name         = columnMetadata.Name;
            columnInfo.Description  = columnMetadata.Decription;
            columnInfo.DefaultValue = columnMetadata.DefaultValue;
            columnInfo.Identity     = GetColumnIdentity(columnMetadata);
            columnInfo.Type         = new MetadataColumnTypeInfo(this, columnMetadata);

            MigrateManager.CorrectName(columnInfo);
            return(columnInfo);
        }
コード例 #11
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static MigrateManager UsePostgresServerDatabase(this MigrateManager migrateManager)
        {
            migrateManager.ServicesContainer.Register <IDatabaseTablesManager, PostgresDatabaseTablesManager>();
            migrateManager.ServicesContainer.Register <IDatabaseCreator, PostgresDatabaseCreator>();
            migrateManager.ServicesContainer.Register <IMigrationsHistoryRepository, PostgresMigrationsHistoryRepository>();
            migrateManager.ServicesContainer.Register <IColumnTypeMappingSource, PostgresColumnTypeMappingSource>();

            migrateManager.ServicesContainer.Register <PostgresTableManager>();
            migrateManager.ServicesContainer.Register <PostgresColumnManager>();
            migrateManager.ServicesContainer.Register <PostgresPrimaryKeyManager>();
            migrateManager.ServicesContainer.Register <PostgresUniqueKeyManager>();
            migrateManager.ServicesContainer.Register <PostgresForeignKeyManager>();

            RegisterDatabaseCommands(migrateManager);
            return(migrateManager);
        }
コード例 #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tableMetadata"></param>
        /// <returns></returns>
        private MetadataTableInfo GetTableInfo(TableMetadata tableMetadata)
        {
            var databaseTablesManager = MigrateManager.ServicesContainer.GetService <IDatabaseTablesManager>();
            var tableInfo             = new MetadataTableInfo();

            tableInfo.TableMetadata = tableMetadata;
            tableInfo.Name          = tableMetadata.Name;
            tableInfo.Description   = tableMetadata.Decription;
            tableInfo.Schema        = tableMetadata.Schema ?? databaseTablesManager?.DefaultSchema;
            MigrateManager.CorrectName(tableInfo);

            tableInfo.Columns     = GetColumns(tableInfo, tableMetadata);
            tableInfo.PrimaryKey  = GetPrimaryKey(tableInfo, tableMetadata);
            tableInfo.TableValues = GetTableValues(tableInfo, tableMetadata);

            return(tableInfo);
        }
コード例 #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tableInfo"></param>
        /// <param name="tableMetadata"></param>
        /// <returns></returns>
        private PrimaryKeyInfo GetPrimaryKey(MetadataTableInfo tableInfo, TableMetadata tableMetadata)
        {
            var primaryKeyMetadata = tableMetadata.PrimaryKey;

            if (primaryKeyMetadata == null)
            {
                return(null);
            }

            var primaryKey = new PrimaryKeyInfo();

            primaryKey.Table         = tableInfo;
            primaryKey.Name          = primaryKeyMetadata.Name;
            primaryKey.PrimaryColumn = tableInfo.GetColumn(primaryKeyMetadata.PrimaryColumn?.Name);

            MigrateManager.CorrectName(primaryKey);
            return(primaryKey);
        }
コード例 #14
0
        private void MigratePage()
        {
            if (m2v.HasValue || !string.IsNullOrEmpty(Request.QueryString["m2vsetup"]))
            {
                WebForms.RegisterClientScriptBlock(Page, "m2vStyle", "<div class='style-wrapper'><style type=\"text/css\">#dnn_ContentPane >.DnnModule{display:none !important;}</style></div>", false);
            }

            //Only work when call is not from Iframe like page,role etc extension,
            if (string.IsNullOrEmpty(Request.QueryString["mid"]) && string.IsNullOrEmpty(Request.QueryString["icp"]))
            {
                if (m2v.HasValue && !string.IsNullOrEmpty(Request.QueryString["SkinSrc"]) && Request.QueryString["SkinSrc"].ToLower() == "[G]Skins/Vanjaro/Base".ToLower() && PortalSettings.UserInfo.IsInRole("Administrators"))
                {
                    Pages page = GetPage();
                    if (page != null && !page.IsPublished)
                    {
                        if (!m2v.Value && !page.Content.Contains("data-m2v"))
                        {
                            HtmlDocument html = new HtmlDocument();
                            html.LoadHtml(page.Content.ToString());
                            page.Content = MigrateManager.MigrateInjectBlocks(PortalSettings, html);
                            PageManager.UpdatePage(page, PortalSettings.UserInfo.UserID);
                            Response.Redirect(NavigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "", "m2v=true", "skinsrc=[g]skins/vanjaro/base", "containersrc=[g]containers/vanjaro/base"));
                        }

                        // Redirect if Page already migrated
                        if (page.Content.ToString().Contains("data-m2v") && !m2v.Value)
                        {
                            Response.Redirect(NavigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "", "m2v=true", "skinsrc=[g]skins/vanjaro/base", "containersrc=[g]containers/vanjaro/base"));
                        }
                        else
                        {
                            if (!(!string.IsNullOrEmpty(Request.QueryString["pv"]) && Request.QueryString["pv"] == "true"))
                            {
                                WebForms.RegisterStartupScript(Page, "MigratePage", "<script type=\"text/javascript\" vanjarocore=\"true\">" + MigrateManager.GetMigratePageToastMarkup(Page) + "</script> <style type=\"text/css\">" + MigrateManager.GetMigratePageCSS(Page) + "</style>", false);
                            }
                        }
                    }
                }
            }
        }
コード例 #15
0
            internal static string MigrateInjectBlocks(PortalSettings PortalSettings, HtmlDocument html)
            {
                IEnumerable <HtmlNode> query     = html.DocumentNode.Descendants("div");
                List <string>          DataPanes = new List <string>();

                foreach (HtmlNode item in query.ToList())
                {
                    foreach (ModuleInfo m in PortalSettings.ActiveTab.Modules)
                    {
                        if (item.Attributes.Where(a => a.Name == "data-pane").FirstOrDefault() != null && !string.IsNullOrEmpty(item.Attributes.Where(a => a.Name == "data-pane").FirstOrDefault().Value) && item.Attributes.Where(a => a.Name == "data-pane").FirstOrDefault().Value.ToLower() == m.PaneName.ToLower())
                        {
                            if (m.DesktopModule.ModuleName.ToUpper() == "DNN_HTML")
                            {
                                item.InnerHtml += "<div data-m2v=\"\" data-appname=\"" + m.ModuleTitle + "\">" + HttpUtility.HtmlDecode(MigrateManager.GetHTMLText(m)) + "</div>";
                            }
                            else
                            {
                                item.InnerHtml += "<div data-m2v=\"\" data-appname=\"" + m.ModuleTitle + "\" dmid=\"" + m.DesktopModuleID + "\" mid=\"" + m.ModuleID + "\" uid=\"0\"><div vjmod=\"true\"><app id=\"" + m.ModuleID + "\"></app></div></div>";
                            }

                            DataPanes.AddRange(item.Attributes.Where(a => a.Name == "data-pane").Select(s => s.Value.ToLower()).ToList());
                        }
                    }
                }


                string Outhtml = html.DocumentNode.OuterHtml;

                foreach (ModuleInfo m in PortalSettings.ActiveTab.Modules)
                {
                    if (!DataPanes.Contains(m.PaneName.ToLower()))
                    {
                        if (m.DesktopModule.ModuleName.ToUpper() == "DNN_HTML")
                        {
                            Outhtml += "<div data-m2v=\"\" data-appname=\"" + m.ModuleTitle + "\">" + HttpUtility.HtmlDecode(MigrateManager.GetHTMLText(m)) + "</div>";
                        }
                        else
                        {
                            Outhtml += "<div data-m2v=\"\" data-appname=\"" + m.ModuleTitle + "\" dmid=\"" + m.DesktopModuleID + "\" mid=\"" + m.ModuleID + "\" uid=\"0\"><div vjmod=\"true\"><app id=\"" + m.ModuleID + "\"></app></div></div>";
                        }
                    }
                }
                return(Outhtml);
            }