Ejemplo n.º 1
0
 /// <summary>
 /// Получить номер в выпадающем списке для типа реагирования на ошибку.
 /// </summary>
 /// <param name="type"> тип реагирования на ошибку </param>
 /// <returns> номер </returns>
 private int GetErrorTypeIndex(Operation.ErrorTypes error)
 {
     for (int i = 0; i < errorComboBox.Items.Count; i++)
     {
         Operation.ErrorTypes errorType = ((EnumWrapper <Operation.ErrorTypes>)errorComboBox.Items[i]).GetConst();
         if (errorType == error)
         {
             return(i);
         }
     }
     return(0);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Удалить папку.
        /// </summary>
        /// <param name="folderName"> полный путь к папке </param>
        /// <returns> результат выполнения </returns>
        public static ActionResult DeleteFolder(string folderName, Operation.ErrorTypes errorType)
        {
            string    msg          = "";
            bool      isSuccessful = false;
            ArrayList errorList    = new ArrayList();

            try
            {
                DirectoryInfo mainDir = new DirectoryInfo(folderName);
                foreach (FileInfo file in mainDir.GetFiles("*.*"))
                {
                    try
                    {
                        File.Delete(file.FullName);
                    }
                    catch (Exception e)
                    {
                        if (errorType == Operation.ErrorTypes.STOP_ON_ERROR)
                        {
                            return(new ActionResult(false, e.Message));
                        }
                        errorList.Add(e.Message);
                    }
                }
                foreach (DirectoryInfo dir in mainDir.GetDirectories())
                {
                    ActionResult result = DeleteFolder(dir.FullName, errorType);
                    if (!result.IsEnd)
                    {
                        if (errorType == Operation.ErrorTypes.STOP_ON_ERROR)
                        {
                            return(new ActionResult(false, result.Error));
                        }
                        AddResultToErrorList(errorList, result);
                    }
                }
                Directory.Delete(folderName, true);
                if (errorList.Count == 0)
                {
                    isSuccessful = true;
                }
            }
            catch (Exception e)
            {
                msg          = e.Message;
                isSuccessful = false;
            }
            return(new ActionResult(isSuccessful, msg, errorList));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Обработать событие закрытия формы.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OperationForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.DialogResult == DialogResult.OK)
            {
                string sourceName             = sourceNameTextBox.Text;
                string destinationName        = destinationTextBox.Text;
                bool   isAdmin                = adminCheckBox.Checked;
                string sqlServerName          = sqlServerTextBox.Text;
                string dbLogin                = dbLoginTextBox.Text;
                string dbPassword             = dbPasswordTextBox.Text;
                int    parentIndex            = -1;
                bool   isGenerateBackupFolder = generateFolderCheckBox.Checked;

                Operation.OperationTypes type = Operation.OperationTypes.EMPTY;
                if (typeComboBox.SelectedIndex != -1)
                {
                    type = ((EnumWrapper <Operation.OperationTypes>)typeComboBox.SelectedItem).GetConst();
                }
                Operation.ErrorTypes error = Operation.ErrorTypes.EMPTY;
                if (errorComboBox.SelectedIndex != -1)
                {
                    error = ((EnumWrapper <Operation.ErrorTypes>)errorComboBox.SelectedItem).GetConst();
                }
                if (parentComboBox.SelectedIndex > 0)
                {
                    string str = ((EnumWrapper <Operation>)parentComboBox.SelectedItem).ToString();
                    str         = str.Substring(0, str.IndexOf(' '));
                    parentIndex = int.Parse(str) - 1;
                }
                if ((sourceName.Equals("") && destinationName.Equals("")) || type == Operation.OperationTypes.EMPTY || error == Operation.ErrorTypes.EMPTY)
                {
                    MessageBox.Show("Set missing data", "Data error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    e.Cancel = true;
                }
                if (operation == null)
                {
                    operation = new Operation(type, sourceName, error, isAdmin, destinationName, sqlServerName, dbLogin, dbPassword, parentIndex, isGenerateBackupFolder);
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Запустить все SQL-скрипты в папке.
        /// </summary>
        /// <param name="sqlFolder"> папка с SQL-скриптами </param>
        /// <param name="sqlConnect"> строка подключения к БД </param>
        /// <returns> результат выполнения </returns>
        public static ActionResult RunSQLQueryInFolder(string sqlFolder, string sqlConnect, Operation.ErrorTypes errorType)
        {
            string    msg          = "";
            bool      isSuccessful = false;
            ArrayList errorList    = new ArrayList();

            try
            {
                DirectoryInfo mainDir = new DirectoryInfo(sqlFolder);

                foreach (FileInfo file in mainDir.GetFiles("*.sql"))
                {
                    ActionResult result = RunSQLQuery(file.FullName, sqlConnect);
                    if (!result.IsEnd)
                    {
                        if (errorType == Operation.ErrorTypes.STOP_ON_ERROR)
                        {
                            return(new ActionResult(false, result.Error));
                        }
                        AddResultToErrorList(errorList, result);
                    }
                }
                foreach (DirectoryInfo dir in mainDir.GetDirectories())
                {
                    ActionResult result = RunSQLQueryInFolder(dir.FullName, sqlConnect, errorType);
                    if (!result.IsEnd)
                    {
                        if (errorType == Operation.ErrorTypes.STOP_ON_ERROR)
                        {
                            return(new ActionResult(false, result.Error));
                        }
                        AddResultToErrorList(errorList, result);
                    }
                }
                if (errorList.Count == 0)
                {
                    isSuccessful = true;
                }
            }
            catch (Exception e)
            {
                msg = e.Message;
            }
            return(new ActionResult(isSuccessful, msg, errorList));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Копировать папку.
        /// </summary>
        /// <param name="folderName"> полный путь к папке, которая копируется </param>
        /// <param name="destinationFolder"> полный путь к папке, куда копировать </param>
        /// <returns> результат выполнения </returns>
        public static ActionResult CopyFolder(string folderName, string destinationFolder, Operation.ErrorTypes errorType)
        {
            bool      isSuccessful = false;
            string    msg          = "";
            ArrayList errorList    = new ArrayList();

            try
            {
                DirectoryInfo mainDir = new DirectoryInfo(folderName);

                string folder = Path.Combine(destinationFolder, mainDir.Name);
                if (!Directory.Exists(folder))
                {
                    Directory.CreateDirectory(folder);
                }

                foreach (FileInfo file in mainDir.GetFiles("*.*"))
                {
                    try
                    {
                        string copyFileName = Path.Combine(folder, file.Name);
                        File.Copy(file.FullName, copyFileName, true);
                        FileInfo fi = new FileInfo(copyFileName);
                        fi.IsReadOnly = false;
                    }
                    catch (Exception e)
                    {
                        if (errorType == Operation.ErrorTypes.STOP_ON_ERROR)
                        {
                            return(new ActionResult(false, e.Message));
                        }
                        errorList.Add(e.Message);
                    }
                }
                foreach (DirectoryInfo dir in mainDir.GetDirectories())
                {
                    ActionResult result = CopyFolder(dir.FullName, folder, errorType);
                    if (!result.IsEnd)
                    {
                        if (errorType == Operation.ErrorTypes.STOP_ON_ERROR)
                        {
                            return(new ActionResult(false, result.Error));
                        }
                        AddResultToErrorList(errorList, result);
                    }
                }
                if (errorList.Count == 0)
                {
                    isSuccessful = true;
                }
            }
            catch (Exception e)
            {
                msg = e.Message;
            }
            return(new ActionResult(isSuccessful, msg, errorList));
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Создать резервную копию папки.
 /// </summary>
 /// <param name="folderName"> полный путь к папке, которая копируется </param>
 /// <param name="backupFolder"> полный путь к папке, куда копировать </param>
 /// <returns> результат выполнения </returns>
 public static ActionResult BackupFolder(string folderName, string backupFolder, Operation.ErrorTypes errorType)
 {
     if (!Directory.Exists(folderName))
     {
         return(new ActionResult(false, "Folder '" + folderName + "' not found."));
     }
     try
     {
         if (!Directory.Exists(backupFolder))
         {
             Directory.CreateDirectory(backupFolder);
         }
     }
     catch (Exception e)
     {
         return(new ActionResult(false, e.Message));
     }
     return(CopyFolder(folderName, backupFolder, errorType));
 }