From 11cb154d6d1fe2b99dad3020b189a8ce592b9bc0 Mon Sep 17 00:00:00 2001 From: Karl Burtram Date: Tue, 10 Oct 2017 16:32:54 -0700 Subject: [PATCH] Add Database status to OE tree node (#485) --- .../SmoModel/SmoDatabaseCustomNode.cs | 73 +++++++++++++++++++ .../SmoModel/SmoLoginCustomNode.cs | 4 +- 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoDatabaseCustomNode.cs diff --git a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoDatabaseCustomNode.cs b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoDatabaseCustomNode.cs new file mode 100644 index 00000000..f0c5c82e --- /dev/null +++ b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoDatabaseCustomNode.cs @@ -0,0 +1,73 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +using Microsoft.SqlServer.Management.Smo; + +namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel +{ + /// + /// Status for databases + /// + internal partial class DatabasesChildFactory : SmoChildFactoryBase + { + public override string GetNodeStatus(object context) + { + return DatabasesCustomNodeHelper.GetStatus(context); + } + } + + internal static class DatabasesCustomNodeHelper + { + internal static string GetStatus(object context) + { + Database db = context as Database; + if (db != null) + { + if ((db.Status & DatabaseStatus.Offline) == DatabaseStatus.Offline) + { + return "Offline"; + } + else if ((db.Status & DatabaseStatus.Recovering) == DatabaseStatus.Recovering) + { + return "Recovering"; + } + else if ((db.Status & DatabaseStatus.RecoveryPending) == DatabaseStatus.RecoveryPending) + { + return "Recovery Pending"; + } + else if ((db.Status & DatabaseStatus.Restoring) == DatabaseStatus.Restoring) + { + return "Restoring"; + } + else if ((db.Status & DatabaseStatus.EmergencyMode) == DatabaseStatus.EmergencyMode) + { + return "Emergency Mode"; + } + else if ((db.Status & DatabaseStatus.Inaccessible) == DatabaseStatus.Inaccessible) + { + return "Inaccessible"; + } + else if ((db.Status & DatabaseStatus.Shutdown) == DatabaseStatus.Shutdown) + { + return "Shutdown"; + } + else if ((db.Status & DatabaseStatus.Standby) == DatabaseStatus.Standby) + { + return "Standby"; + } + else if ((db.Status & DatabaseStatus.Suspect) == DatabaseStatus.Suspect) + { + return "Suspect"; + } + else if ((db.Status & DatabaseStatus.AutoClosed) == DatabaseStatus.AutoClosed) + { + return "Auto Closed"; + } + } + + return string.Empty; + } + } +} diff --git a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoLoginCustomNode.cs b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoLoginCustomNode.cs index f81f398d..524fa6fa 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoLoginCustomNode.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoLoginCustomNode.cs @@ -14,11 +14,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel { public override string GetNodeStatus(object context) { - return LoginCustomeNodeHelper.GetStatus(context); + return LoginCustomNodeHelper.GetStatus(context); } } - internal static class LoginCustomeNodeHelper + internal static class LoginCustomNodeHelper { internal static string GetStatus(object context) {