Esempio n. 1
0
        protected override bool Process(IInteraction parameters)
        {
            bool success = true;
            // FileSystemInfo[] infos = rootDirectory.GetFileSystemInfos ("*", SearchOption.AllDirectories);

            IEnumerable <FileSystemInfo> infos = rootDirectory.EnumerateFileSystemInfos("*", SearchOption.AllDirectories);

            IEnumerator <FileSystemInfo> infoEnumerator = infos.GetEnumerator();

            while (infoEnumerator.MoveNext())
            {
                try {
                    FileSystemInfo info = infoEnumerator.Current;
                    if (info is FileInfo)
                    {
                        success &= FileFound.TryProcess(new FileInteraction(info, this.RootPath, parameters));
                    }
                    else if (info is DirectoryInfo)
                    {
                        success &= DirectoryFound.TryProcess(new DirectoryInteraction(info, this.RootPath, parameters));
                    }
                } catch (Exception ex) {
                    Secretary.Report(5, "Inclusion of new file failed; ", ex.Message);
                }
            }

            return(success);
        }
Esempio n. 2
0
        protected override bool Process(IInteraction parameters)
        {
            string fullPath = "";
            bool   success  = true;

            while (Changes.Count > 0)
            {
                fullPath = Changes.Dequeue();

                if (Directory.Exists(fullPath))
                {
                    success &= DirectoryFound.TryProcess(new DirectoryInteraction(new DirectoryInfo(fullPath), RootPath, parameters));
                }
                else if (File.Exists(fullPath))
                {
                    success &= FileFound.TryProcess(new FileInteraction(new FileInfo(fullPath), RootPath, parameters));
                }
                else
                {
                    success &= Gone.TryProcess(new FSInteraction(new FileInfo(fullPath), RootPath, parameters));
                }
            }

            return(success);
        }
Esempio n. 3
0
        protected virtual void OnDirectoryFound(ContentFindedEventArgs e)
        {
            if (ReferenceEquals(e, null))
            {
                throw new ArgumentNullException();
            }

            DirectoryFound?.Invoke(this, e);
            _searchStopped = e.StopSearch;
        }
