/// <summary> /// Проверка на необходимость проверки директории /// </summary> /// <param name="inputFiles">Файлы из директории</param> /// <param name="directory">Директория</param> /// <param name="fileProcessor">Процессор</param> /// <returns></returns> private bool NeedProcessDirectory(FileSystemInfo directory, out IReadOnlyCollection <string> inputFiles, out FileProcessorBase fileProcessor) { ConsoleHelper.Info($"Начинаем обработку директории {directory.FullName}"); inputFiles = default; fileProcessor = default; var directoryFiles = Directory.GetFiles(directory.FullName).Select(f => new FileInfo(f)).ToList(); if (directoryFiles.Count == 0) { ConsoleHelper.Warn($"Директория {directory.FullName} не содержит файлов. Пропускаем"); return(false); } if (directoryFiles.Any(f => f.FileNameEquals(Const.REPORT_FILENAME))) { ConsoleHelper.Warn($"Директория {directory.FullName} содержит файл {Const.REPORT_FILENAME}. Пропускаем"); return(false); } if (!TryGetProcessor(directoryFiles, out fileProcessor)) { ConsoleHelper.Warn($"Директория {directory.FullName} не содержит файлов {string.Join(", ", _processors.Select(t => t.FileName))}. Пропускаем"); return(false); } ConsoleHelper.Info($"Обрабатываем директорию {directory.FullName} в режиме {fileProcessor.FileName}"); inputFiles = directoryFiles .Where(f => _config.SupportExtensions.Any(f.ExtensionEquals)) .OrderBy(f => f.Name) .Select(t => t.FullName) .ToList(); return(true); }
/// <summary> /// Получение режма работы процессора /// </summary> /// <param name="directoryFiles"></param> /// <param name="fileProcessor"></param> /// <returns></returns> private bool TryGetProcessor(IEnumerable <FileInfo> directoryFiles, out FileProcessorBase fileProcessor) { fileProcessor = _processors.FirstOrDefault(p => directoryFiles.Any(f => f.FileNameEquals(p.FileName))); return(fileProcessor != null); }