Exemplo n.º 1
0
        public static void UpdateConfig(ConnectionConfig config)
        {
            List <ConnectionConfig> configs = JsonConfigUtil.GetConfigObject <List <ConnectionConfig> >(PathConnections);

            //检查旧名称
            if (configs == null || !configs.Exists(p => p.Id.Equals(config.Id)))
            {
                throw new KeyNotFoundException($"配置文件中已丢失原配置信息。");
            }
            //检查新名称
            List <ConnectionConfig> tmps = configs.Where(p => p.Id.Equals(config.Id) == false).ToList();

            if (tmps != null && tmps.Exists(p => p.Name.Equals(config.Name)))
            {
                throw new DuplicateMemberException($"已存在名为 {config.Name} 的配置信息。");
            }

            ConnectionConfig tmp = configs.Find(p => p.Id.Equals(config.Id));

            tmp.IP       = config.IP;
            tmp.Name     = config.Name;
            tmp.Password = config.Password;
            tmp.Port     = config.Port;

            JsonConfigUtil.SetConfigObject <List <ConnectionConfig> >(PathConnections, configs);
            DictConnectionConfig[config.Id] = config;
            string host = (string.IsNullOrEmpty(config.Password) ? "" : $"{config.Password}@") + $"{config.IP}:{config.Port}";

            string[] hosts = new string[] { host };
            RedisCaches[config.Id] = new RedisCache(hosts, hosts);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 移除配置信息。
        /// </summary>
        /// <param name="id"></param>
        public static void RemoveConfig(string id)
        {
            List <ConnectionConfig> configs = JsonConfigUtil.GetConfigObject <List <ConnectionConfig> >(PathConnections);
            int index = configs.FindIndex(p => p.Id.Equals(id));

            configs.RemoveAt(index);
            JsonConfigUtil.SetConfigObject <List <ConnectionConfig> >(PathConnections, configs);

            DictConnectionConfig.Remove(id);
            RedisCaches.Remove(id);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 保存配置信息。
        /// </summary>
        /// <param name="config"></param>
        /// <exception cref="DuplicateMemberException">成员重复异常</exception>
        public static void SaveConfig(ConnectionConfig config)
        {
            List <ConnectionConfig> configs = JsonConfigUtil.GetConfigObject <List <ConnectionConfig> >(PathConnections);

            if (configs == null)
            {
                configs = new List <ConnectionConfig>();
            }
            if (configs.Exists(p => p.Name.Equals(config.Name)))
            {
                throw new DuplicateMemberException($"已存在名为 {config.Name} 的配置信息。");
            }
            configs.Add(config);

            JsonConfigUtil.SetConfigObject <List <ConnectionConfig> >(PathConnections, configs);

            DictConnectionConfig.Add(config.Id, config);
            string host = (string.IsNullOrEmpty(config.Password) ? "" : $"{config.Password}@") + $"{config.IP}:{config.Port}";

            string[] hosts = new string[] { host };
            RedisCaches.Add(config.Id, new RedisCache(hosts, hosts));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 获取所有配置信息
        /// </summary>
        /// <returns></returns>
        public static List <ConnectionConfig> GetAllConnectionConfig()
        {
            List <ConnectionConfig> configs = JsonConfigUtil.GetConfigObject <List <ConnectionConfig> >(PathConnections);

            return(configs);
        }
Exemplo n.º 5
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();
        }