Exemplo n.º 1
0
        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();
            }
Exemplo n.º 3
0
        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();
        }