public IEnumerable <AbstractSectorDataFile> GetFilesToInclude(SectorDataFileFactory dataFileFactory)
        {
            if (!Directory.Exists(Folder))
            {
                throw new InputDirectoryNotFoundException(Folder);
            }

            string[] allFiles = Directory.GetFiles(
                Folder,
                "*.*",
                Recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly
                );

            // Match on include patterns
            if (IncludePattern != null)
            {
                allFiles = allFiles.Where(file => IncludePattern.IsMatch(file)).ToArray();
            }

            Array.Sort(allFiles, StringComparer.InvariantCulture);

            List <AbstractSectorDataFile> files = new List <AbstractSectorDataFile>();

            foreach (string path in allFiles)
            {
                if (ShouldInclude(path))
                {
                    files.Add(dataFileFactory.Create(path, InputDataType));
                }
            }

            return(files);
        }
예제 #2
0
        public IEnumerable <AbstractSectorDataFile> GetFilesToInclude(SectorDataFileFactory dataFileFactory)
        {
            List <AbstractSectorDataFile> files = new List <AbstractSectorDataFile>();

            foreach (string path in FileList)
            {
                if (File.Exists(path))
                {
                    if (this.ExceptWhereExists == "" || !File.Exists(ExceptWhereExists))
                    {
                        files.Add(dataFileFactory.Create(path, this.InputDataType));
                    }
                }
                else if (!this.IgnoreMissing)
                {
                    throw new InputFileNotFoundException(path);
                }
            }

            return(files);
        }
        public static InputFileList CreateFromInclusionRules(
            SectorDataFileFactory dataFileFactory,
            ConfigInclusionRules config,
            OutputGroupRepository outputGroups
            )
        {
            InputFileList fileList = new InputFileList();

            foreach (IInclusionRule rule in config)
            {
                OutputGroup   group     = rule.GetOutputGroup();
                List <string> filePaths = new();
                foreach (AbstractSectorDataFile file in rule.GetFilesToInclude(dataFileFactory))
                {
                    fileList.Add(file);
                    filePaths.Add(file.FullPath);
                }

                outputGroups.AddGroupWithFiles(group, filePaths);
            }
            return(fileList);
        }