Exemplo n.º 1
0
        public DataBaseDescriptor(Authentication authentication, IDataBase dataBase, DescriptorTypes descriptorTypes, object owner)
            : base(authentication, dataBase, descriptorTypes)
        {
            this.dataBase = dataBase;
            this.owner    = owner ?? this;
            this.dataBase.Dispatcher.VerifyAccess();
            this.dataBaseInfo        = dataBase.DataBaseInfo;
            this.dataBaseState       = dataBase.DataBaseState;
            this.authenticationInfos = dataBase.AuthenticationInfos;
            this.lockInfo            = dataBase.LockInfo;
            this.accessInfo          = dataBase.AccessInfo;
            this.accessType          = dataBase.GetAccessType(authentication);

            if (this.descriptorTypes.HasFlag(DescriptorTypes.IsSubscriptable) == true)
            {
                this.dataBase.Renamed  += DataBase_Renamed;
                this.dataBase.Deleted  += DataBase_Deleted;
                this.dataBase.Loaded   += DataBase_Loaded;
                this.dataBase.Unloaded += DataBase_Unloaded;
                this.dataBase.AuthenticationEntered += DataBase_AuthenticationEntered;
                this.dataBase.AuthenticationLeft    += DataBase_AuthenticationLeft;
                this.dataBase.DataBaseInfoChanged   += DataBase_DataBaseInfoChanged;
                this.dataBase.DataBaseStateChanged  += DataBase_DataBaseStateChanged;
                this.dataBase.AccessChanged         += DataBase_AccessChanged;
                this.dataBase.LockChanged           += DataBase_LockChanged;
            }
        }
Exemplo n.º 2
0
        private static DataBaseProvider _provider;                  // класс реализующий сервисные функции работы с базой данных

        /// <summary>
        /// Выполнить инициалтзацию базы данных
        /// </summary>
        internal static void Initialize()
        {
            state  = DataBaseState.Default;
            s_slim = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

            parameters = new DataBaseParameters(1024);
        }
Exemplo n.º 3
0
        private DataBaseServer server;                  // сервер БД

        /// <summary>
        /// Инициализирует новый экземпляр класса
        /// </summary>
        public DataBaseManager()
        {
            mutex = new Mutex();
            state = DataBaseState.Default;

            adapter = new DataBaseAdapter();
            server  = new DataBaseServer(adapter);

            dataBase = new DataBase(adapter);
            server   = new DataBaseServer(adapter);
        }
