Exemple #1
0
        /// <summary>
        /// See <see cref="IConnectionRepository.TryLoadConnectionsFromConfig"/>.
        /// </summary>
        public SuccessResult TryLoadConnectionsFromConfig()
        {
            IEnumerable <ConnectionInfo> configuredConnections;

            try
            {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                configuredConnections = this._configHelper.GetConnectionsFromConfiguration(config);
            }
            catch (SnapshotException ex)
            {
                return(SuccessResult.CreateFailed(ex.Message));
            }
            catch (ConfigurationErrorsException ex)
            {
                return(SuccessResult.CreateFailed(ex.Message));
            }

            foreach (var connection in configuredConnections)
            {
                this._connections.Add(connection);
            }

            return(SuccessResult.CreateSuccessful());
        }
Exemple #2
0
        /// <summary>
        /// See <see cref="ISnapshotRepository.TryCreateSnapshot(string, DatabaseInfo)"/>.
        /// </summary>
        public SuccessResult TryCreateSnapshot(string snapshotName, DatabaseInfo database)
        {
            ArgumentChecks.AssertNotNull(snapshotName, nameof(snapshotName));
            ArgumentChecks.AssertNotNull(database, nameof(database));

            try
            {
                this._databaseServices.CreateSnapshotForDatabase(snapshotName, database);

                return(this.TryLoadSnapshots(database));
            }
            catch (SnapshotException ex)
            {
                return(SuccessResult.CreateFailed($"{ex.Message} ({ex.InnerException.Message})"));
            }
        }
Exemple #3
0
        /// <summary>
        /// See <see cref="ISnapshotRepository.TryLoadSnapshots(DatabaseInfo)"/>.
        /// </summary>
        public SuccessResult TryLoadSnapshots(DatabaseInfo database)
        {
            ArgumentChecks.AssertNotNull(database, nameof(database));

            this.ClearSnapshots(database);

            try
            {
                var snapshots = this._databaseServices.GetAllSnapshotsForDatabase(database);
                this._snapshotsPerDatabaseDict.Add(database, snapshots);

                return(SuccessResult.CreateSuccessful());
            }
            catch (SnapshotException ex)
            {
                return(SuccessResult.CreateFailed($"{ex.Message} ({ex.InnerException.Message})"));
            }
        }
        /// <summary>
        /// See <see cref="IDatabaseRepository.TryLoadDatabases(ConnectionInfo)"/>.
        /// </summary>
        public SuccessResult TryLoadDatabases(ConnectionInfo connection)
        {
            ArgumentChecks.AssertNotNull(connection, nameof(connection));

            this.ClearDatabases(connection);

            try
            {
                var databases = this._databaseServices.GetAllDatabasesForConnection(connection);
                this._databasesPerConnectionDict.Add(connection, databases);

                return(SuccessResult.CreateSuccessful());
            }
            catch (SnapshotException ex)
            {
                return(SuccessResult.CreateFailed($"{ex.Message} ({ex.InnerException.Message})"));
            }
        }
        /// <summary>
        /// See <see cref="IDatabaseRepository.DeleteDatabase(ConnectionInfo)"/>.
        /// </summary>
        public SuccessResult DeleteDatabase(DatabaseInfo database)
        {
            ArgumentChecks.AssertNotNull(database, nameof(database));

            try
            {
                this._databaseServices.DeleteDatabase(database);
                // If this snapshot and his friends from the same database were already loaded...
                if (this._databasesPerConnectionDict.ContainsKey(database.Connection))
                {
                    // ...we try to reload them.
                    return(this.TryLoadDatabases(database.Connection));
                }
                return(SuccessResult.CreateSuccessful());
            }
            catch (SnapshotException ex)
            {
                return(SuccessResult.CreateFailed($"{ex.Message} ({ex.InnerException.Message})"));
            }
        }
Exemple #6
0
        /// <summary>
        /// See <see cref="IConnectionRepository.TrySaveConnectionsToConfig"/>.
        /// </summary>
        public SuccessResult TrySaveConnectionsToConfig()
        {
            try
            {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                this._configHelper.ClearConnectionsFromConfiguration(config);
                foreach (var connection in this._connections)
                {
                    this._configHelper.AddConnectionToConfiguration(config, connection);
                }

                config.Save(ConfigurationSaveMode.Full);
            }
            catch (ConfigurationErrorsException ex)
            {
                return(SuccessResult.CreateFailed(ex.Message));
            }

            return(SuccessResult.CreateSuccessful());
        }
Exemple #7
0
        /// <summary>
        /// See <see cref="ISnapshotRepository.TryDeleteSnapshot(SnapshotInfo)"/>.
        /// </summary>
        public SuccessResult TryDeleteSnapshot(SnapshotInfo snapshot)
        {
            ArgumentChecks.AssertNotNull(snapshot, nameof(snapshot));

            try
            {
                this._databaseServices.DeleteSnapshot(snapshot);

                // If this snapshot and his friends from the same database were already loaded...
                if (this._snapshotsPerDatabaseDict.ContainsKey(snapshot.Database))
                {
                    // ...we try to reload them.
                    return(this.TryLoadSnapshots(snapshot.Database));
                }

                return(SuccessResult.CreateSuccessful());
            }
            catch (SnapshotException ex)
            {
                return(SuccessResult.CreateFailed($"{ex.Message} ({ex.InnerException.Message})"));
            }
        }