/// <summary>
 /// Обработчик нажатия кнопки "Изменить" для изменения экстремисткого текста в базе данных
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonUpdateTextDB_Click(object sender, EventArgs e)
 {
     if (richTextBoxTextBD.Text == "")
     {
         MessageBox.Show("Ошибка изменения записи в базе данных! Введите в пустое поле текст и попробуйте еще раз.", "Сообщение об ошибке");
     }
     else
     {
         Text text = new Text(richTextBoxTextBD.Text);
         if (text.TextWords().Length > 5)
         {
             string startText = text.fullText.Substring(0, text.SpaceElementLocationTextIndex(5));
             string lastText  = text.fullText.Substring(
                 text.SpaceElementLocationTextIndex(text.TextWords().Length - 5) + 1,
                 text.fullText.Length - text.SpaceElementLocationTextIndex(text.TextWords().Length - 5) - 1);
             ExtremistText enterText  = new ExtremistText(startText, lastText, richTextBoxTextBD.Text);
             ExtremistText updateText = textVocabulary.texts[dataGridViewSourse.CurrentRow.Index];
             if (textVocabulary.UpdateExtremistText(enterText, updateText))
             {
                 UpdateTableTextVocubulary();
                 MessageBox.Show("Текст успешно изменен в базе данных.", "Сообщение об изменении текста");
             }
             else
             {
                 MessageBox.Show("Невозможно изменить текст.", "Сообщение об изменении текста");
             }
         }
         else
         {
             MessageBox.Show("Введите не менее 5 слов,чтобы изменить текст в базе данных", "Сообщение об изменении текста");
         }
     }
 }
        /// <summary>
        /// Обработчик нажатия кнопки "Добавить" для добавления экстремисткого текста в базу данных
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAddTextBD_Click(object sender, EventArgs e)
        {
            string text = "Введите текст для добавления в базу данных";

            if (richTextBoxTextBD.Text == text)
            {
                MessageBox.Show("Ошибка добавления в базу данных! Введите в пустое поле текст и попробуйте еще раз.", "Сообщение об ошибке");
            }
            else
            {
                Text enterText = new Text(richTextBoxTextBD.Text);
                if (enterText.TextWords().Length > 5)
                {
                    string startText = enterText.fullText.Substring(0, enterText.SpaceElementLocationTextIndex(5));
                    string lastText  = enterText.fullText.Substring(
                        enterText.SpaceElementLocationTextIndex(enterText.TextWords().Length - 5) + 1,
                        enterText.fullText.Length - enterText.SpaceElementLocationTextIndex(enterText.TextWords().Length - 5) - 1);
                    ExtremistText inputText = new ExtremistText(startText, lastText, richTextBoxTextBD.Text);
                    if (textVocabulary.AddExtremistText(inputText))
                    {
                        UpdateTableTextVocubulary();
                        AddTextCheckBox.Checked = false;
                        MessageBox.Show("Текст успешно добавлен в базу данных.", "Сообщение об добавлении текста");
                    }
                    else
                    {
                        MessageBox.Show("Текст уже существует в базе данных.", "Сообщение об добавлении текста");
                    }
                }
                else
                {
                    MessageBox.Show("Введите не менее 5 слов,чтобы добавить текст в базу данных", "Сообщение об добавлении текста");
                }
            }
        }
        /*
         * Функция нахождения ключа экстремистского текста в словаре.
         * 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));
        }
 public AvailabilityExtremistTextResult(double _usindProbability, ExtremistText _usingExtremistText,
                                        List <int> _usingWordsStartLocation, List <int> _usingWordsLastLocation)
 {
     usindProbability        = _usindProbability;
     usingExtremistText      = _usingExtremistText;
     usingWordsStartLocation = _usingWordsStartLocation;
     usingWordsLastLocation  = _usingWordsLastLocation;
 }
        /*
         * Переопределение функции сравнения двух объектов класса ExtremistText.
         */
        public override bool Equals(object obj)
        {
            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }
            ExtremistText extremistText = (ExtremistText)obj;

            return((this.startWords == extremistText.startWords) &&
                   (this.endWords == extremistText.endWords) &&
                   (this.fullText == extremistText.fullText));
        }
        /// <summary>
        /// Обработчик нажатия кнопки "Удалить" для удаления экстремисткого текста из базы данных
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonDeleteTextDB_Click(object sender, EventArgs e)
        {
            ExtremistText text = textVocabulary.texts[dataGridViewSourse.CurrentRow.Index];

            if (textVocabulary.DeleteExtremistText(text))
            {
                UpdateTableTextVocubulary();
                MessageBox.Show("Текст успешно удален из базы данных.", "Сообщение об удалении текста");
            }
            else
            {
                MessageBox.Show("Невозможно удалить текст.", "Сообщение об удалении текста");
            }
        }
 /*
  * Функция удаления экстремистского текста из словаря.
  * 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);
     }
 }
 /*
  * Функция изменения экстремистского текста в словаре.
  * 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);
     }
 }
 /*
  * Функция, которая проверяет, существует ли экстремистский текст в словаре.
  * searchExtremistText - экстремистский текст, который проверяется на существование в словаре.
  */
 private bool SearchExtremistText(ExtremistText searchExtremistText)
 {
     return(texts.IndexOf(searchExtremistText) >= 0);
 }