public void TestOracle() { var sut = new OracleDataClient(); Action act = () => { sut.OpenConnection(); sut.ExecuteOracleCommand(); sut.CloseConnection(); }; act.ShouldNotThrow <Exception>("No ha superado la validación de Oracle"); }
public static void ISPDemo() { Console.WriteLine("\n\nInterface Inversion Principle Demo "); // Each client will implement their respective methods no base class forces the other client to implement the methods which dont required. // From the above implementation, we are not forcing Sql client to implemnt orcale logic or Oracle client to implement sql logic. ISqlDataProvider SqlDataProviderObject = new SqlDataClient(); SqlDataProviderObject.OpenConnection(); SqlDataProviderObject.ExecuteSqlCommand(); SqlDataProviderObject.CloseConnection(); IOracleDataProvider OracleDataProviderObject = new OracleDataClient(); OracleDataProviderObject.OpenConnection(); OracleDataProviderObject.ExecuteOracleCommand(); OracleDataProviderObject.CloseConnection(); }
static void Main(string[] args) { Console.SetWindowSize(140, 30); string message; int consoleCursor = 0; var configPath = Directory.GetCurrentDirectory() + "\\appconfig.json"; //Ставим логгер if (!Directory.Exists("\\logs")) { Directory.CreateDirectory("logs"); } Logger.SetFile(Directory.GetCurrentDirectory() + "\\logs\\" + $"user_log_{DateTime.Now:ddMMyy_hhmm}.txt"); //Чтение конфига Console.WriteLine("Подготовка загрузки.\nЧтение конфигурационного файла..."); try { ConfigUtil configUtil = new JsonConfigUtil(configPath); configUtil.ReadConfig(); message = $"Конфигурационный файл {configPath} успешно загружен."; WriteLineColor(message, ConsoleColor.DarkGreen); Logger.WriteLine(message); } catch (Exception) { message = $"Ошибка загрузки конфигурационного файла {configPath}!"; WriteLineColor(message, ConsoleColor.DarkRed); Logger.WriteLine(message); SayByeBye(); return; } DataClient dataClient = new OracleDataClient(AppConfig.DatabaseConnectionString); //<--для пластичности можно переделать в свитч if (!Directory.Exists(AppConfig.WorkingDirectory) || !dataClient.TestConnection()) { message = "Ошибка: Загрузка невозможна (отсутствует рабочая директория и/или соединение с БД)."; WriteLineColor(message, ConsoleColor.DarkRed); Logger.WriteLine(message); SayByeBye(); return; } foreach (var table in AppConfig.Tables) { dataClient.ConfTable = table; if (Directory.Exists(AppConfig.WorkingDirectory + table.SubDirectory)) { consoleCursor += 6; var timer = new System.Diagnostics.Stopwatch(); timer.Start(); DrawLine(); WriteLineDifferentColor("Обработка поддиректории {1}", $"{table.SubDirectory}", ConsoleColor.DarkYellow); Logger.WriteLine($"Обработка поддиректории {table.SubDirectory}"); var pathList = Directory.GetFiles(AppConfig.WorkingDirectory + table.SubDirectory + "\\", AppConfig.FileExtension).ToList(); WriteLineDifferentColor("Будет обработано {1} файлов.\nЗагрузка файлов:\n", $"{pathList.Count}", ConsoleColor.DarkYellow); Logger.WriteLine($"Будет обработано {pathList.Count} файлов.\nЗагрузка файлов:\n"); foreach (var path in pathList) { ClearLine(consoleCursor); ClearLine(consoleCursor + 1); Console.SetCursorPosition(0, consoleCursor); WriteLineDifferentColor("Прогресс обработки ({1}/{2}):", $"{pathList.IndexOf(path) + 1}", $"{pathList.Count}", ConsoleColor.DarkGreen, ConsoleColor.DarkYellow); message = $"Файл {path.Split('\\')[path.Split('\\').Length - 1]} "; Console.Write(message); Logger.WriteLine(message); try { DataParser parser = new XlsxDataParser(path, table); DataTable dataTable = parser.ReadFile(); dataClient.Send(dataTable); if (AppConfig.DeleteFilesAfterLoad) { File.Delete(path); } } catch (Exception) { Console.WriteLine("ОШИБКА."); Logger.WriteLine("ОШИБКА. Файл не загружен."); } } timer.Stop(); message = $"Файлы поддиректории загружены за {timer.Elapsed.TotalMinutes} минут."; WriteLineColor(message, ConsoleColor.DarkGreen); Logger.WriteLine(message); } } WriteLineColor("Все файлы успешно загружены.", ConsoleColor.Green); Logger.WriteLine("Все файлы успешно загружены."); SayByeBye(); }