/// <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); }
/// <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)); }
/// <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); } } }
/// <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)); }
/// <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)); }
/// <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)); }