Esempio n. 1
0
        private static StudioController Build()
        {
            var manager    = new ObjectExplorerManager();
            var srvWatcher = new ServerWatcher(manager);
            var sudioCtrl  = new StudioController(manager, srvWatcher);

            return(sudioCtrl);
        }
Esempio n. 2
0
        public StudioController(ObjectExplorerManager mgr, IServerWatcher watcher)
        {
            manager     = mgr;
            _srvWatcher = watcher;
            _srvWatcher.OnServersAdded   += _srvWatcher_OnServersAdded;
            _srvWatcher.OnServersRemoved += _srvWatcher_OnServersRemoved;

            Servers = new Dictionary <IServer, DatabaseLoader>();
        }
Esempio n. 3
0
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            BaseCommand.Initialize(this);
            PasteAsCSVCommand.Initialize(this);
            base.Initialize();

            AddSkipLoading();

            _objectExplorerManager = new ObjectExplorerManager(this);
            _objectExplorerManager.SetObjectExplorerEventProvider();
        }
Esempio n. 4
0
 private void ComboBoxConnections_DropDown(object sender, System.EventArgs e)
 {
     try
     {
         comboBoxConnections.Items.Clear();
         comboBoxConnections.DisplayMember = "ServerName";
         comboBoxConnections.Items.AddRange(ObjectExplorerManager.GetSqlServerConnections());
     }
     catch (Exception ex)
     {
         ex.HandleException(display: true);
     }
 }
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            OtherWindowsCommand.Initialize(this);
            ViewMenuCommand.Initialize(this);

            ExportImage = Resources.ExportReportData_10565;
            Logo        = Resources.data_out_small;
            ScriptImage = Resources.script_16xLG;

            _objectExplorerManager = new ObjectExplorerManager(this);
            _objectExplorerManager.SetObjectExplorerEventProvider();
            base.Initialize();
        }
 private void OnComboBoxSQLInstances_DropDown(object sender, EventArgs e)
 {
     try
     {
         comboBoxSQLInstances.Items.Clear();
         comboBoxSQLInstances.DisplayMember = "Item1";
         comboBoxSQLInstances.Items.AddRange(ObjectExplorerManager.GetSqlServerConnectionsExtended());
     }
     catch (Exception ex)
     {
         ex.HandleException(display: true);
     }
 }
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            try
            {
                OtherWindowsCommand.Initialize(this);
                ViewMenuCommand.Initialize(this);

                ExportImage = Resources.ExportReportData_10565;
                Logo        = Resources.data_out_small;
                ScriptImage = Resources.script_16xLG;

                base.Initialize();

                _objectExplorerManager = new ObjectExplorerManager(this);
                _objectExplorerManager.SetObjectExplorerEventProvider();
            }
            catch (Exception ex)
            {
                SetStatus("SQLite Toolbox error: " + ex.Message);
            }
        }
        internal static Dictionary <string, DatabaseInfo> GetDataConnections(SqlCeToolboxPackage package,
                                                                             bool includeServerConnections, bool serverConnectionsOnly)
        {
            // http://www.mztools.com/articles/2007/MZ2007018.aspx
            Dictionary <string, DatabaseInfo> databaseList = new Dictionary <string, DatabaseInfo>();
            var dataExplorerConnectionManager =
                package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager;

            //Test code...

            //var objIVsDataProviderManager = package.GetServiceHelper(typeof(IVsDataProviderManager)) as IVsDataProviderManager;
            //var objIVsDataConnectionManager = package.GetServiceHelper(typeof(IVsDataConnectionManager)) as IVsDataConnectionManager;
            //var objIVsDataSourceManager = package.GetServiceHelper(typeof(IVsDataSourceManager)) as IVsDataSourceManager;

            //IVsDataProvider objIVsDataProvider;
            //foreach (var objIVsDataSource in objIVsDataSourceManager.Sources)
            //{
            //    //System.Diagnostics.Debug.WriteLine(objIVsDataSource.DisplayName);
            //    //System.Diagnostics.Debug.WriteLine(objIVsDataSource.Guid.ToString());

            //    //foreach (var objProviderGuid in objIVsDataSource.GetProviders())
            //    //{
            //    //    objIVsDataProvider = objIVsDataProviderManager.GetDataProvider(objProviderGuid);
            //    //    System.Diagnostics.Debug.WriteLine(objIVsDataProvider.DisplayName);
            //    //    System.Diagnostics.Debug.WriteLine(objIVsDataProvider.Guid.ToString());
            //    //}
            //}

            // End test code

            Guid provider35            = new Guid(Resources.SqlCompact35Provider);
            Guid provider40            = new Guid(Resources.SqlCompact40Provider);
            Guid provider40Private     = new Guid(Resources.SqlCompact40PrivateProvider);
            Guid providerSqLite        = new Guid(Resources.SQLiteProvider);
            Guid providerSqlitePrivate = new Guid(Resources.SqlitePrivateProvider);

            bool isV35Installed = RepositoryHelper.IsV35Installed() && DdexProviderIsInstalled(provider35);
            bool isV40Installed = RepositoryHelper.IsV40Installed() &&
                                  (DdexProviderIsInstalled(provider40) || DdexProviderIsInstalled(provider40Private));

            if (dataExplorerConnectionManager != null)
            {
                foreach (var connection in dataExplorerConnectionManager.Connections.Values)
                {
                    try
                    {
                        var objProviderGuid = connection.Provider;
                        if (!serverConnectionsOnly)
                        {
                            if ((objProviderGuid == provider35 && isV35Installed) ||
                                (objProviderGuid == provider40 && isV40Installed) ||
                                (objProviderGuid == provider40Private && isV40Installed))
                            {
                                DatabaseType dbType = DatabaseType.SQLCE40;
                                if (objProviderGuid == provider35)
                                {
                                    dbType = DatabaseType.SQLCE35;
                                }
                                var serverVersion = "4.0";
                                if (dbType == DatabaseType.SQLCE35)
                                {
                                    serverVersion = "3.5";
                                }

                                var sConnectionString =
                                    DataProtection.DecryptString(connection.EncryptedConnectionString);
                                if (!sConnectionString.Contains("Mobile Device"))
                                {
                                    DatabaseInfo info = new DatabaseInfo()
                                    {
                                        Caption            = connection.DisplayName,
                                        FromServerExplorer = true,
                                        DatabaseType       = dbType,
                                        ServerVersion      = serverVersion,
                                        ConnectionString   = sConnectionString
                                    };
                                    info.FileIsMissing = RepositoryHelper.IsMissing(info);
                                    if (!databaseList.ContainsKey(sConnectionString))
                                    {
                                        databaseList.Add(sConnectionString, info);
                                    }
                                }
                            }

                            if (objProviderGuid == providerSqLite ||
                                objProviderGuid == providerSqlitePrivate)
                            {
                                DatabaseType dbType = DatabaseType.SQLite;

                                var sConnectionString =
                                    DataProtection.DecryptString(connection.EncryptedConnectionString);
                                DatabaseInfo info = new DatabaseInfo()
                                {
                                    Caption            = connection.DisplayName,
                                    FromServerExplorer = true,
                                    DatabaseType       = dbType,
                                    ServerVersion      = RepositoryHelper.SqliteEngineVersion,
                                    ConnectionString   = sConnectionString
                                };
                                info.FileIsMissing = RepositoryHelper.IsMissing(info);
                                if (!databaseList.ContainsKey(sConnectionString))
                                {
                                    databaseList.Add(sConnectionString, info);
                                }
                            }
                        }
                        if (includeServerConnections && objProviderGuid == new Guid(Resources.SqlServerDotNetProvider))
                        {
                            var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString);
                            var info = new DatabaseInfo()
                            {
                                Caption            = connection.DisplayName,
                                FromServerExplorer = true,
                                DatabaseType       = DatabaseType.SQLServer,
                                ServerVersion      = string.Empty,
                                ConnectionString   = sConnectionString
                            };
                            if (!databaseList.ContainsKey(sConnectionString))
                            {
                                databaseList.Add(sConnectionString, info);
                            }
                        }
                    }
                    catch (KeyNotFoundException)
                    {
                    }
                    catch (NullReferenceException)
                    {
                    }
                    catch (ArgumentException)
                    {
                    }
                }
            }
