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