/// <summary>
        /// The file visitor.
        /// </summary>
        /// <param name="rootPath">The file path.</param>
        private void FileVisitor(string rootPath)
        {
            if (_cancelOperation)
            {
                return;
            }

            this.FoundItemRaised(new FoundItemEventArgs(rootPath, SearchItems.File));

            if (_cancelOperation)
            {
                return;
            }

            if (_validator.IsFiltered(rootPath))
            {
                var filteredArgs = new FilteredItemEventArgs(rootPath, SearchItems.File);

                this.FilteredItemRaised(filteredArgs);

                if (_cancelOperation || _excludeItem)
                {
                    return;
                }

                _saveManager.SaveItem(rootPath, _savedItems);
            }
        }
        /// <summary>
        /// The directory visitor.
        /// </summary>
        /// <param name="rootPath">The directory path.</param>
        private void DirectoryVisitor(string rootPath)
        {
            if (_cancelOperation)
            {
                return;
            }

            this.FoundItemRaised(new FoundItemEventArgs(rootPath, SearchItems.Directory));

            if (_validator.IsFiltered(rootPath))
            {
                var filteredArgs = new FilteredItemEventArgs(rootPath, SearchItems.Directory);

                this.FilteredItemRaised(filteredArgs);

                if (_cancelOperation)
                {
                    return;
                }

                if (!_excludeItem)
                {
                    _saveManager.SaveItem(rootPath, _savedItems);
                }
            }

            foreach (var file in Directory.EnumerateFiles(rootPath))
            {
                this.FileVisitor(file);

                if (_cancelOperation)
                {
                    return;
                }
            }

            var directories = Directory.GetDirectories(rootPath, "*", SearchOption.AllDirectories);

            if (directories.Any())
            {
                foreach (var directory in directories)
                {
                    this.DirectoryVisitor(directory);
                }
            }
        }
Example #3
0
        /// <summary>
        /// Handler for filtered event.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="eventArgs">The event args.</param>
        private void FilteredHandler(object sender, FilteredItemEventArgs eventArgs)
        {
            var searchInfo = new SearchInfo
            {
                Path      = eventArgs.FilteredPath,
                ItemType  = eventArgs.FilteredType,
                EventType = EventTypes.Filtered
            };

            _eventInfoList.Add(searchInfo);

            //condition for exclude files
            if (_eventInfoList.Count > _countForExclude)
            {
                eventArgs.ExcludeItem = true;
            }
        }
        /// <summary>
        /// Invoke filtered search event.
        /// </summary>
        private void FilteredItemRaised(FilteredItemEventArgs args)
        {
            Console.WriteLine($"Filtered {args.FilteredPath}");

            this.FilteredItem?.Invoke(this, args);

            if (args.CancelRequested)
            {
                _cancelOperation = true;

                Console.WriteLine("Cansel operation...");
            }

            if (args.ExcludeItem)
            {
                _excludeItem = true;

                Console.WriteLine($"Exclude {args.FilteredType}");
            }
        }