Esempio n. 4
0
        IEnumerable <FileSystemInfo> GetFileSystemInfo(DirectoryInfo directoryInfo)
        {
            var allElements = directoryInfo.GetFileSystemInfos();

            foreach (var fileSystemInfo in allElements)
            {
                var itemFoundEventArgs    = new FileSystemInfoEventArgs(fileSystemInfo.FullName);
                var itemFilteredEventArgs = new FilteredFileSystemInfoEventArgs(fileSystemInfo.FullName);
                if (fileSystemInfo is FileInfo)
                {
                    FileFound?.Invoke(this, itemFoundEventArgs);
                    if (itemFoundEventArgs.StopSearch)
                    {
                        yield break;
                    }
                    if (_matchPredicate(fileSystemInfo) && !itemFoundEventArgs.Exclude)
                    {
                        FileFiltered?.Invoke(this, itemFilteredEventArgs);
                        if (itemFilteredEventArgs.StopSearch)
                        {
                            yield break;
                        }
                        if (!itemFilteredEventArgs.Exclude)
                        {
                            yield return(fileSystemInfo);
                        }
                    }
                }
                else if (fileSystemInfo is DirectoryInfo nextDirectory)
                {
                    DirectoryFound?.Invoke(this, itemFoundEventArgs);
                    if (itemFoundEventArgs.StopSearch)
                    {
                        yield break;
                    }
                    if (_matchPredicate(fileSystemInfo) && !itemFoundEventArgs.Exclude)
                    {
                        foreach (var nextFileSystemInfo in GetFileSystemInfo(nextDirectory))
                        {
                            yield return(nextFileSystemInfo);
                        }
                        DirectoryFiltered?.Invoke(this, itemFilteredEventArgs);
                        if (itemFilteredEventArgs.StopSearch)
                        {
                            yield break;
                        }
                        if (!itemFilteredEventArgs.Exclude)
                        {
                            yield return(fileSystemInfo);
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        private void ProcessFoundEntry(FileSystemInfoBase systemInfoBase)
        {
            var isDirectory = systemInfoBase.Attributes.HasFlag(FileAttributes.Directory);

            if (isDirectory)
            {
                DirectoryFound?.Invoke(systemInfoBase, EventArgs.Empty);
            }
            else
            {
                FileFound?.Invoke(systemInfoBase, EventArgs.Empty);
            }
        }
 private void OnDirectoryFound(VisitArgs args)
 {
     DirectoryFound.Run(this, args);
 }
Esempio n. 7
0
        private FileSystemInfoCustomCollection <CustomFileItem> GetItemsRecursively(string directoryPath, FilterMask filterMask)
        {
            var directoryInfo = (CustomDirectoryInfo)customDirectoryInfoFactory.CreateInstance(directoryPath);

            var output = new FileSystemInfoCustomCollection <CustomFileItem>();

            if (isFirstFilteredFileFound && filterMask.HasFlag(FilterMask.FirstOnly))
            {
                return(output);
            }

            if (!filterMask.HasFlag(FilterMask.NoFolders))
            {
                DirectoryFound?.Invoke(this, new ItemFoundArgs {
                    Item = directoryInfo
                });
                if (filterMask.HasFlag(FilterMask.IgnoreFilterFunction) || FileFilterDelegate.Invoke(directoryInfo))
                {
                    FilteredDirectoryFound?.Invoke(this, new ItemFoundArgs {
                        Item = directoryInfo
                    });
                    output.Add(directoryInfo);
                    isFirstFilteredFileFound = true;
                    if (isFirstFilteredFileFound && filterMask.HasFlag(FilterMask.FirstOnly))
                    {
                        return(output);
                    }
                }
            }

            var files = directoryInfo.GetFiles();

            foreach (var file in files)
            {
                FileFound?.Invoke(this, new ItemFoundArgs {
                    Item = file
                });
                if (filterMask.HasFlag(FilterMask.IgnoreFilterFunction) || FileFilterDelegate.Invoke(file))
                {
                    FilteredFileFound?.Invoke(this, new ItemFoundArgs {
                        Item = file
                    });
                    output.Add(file);
                    isFirstFilteredFileFound = true;
                    if (isFirstFilteredFileFound && filterMask.HasFlag(FilterMask.FirstOnly))
                    {
                        return(output);
                    }
                }
            }

            var directories = directoryInfo.GetDirectories();

            foreach (var directory in directories)
            {
                var result = GetItemsRecursively(directory.FullName, filterMask);
                foreach (var item in result)
                {
                    output.Add(item);
                }
            }

            return(output);
        }
 protected virtual void OnRaiseDirectoryFoundEvent(DirectoryEventArgs directoryEventArgs)
 {
     DirectoryFound?.Invoke(this, directoryEventArgs);
 }
Esempio n. 9
0
 /// <summary>
 /// Executed when a directory is found.
 /// </summary>
 /// <param name="directory">The found directory.</param>
 protected virtual void OnDirectoryFound(string directory)
 {
     DirectoryFound?.Invoke(directory);
 }
 protected virtual void OnDirectoryFound(ItemFoundInfoEventArgs e)
 {
     DirectoryFound?.Invoke(this, e);
 }
Esempio n. 11
0
 protected virtual void OnDirectoryFound(SystemVisitorEventArgs e) => DirectoryFound?.Invoke(this, e);
Esempio n. 12
0
 protected void OnDirectoryFound(object sender, DirectoryFoundEventArgs args)
 {
     DirectoryFound?.Invoke(sender, args);
 }
Esempio n. 13
0
 private void OnDirectoryFound(PathEventArgs args)
 {
     DirectoryFound?.Invoke(this, args);
 }
Esempio n. 14
0
 protected virtual void OnDirectoryFound(DirectoryEventArgs args)
 {
     DirectoryFound?.Invoke(this, args);
 }
Esempio n. 15
0
        public void TraverseFileSystem()
        {
            Started?.Invoke();

            _dirsAndFiles = new List <FileSystemInfo>();
            var dirs = new Stack <string>();

            dirs.Push(_rootPath);

            while (dirs.Count > 0)
            {
                var      currentDir = dirs.Pop();
                string[] subDirs;

                try
                {
                    subDirs = Directory.GetDirectories(currentDir);

                    foreach (var subDir in subDirs)
                    {
                        var directoryInfo = new DirectoryInfo(subDir);
                        _dirsAndFiles.Add(directoryInfo);

                        var args = new ItemFoundEventArgs <DirectoryInfo>(directoryInfo);
                        DirectoryFound?.Invoke(this, args);

                        if (args.CancelRequested)
                        {
                            return;
                        }

                        dirs.Push(subDir);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    continue;
                }

                string[] files;

                try
                {
                    files = Directory.GetFiles(currentDir);

                    foreach (var file in files)
                    {
                        var fileInfo = new FileInfo(file);
                        _dirsAndFiles.Add(fileInfo);

                        var args = new ItemFoundEventArgs <FileInfo>(fileInfo);
                        FileFound?.Invoke(this, args);

                        if (args.CancelRequested)
                        {
                            break;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    continue;
                }
            }

            Finished?.Invoke();
        }