Exemplo n.º 4
0
        private DataBaseState state; // текущее состояние БД

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Инициализирует новый экземпляр класса
        /// </summary>
        public DataBaseManager()
        {
            mutex = new Mutex();
            state = DataBaseState.Default;

            adapter = new DataBaseAdapter();
            server = new DataBaseServer(adapter);

            dataBase = new DataBase(adapter);
            server = new DataBaseServer(adapter);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Инициализирует новый экземпляр класса
        /// </summary>
        /// <param name="info">Объект System.Runtime.Serialization.SerializationInfo для извлечения данных.</param>
        /// <param name="context">Целевое местоположение сериализации.</param>
        protected DataBaseManager(SerializationInfo info, StreamingContext context)
        {
            mutex = new Mutex();
            state = DataBaseState.Default;

            adapter = new DataBaseAdapter();

            adapter.UserID = info.GetString("UserID");
            adapter.Password = info.GetString("Password");

            server = new DataBaseServer(adapter);

            dataBase = new DataBase(adapter);
            server = new DataBaseServer(adapter);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Инициализирует новый экземпляр класса
        /// </summary>
        /// <param name="info">Объект System.Runtime.Serialization.SerializationInfo для извлечения данных.</param>
        /// <param name="context">Целевое местоположение сериализации.</param>
        protected DataBaseManager(SerializationInfo info, StreamingContext context)
        {
            mutex = new Mutex();
            state = DataBaseState.Default;

            adapter = new DataBaseAdapter();

            adapter.UserID   = info.GetString("UserID");
            adapter.Password = info.GetString("Password");

            server = new DataBaseServer(adapter);

            dataBase = new DataBase(adapter);
            server   = new DataBaseServer(adapter);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Загрузить базу данных
        /// </summary>
        /// <param name="provider">Класс реализующий сервисные функции работы с базой данных</param>
        /// <returns>Состояние базы данных после выполнение операции загрузки БД</returns>
        public static DataBaseState LoadDB(DataBaseProvider provider)
        {
            if (provider != null)
            {
                switch (State)
                {
                case DataBaseState.Loaded:

                    throw new InvalidOperationException("Не допустимая операция. Перез загрузкой БД, необходимо завершить работу с текущей.");

                case DataBaseState.Unloaded:
                case DataBaseState.Default:


                    parameters.Clear();

                    try
                    {
                        DataBaseParameter[] parames = provider.Parameters;
                        if (parames != null)
                        {
                            foreach (DataBaseParameter parameter in parames)
                            {
                                if (parameter != null)
                                {
                                    parameters.Insert(parameter);
                                }
                            }

                            _provider = provider;
                            measuring = t_measuring.Virtualize(provider.Adapter);
                        }

                        State = DataBaseState.Loaded;
                        return(State);
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message, ex);
                    }

                default:
                    break;
                }
            }

            return(DataBaseState.Default);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Закрыть базу данных
        /// </summary>
        public static void CloseDB()
        {
            switch (State)
            {
            case DataBaseState.Loaded:

                SqlConnection.ClearAllPools();
                State = DataBaseState.Unloaded;

                parameters.Clear();

                break;

            default:
                break;
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Загрузить БД
        /// </summary>
        /// <param name="dbName">Имя загружаемой БД</param>
        public void LoadDB(string dbName)
        {
            bool   blocked    = false;
            string old_dbName = string.Empty;

            try
            {
                if (mutex.WaitOne(1000))
                {
                    blocked    = true;
                    old_dbName = adapter.InitialCatalog;

                    if (state == DataBaseState.Default)
                    {
                        adapter.InitialCatalog = dbName;
                        dataBase.LoadDB();

                        state = DataBaseState.Loaded;
                    }
                }
                else
                {
                    throw new TimeoutException();
                }
            }
            catch (Exception ex)
            {
                adapter.InitialCatalog = old_dbName;
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                if (blocked)
                {
                    mutex.ReleaseMutex();
                }
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Переключить в режим записи значений параметров
        /// </summary>
        public void TurnOnToSavingMode()
        {
            bool blocked = false;

            try
            {
                if (mutex.WaitOne(1000))
                {
                    blocked = true;

                    if (state == DataBaseState.Loaded)
                    {
                        dataBase.DataBaseSaver.Start();
                        state = DataBaseState.Saving;
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }
                }
                else
                {
                    throw new TimeoutException();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                if (blocked)
                {
                    mutex.ReleaseMutex();
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Закрыть загруженную БД
        /// </summary>
        public void CloseDB()
        {
            bool blocked = false;

            try
            {
                if (mutex.WaitOne(1000))
                {
                    blocked = true;
                    if (state == DataBaseState.Loaded || state == DataBaseState.Saving)
                    {
                        dataBase.CloseDB();
                        state = DataBaseState.Default;
                    }
                    else
                    {
                        throw new InvalidOperationException("База данных не загружена.");
                    }
                }
                else
                {
                    throw new TimeoutException();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                if (blocked)
                {
                    mutex.ReleaseMutex();
                }
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Загрузить БД
        /// </summary>
        public void LoadDB()
        {
            bool blocked = false;

            try
            {
                if (mutex.WaitOne(1000))
                {
                    blocked = true;
                    if (state == DataBaseState.Default)
                    {
                        dataBase.LoadDB();
                        state = DataBaseState.Loaded;
                    }
                    else
                    {
                        throw new Exception("Текущее состояние не позволяет загрузить БД");
                    }
                }
                else
                {
                    throw new TimeoutException();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                if (blocked)
                {
                    mutex.ReleaseMutex();
                }
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Загрузить базу данных
        /// </summary>
        /// <param name="provider">Класс реализующий сервисные функции работы с базой данных</param>
        /// <returns>Состояние базы данных после выполнение операции загрузки БД</returns>
        public static DataBaseState LoadDB(DataBaseProvider provider)
        {
            if (provider != null)
            {
                switch (State)
                {
                    case DataBaseState.Loaded:

                        throw new InvalidOperationException("Не допустимая операция. Перез загрузкой БД, необходимо завершить работу с текущей.");

                    case DataBaseState.Unloaded:
                    case DataBaseState.Default:

                        parameters.Clear();

                        try
                        {
                            DataBaseParameter[] parames = provider.Parameters;
                            if (parames != null)
                            {
                                foreach (DataBaseParameter parameter in parames)
                                {
                                    if (parameter != null)
                                    {
                                        parameters.Insert(parameter);
                                    }
                                }

                                _provider = provider;
                                measuring = t_measuring.Virtualize(provider.Adapter);
                            }

                            State = DataBaseState.Loaded;
                            return State;
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message, ex);
                        }

                    default:
                        break;
                }
            }

            return DataBaseState.Default;
        }
Exemplo n.º 14
0
        /// <summary>
        /// Закрыть базу данных
        /// </summary>
        public static void CloseDB()
        {
            switch (State)
            {
                case DataBaseState.Loaded:

                    SqlConnection.ClearAllPools();
                    State = DataBaseState.Unloaded;

                    parameters.Clear();

                    break;

                default:
                    break;
            }
        }
Exemplo n.º 15
0
 /// <summary>
 /// Закрыть загруженную БД
 /// </summary>
 public void CloseDB()
 {
     bool blocked = false;
     try
     {
         if (mutex.WaitOne(1000))
         {
             blocked = true;
             if (state == DataBaseState.Loaded || state == DataBaseState.Saving)
             {
                 dataBase.CloseDB();
                 state = DataBaseState.Default;
             }
             else
                 throw new InvalidOperationException("База данных не загружена.");
         }
         else
             throw new TimeoutException();
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message, ex);
     }
     finally
     {
         if (blocked) mutex.ReleaseMutex();
     }
 }
Exemplo n.º 16
0
 private async void DataBase_DataBaseStateChanged(object sender, EventArgs e)
 {
     this.dataBaseState = this.dataBase.DataBaseState;
     await this.RefreshAsync();
 }
Exemplo n.º 17
0
 private async void DataBase_Unloaded(object sender, EventArgs e)
 {
     this.dataBaseState       = this.dataBase.DataBaseState;
     this.authenticationInfos = this.dataBase.AuthenticationInfos;
     await this.RefreshAsync();
 }
Exemplo n.º 18
0
        /// <summary>
        /// Выполнить инициалтзацию базы данных
        /// </summary>
        internal static void Initialize()
        {
            state = DataBaseState.Default;
            s_slim = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

            parameters = new DataBaseParameters(1024);
        }
Exemplo n.º 19
0
 /// <summary>
 /// Загрузить БД
 /// </summary>
 public void LoadDB()
 {
     bool blocked = false;
     try
     {
         if (mutex.WaitOne(1000))
         {
             blocked = true;
             if (state == DataBaseState.Default)
             {
                 dataBase.LoadDB();
                 state = DataBaseState.Loaded;
             }
             else
                 throw new Exception("Текущее состояние не позволяет загрузить БД");
         }
         else
             throw new TimeoutException();
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message, ex);
     }
     finally
     {
         if (blocked) mutex.ReleaseMutex();
     }
 }
Exemplo n.º 20
0
        /// <summary>
        /// Переключить в режим записи значений параметров
        /// </summary>
        public void TurnOnToSavingMode()
        {
            bool blocked = false;
            try
            {
                if (mutex.WaitOne(1000))
                {
                    blocked = true;

                    if (state == DataBaseState.Loaded)
                    {
                        dataBase.DataBaseSaver.Start();
                        state = DataBaseState.Saving;
                    }
                    else
                        throw new InvalidOperationException();
                }
                else
                    throw new TimeoutException();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                if (blocked) mutex.ReleaseMutex();
            }
        }
Exemplo n.º 21
0
        /// <summary>
        /// Загрузить БД
        /// </summary>
        /// <param name="dbName">Имя загружаемой БД</param>
        public void LoadDB(string dbName)
        {
            bool blocked = false;
            string old_dbName = string.Empty;

            try
            {
                if (mutex.WaitOne(1000))
                {
                    blocked = true;
                    old_dbName = adapter.InitialCatalog;

                    if (state == DataBaseState.Default)
                    {
                        adapter.InitialCatalog = dbName;
                        dataBase.LoadDB();

                        state = DataBaseState.Loaded;
                    }
                }
                else
                    throw new TimeoutException();
            }
            catch (Exception ex)
            {
                adapter.InitialCatalog = old_dbName;
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                if (blocked) mutex.ReleaseMutex();
            }
        }