/*
         * Функция нахождения ключа экстремистской фразы в словаре.
         * extremistPhrase - исходная экстремистская фраза.
         * connection - соединение с базой данных.
         */
        private string SearchExtremistPhraseID(ExtremistPhrase extremistPhrase, MicrosoftSQLConnection connection)
        {
            string typeID  = Convert.ToString(ExtremistTypes().IndexOf(extremistPhrase.typePhrase) + 1);
            string element = "phrase = N'" + extremistPhrase.phrase +
                             "' AND type_id = " + typeID;

            return(connection.SearchIDTableElement(VOCABULARY_NAME, element));
        }
        /*
         * Функция нахождения ключа экстремистского текста в словаре.
         * extremistText - исходный экстремистский текст.
         * connection - соединение с базой данных.
         */
        private string SearchExtremistTextID(ExtremistText extremistText, MicrosoftSQLConnection connection)
        {
            string element = "start_text = N'" + extremistText.startWords +
                             "' AND finish_text = N'" + extremistText.endWords +
                             "' AND full_text = N'" + extremistText.fullText + "'";

            return(connection.SearchIDTableElement(VOCABULARY_NAME, element));
        }
        /*
         * Функция загрузки словаря из базы данных.
         */
        private void LoadVocabulary()
        {
            texts = new List <ExtremistText>();
            MicrosoftSQLConnection connection = new MicrosoftSQLConnection();

            if (connection.IsOpenConnection())
            {
                SqlDataReader dataReader = connection.SearchTableForName(VOCABULARY_NAME);
                while (dataReader.Read())
                {
                    texts.Add(new ExtremistText(Convert.ToString(dataReader.GetValue(1)),
                                                Convert.ToString(dataReader.GetValue(2)), Convert.ToString(dataReader.GetValue(3))));
                }
            }
            connection.CloseConnection();
        }
        /*
         * Функция вывода списка видов экстремизма из базы данных.
         */
        public List <string> ExtremistTypes()
        {
            List <string>          extremistTypes = new List <string>();
            MicrosoftSQLConnection connection     = new MicrosoftSQLConnection();

            if (connection.IsOpenConnection())
            {
                SqlDataReader dataReader = connection.SearchTableForName("EXTREMIST_TYPES");
                while (dataReader.Read())
                {
                    extremistTypes.Add(Convert.ToString(dataReader.GetValue(1)));
                }
            }
            connection.CloseConnection();
            return(extremistTypes);
        }
        /*
         * Функция загрузки словаря из базы данных.
         */
        private void LoadVocabulary()
        {
            phrases = new List <ExtremistPhrase>();
            List <string>          extremistTypes = ExtremistTypes();
            MicrosoftSQLConnection connection     = new MicrosoftSQLConnection();

            if (connection.IsOpenConnection())
            {
                SqlDataReader dataReader = connection.SearchTableForName(VOCABULARY_NAME);
                while (dataReader.Read())
                {
                    int phraseType = Convert.ToInt32(dataReader.GetValue(2));
                    phrases.Add(new ExtremistPhrase(Convert.ToString(dataReader.GetValue(1)),
                                                    extremistTypes[phraseType - 1]));
                }
            }
            connection.CloseConnection();
        }
 /*
  * Функция удаления экстремистского текста из словаря.
  * deleteExtremistText - экстремистский текст, который удаляется из словаря.
  */
 public bool DeleteExtremistText(ExtremistText deleteExtremistText)
 {
     if (SearchExtremistText(deleteExtremistText))
     {
         MicrosoftSQLConnection connection = new MicrosoftSQLConnection();
         bool deleteElement = false;
         if (connection.IsOpenConnection())
         {
             string IDElement = "text_id = " + SearchExtremistTextID(deleteExtremistText, connection);
             deleteElement = connection.DeleteTableElement(VOCABULARY_NAME, IDElement);
         }
         connection.CloseConnection();
         LoadVocabulary();
         return(deleteElement);
     }
     else
     {
         return(false);
     }
 }
 /*
  * Функция добавления нового экстремистского текста в словарь.
  * addExtremistText - экстремистский текст, который необходимо добавить в словарь.
  */
 public bool AddExtremistText(ExtremistText addExtremistText)
 {
     if (!SearchExtremistText(addExtremistText))
     {
         MicrosoftSQLConnection connection = new MicrosoftSQLConnection();
         bool addElement = false;
         if (connection.IsOpenConnection())
         {
             string values = "(SELECT 1 + MAX(text_id) FROM " + VOCABULARY_NAME +
                             "), N'" + addExtremistText.startWords + "', N'" + addExtremistText.endWords +
                             "', N'" + addExtremistText.fullText + "'";
             addElement = connection.AddTableElement(VOCABULARY_NAME, values);
         }
         connection.CloseConnection();
         LoadVocabulary();
         return(addElement);
     }
     else
     {
         return(false);
     }
 }
 /*
  * Функция добавления новой экстремистской фразы в словарь.
  * addExtremistPhrase - экстремистская фраза, которую необходимо добавить в словарь.
  */
 public bool AddExtremistPhrase(ExtremistPhrase addExtremistPhrase)
 {
     if (!SearchExtremistPhrase(addExtremistPhrase))
     {
         MicrosoftSQLConnection connection = new MicrosoftSQLConnection();
         bool addElement = false;
         if (connection.IsOpenConnection())
         {
             string typeID = Convert.ToString(ExtremistTypes().IndexOf(addExtremistPhrase.typePhrase) + 1);
             string values = "(SELECT 1 + MAX(phrase_id) FROM " + VOCABULARY_NAME +
                             "), N'" + addExtremistPhrase.phrase + "', " + typeID;
             addElement = connection.AddTableElement(VOCABULARY_NAME, values);
         }
         connection.CloseConnection();
         LoadVocabulary();
         return(addElement);
     }
     else
     {
         return(false);
     }
 }
 /*
  * Функция изменения экстремистского текста в словаре.
  * enterExtremistText - экстремистский текст, на который изменяется исходный текст.
  * updateExtremistText - экстремистский текст, который изменяется в словаре.
  */
 public bool UpdateExtremistText(ExtremistText enterExtremistText, ExtremistText updateExtremistText)
 {
     if (SearchExtremistText(updateExtremistText))
     {
         MicrosoftSQLConnection connection = new MicrosoftSQLConnection();
         bool updateElement = false;
         if (connection.IsOpenConnection())
         {
             string set = "start_text = N'" + enterExtremistText.startWords +
                          "', finish_text = N'" + enterExtremistText.endWords +
                          "', full_text = N'" + enterExtremistText.fullText + "'";
             string IDElement = "text_id = " + SearchExtremistTextID(updateExtremistText, connection);
             updateElement = connection.UpdateTableElement(VOCABULARY_NAME, set, IDElement);
         }
         connection.CloseConnection();
         LoadVocabulary();
         return(updateElement);
     }
     else
     {
         return(false);
     }
 }
 /*
  * Функция изменения экстремистской фразы в словаре.
  * enterExtremistPhrase - экстремистская фраза, на которую изменяется исходная фраза.
  * updateExtremistPhrase - экстремистская фраза, которая изменяется в словаре.
  */
 public bool UpdateExtremistPhrase(ExtremistPhrase enterExtremistPhrase, ExtremistPhrase updateExtremistPhrase)
 {
     if (SearchExtremistPhrase(updateExtremistPhrase))
     {
         MicrosoftSQLConnection connection = new MicrosoftSQLConnection();
         bool updateElement = false;
         if (connection.IsOpenConnection())
         {
             string typeID = Convert.ToString(ExtremistTypes().IndexOf(enterExtremistPhrase.typePhrase) + 1);
             string set    = "phrase = N'" + enterExtremistPhrase.phrase +
                             "', type_id = " + typeID;
             string IDElement = "phrase_id = " + SearchExtremistPhraseID(updateExtremistPhrase, connection);
             updateElement = connection.UpdateTableElement(VOCABULARY_NAME, set, IDElement);
         }
         connection.CloseConnection();
         LoadVocabulary();
         return(updateElement);
     }
     else
     {
         return(false);
     }
 }