#if SSMS
            try
            {
                if (package.TelemetryVersion().Major == 140 && Properties.Settings.Default.GetObjectExplorerDatabases)
                {
                    var objectExplorerManager = new ObjectExplorerManager(package);
                    var list = objectExplorerManager.GetAllServerUserDatabases();
                    foreach (var item in list)
                    {
                        if (!databaseList.ContainsKey(item.Key))
                        {
                            databaseList.Add(item.Key, item.Value);
                        }
                    }
                }
            }
            catch (MissingMethodException)
            {
            }
#endif
            return(databaseList);
        }
Esempio n. 9
0
 public ServerWatcher(ObjectExplorerManager manager)
 {
     _manager = manager;
     _manager.OnNewServerConnected += new Action <SqlConnectionInfo>(_manager_OnNewServerConnected);
     Start();
 }
        internal static Dictionary<string, DatabaseInfo> GetDataConnections(SqlCeToolboxPackage package,
            bool includeServerConnections, bool serverConnectionsOnly)
        {
            // http://www.mztools.com/articles/2007/MZ2007018.aspx
            Dictionary<string, DatabaseInfo> databaseList = new Dictionary<string, DatabaseInfo>();
            var dataExplorerConnectionManager =
                package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager;

            //Test code...

            //var objIVsDataProviderManager = package.GetServiceHelper(typeof(IVsDataProviderManager)) as IVsDataProviderManager;
            //var objIVsDataConnectionManager = package.GetServiceHelper(typeof(IVsDataConnectionManager)) as IVsDataConnectionManager;
            //var objIVsDataSourceManager = package.GetServiceHelper(typeof(IVsDataSourceManager)) as IVsDataSourceManager;

            //IVsDataProvider objIVsDataProvider;
            //foreach (var objIVsDataSource in objIVsDataSourceManager.Sources)
            //{
            //    //System.Diagnostics.Debug.WriteLine(objIVsDataSource.DisplayName);
            //    //System.Diagnostics.Debug.WriteLine(objIVsDataSource.Guid.ToString());

            //    //foreach (var objProviderGuid in objIVsDataSource.GetProviders())
            //    //{
            //    //    objIVsDataProvider = objIVsDataProviderManager.GetDataProvider(objProviderGuid);
            //    //    System.Diagnostics.Debug.WriteLine(objIVsDataProvider.DisplayName);
            //    //    System.Diagnostics.Debug.WriteLine(objIVsDataProvider.Guid.ToString());
            //    //}
            //}

            // End test code

            Guid provider35 = new Guid(Resources.SqlCompact35Provider);
            Guid provider40 = new Guid(Resources.SqlCompact40Provider);
            Guid providerSqLite = new Guid(Resources.SQLiteProvider);

            bool isV35Installed = IsV35Installed() && DdexProviderIsInstalled(provider35);
            bool isV40Installed = IsV40Installed() && DdexProviderIsInstalled(provider40);
            if (dataExplorerConnectionManager != null)
            {
                foreach (var connection in dataExplorerConnectionManager.Connections.Values)
                {
                    try
                    {
                        var objProviderGuid = connection.Provider;
                        if (!serverConnectionsOnly)
                        {
                            if ((objProviderGuid == provider35 && isV35Installed) ||
                                (objProviderGuid == provider40 && isV40Installed))
                            {
                                DatabaseType dbType = DatabaseType.SQLCE40;
                                if (objProviderGuid == provider35)
                                    dbType = DatabaseType.SQLCE35;
                                var serverVersion = "4.0";
                                if (dbType == DatabaseType.SQLCE35)
                                    serverVersion = "3.5";

                                var sConnectionString =
                                    DataProtection.DecryptString(connection.EncryptedConnectionString);
                                if (!sConnectionString.Contains("Mobile Device"))
                                {
                                    DatabaseInfo info = new DatabaseInfo();
                                    info.Caption = connection.DisplayName;
                                    info.FromServerExplorer = true;
                                    info.DatabaseType = dbType;
                                    info.ServerVersion = serverVersion;
                                    info.ConnectionString = sConnectionString;
                                    info.FileIsMissing = IsMissing(info);
                                    if (!databaseList.ContainsKey(sConnectionString))
                                        databaseList.Add(sConnectionString, info);
                                }
                            }

                            if (objProviderGuid == providerSqLite)
                            {
                                DatabaseType dbType = DatabaseType.SQLite;

                                var sConnectionString =
                                    DataProtection.DecryptString(connection.EncryptedConnectionString);
                                DatabaseInfo info = new DatabaseInfo();
                                info.Caption = connection.DisplayName;
                                info.FromServerExplorer = true;
                                info.DatabaseType = dbType;
                                //TODO Update this when SQLite provider is updated!
                                info.ServerVersion = "3.15";
                                info.ConnectionString = sConnectionString;
                                info.FileIsMissing = IsMissing(info);
                                if (!databaseList.ContainsKey(sConnectionString))
                                    databaseList.Add(sConnectionString, info);
                            }
                        }
                        if (includeServerConnections && objProviderGuid == new Guid(Resources.SqlServerDotNetProvider))
                        {
                            var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString);
                            var info = new DatabaseInfo();
                            info.Caption = connection.DisplayName;
                            info.FromServerExplorer = true;
                            info.DatabaseType = DatabaseType.SQLServer;
                            info.ServerVersion = string.Empty;
                            info.ConnectionString = sConnectionString;
                            if (!databaseList.ContainsKey(sConnectionString))
                                databaseList.Add(sConnectionString, info);
                        }
                    }
                    catch (KeyNotFoundException)
                    {
                    }
                    catch (NullReferenceException)
                    {
                    }
                }
            }
#if SSMS
            try
            {
                var objectExplorerManager = new ObjectExplorerManager(package);
                var list = objectExplorerManager.GetAllServerUserDatabases();
                foreach (var item in list)
                {
                    if (!databaseList.ContainsKey(item.Key))
                        databaseList.Add(item.Key, item.Value);
                }
            }
            //TODO Make SSMS 14.x (17) work with above method!
            catch (MissingMethodException)
            {
            }
#endif
            return databaseList;
        }