public Program() { confName = Path.ChangeExtension(AppDomain.CurrentDomain.FriendlyName, ".xml"); if (!File.Exists(confName)) { Console.WriteLine(@"Не найден конфигурационный файл!"); Console.WriteLine(@"Распаковываем его из внутренних ресурсов..."); WriteResourceToFile("xConfig", confName); } config = Xml_Config.Load(confName); if (!Directory.Exists("logs")) { Directory.CreateDirectory("logs"); } if (config.log) { Logger.SetFile("logs\\" + DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".log"); } Logger.ParseLevel(config.LogLevel); updateDirectory(); Logger.info("Версия программы: " + Application.ProductVersion); Logger.info("Уровень логирования: " + Logger.Level); }
public Xml_Form findCorrectForm(Worksheet worksheet, Xml_Config pConfig) { RegExCache regExCache = new RegExCache(); foreach (Xml_Form form in pConfig.Forms) { bool correct = true; Logger.info(""); Logger.info($"Проверяем форму \"{form.Name}\""); Logger.debug("=========================================="); int index = 1; foreach (Xml_Equal rule in form.Rules) { bool useRegex = rule.regex_pattern != null; bool validateRegex = rule.validate == "regex"; string cell; try { cell = worksheet.Cells[rule.Y, rule.X].Value.ToString(); } catch (Exception ex) { Logger.debug($"Произошла ошибка при чтении ячейки Y={rule.Y},X={rule.X}!"); Logger.debug($"Ожидалось: {rule.Text}"); Logger.debug("Ошибка: " + ex.Message); Logger.info($"Форма не подходит по условию №{index}"); correct = false; break; } string origcell = cell; if (useRegex && !validateRegex) { cell = regExCache.MatchGroup(cell, rule.regex_pattern, rule.regex_group); } bool failed = false; if (rule.Text != cell && !validateRegex) { failed = true; } if (validateRegex && !regExCache.IsMatch(cell, rule.Text)) { failed = true; } if (failed) { if (validateRegex || useRegex) { Logger.debug("Провалена проверка по регулярному выражению!"); } Logger.debug($"Проверка провалена (Y={rule.Y},X={rule.X})"); Logger.debug($"Ожидалось: {rule.Text}"); Logger.debug($"Найдено: {cell}"); if (useRegex) { Logger.debug($"Оригинальная ячейка: {origcell}"); Logger.debug($"Регулярное выражение: {rule.regex_pattern}"); Logger.debug($"Группа для поиска: {rule.regex_group}"); } Logger.info($"Форма не подходит по условию №{index}"); correct = false; break; } Logger.debug($"Y={rule.Y},X={rule.X}: {rule.Text}{(validateRegex ? " is match" : "==")}{cell}"); index++; } if (correct) { Logger.info($"Форма '{form.Name}' подходит для документа!"); return(form); } } return(null); }