#region License // Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved. // This source code is made available under the terms of the GNU Lesser General Public License v3.0 // https://github.com/paulkohler/minisqlquery/blob/master/LICENSE #endregion using System.Text; using MiniSqlQuery.Core.DbModel; using WeifenLuo.WinFormsUI.Docking; namespace MiniSqlQuery.Core.Commands { /// /// The display db model dependencies command. /// public class DisplayDbModelDependenciesCommand : CommandBase { /// /// Initializes a new instance of the class. /// public DisplayDbModelDependenciesCommand() : base("Order Tables by FK Dependencies") { SmallImage = ImageResource.table_link; } /// /// Execute the command. /// public override void Execute() { var editor = Services.Resolve("txt-editor"); editor.FileName = null; HostWindow.DisplayDockedForm(editor as DockContent); if (HostWindow.DatabaseInspector.DbSchema == null) { HostWindow.DatabaseInspector.LoadDatabaseDetails(); } var dependencyWalker = new DbModelDependencyWalker(HostWindow.DatabaseInspector.DbSchema); var tables = dependencyWalker.SortTablesByForeignKeyReferences(); var sb = new StringBuilder(); foreach (DbModelTable table in tables) { sb.AppendLine(table.FullName); } editor.AllText = sb.ToString(); } /// /// Gets a value indicating that the command can be executed (requires a connection). /// public override bool Enabled { get { return Services.Settings.ConnectionDefinition != null; } } } }