#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;
}
}
}
}