示例#1
0
        private void ProcessDirectory(string directoryPath, ISpecification <NodeModelBase> specification,
                                      INodeFoundEventPublisher recursiveSearchResult)
        {
            var model = _directoryService.GetDirectory(directoryPath);

            if (specification.IsSatisfiedBy(model))
            {
                recursiveSearchResult.RaiseNodeFoundEvent(directoryPath);
            }
        }
示例#2
0
    private static void ProcessNode(string nodePath, ISpecification <NodeModelBase> specification,
                                    INodeFoundEventPublisher publisher, Func <string, NodeModelBase> factory)
    {
        var model = factory(nodePath);

        if (specification.IsSatisfiedBy(model))
        {
            publisher.RaiseNodeFoundEvent(nodePath);
        }
    }
示例#3
0
        private void ProcessFile(string filePath, ISpecification <NodeModelBase> specification,
                                 INodeFoundEventPublisher publisher)
        {
            var model = _fileService.GetFile(filePath);

            if (specification.IsSatisfiedBy(model))
            {
                publisher.RaiseNodeFoundEvent(filePath);
            }
        }
示例#4
0
 private void ProcessNodes(string directory, ISpecification <NodeModelBase> specification,
                           INodeFoundEventPublisher publisher)
 {
     foreach (var node in _directoryService.GetNodesRecursively(directory))
     {
         try
         {
             if (_fileService.CheckIfExists(node))
             {
                 ProcessFile(node, specification, publisher);
             }
             else
             {
                 ProcessDirectory(node, specification, publisher);
             }
         }
         catch (Exception ex)
         {
             _logger.LogError(ex, "Exception occurred during recursive search");
         }
     }
 }
示例#5
0
 private void ProcessDirectory(string directoryPath, ISpecification <NodeModelBase> specification,
                               INodeFoundEventPublisher publisher) =>
 ProcessNode(directoryPath, specification, publisher, _directoryService.GetDirectory);
示例#6
0
 private void ProcessFile(string filePath, ISpecification <NodeModelBase> specification,
                          INodeFoundEventPublisher publisher) =>
 ProcessNode(filePath, specification, publisher, _fileService.GetFile);
 static Task TaskFactory(INodeFoundEventPublisher r) => Task.CompletedTask;