public void TestFilterEvaluationFailure()
        {
            FilterCondition parentDirectoryCondition = new FilterCondition(FileMetaAttributesStringConstants.FileMetaAttributeParentDirectory, FileFilterOperator.Equals,
                                                                   @"C:\Projects\Classifier\findfilesutil\Trunk\src\KMPAlgorithmTestRunner\KMPAlgorithmTestRunner\TestData", FilterAttributeDataType.String);
            FilterCondition fileExtensionFilterCondition = new FilterCondition(FileMetaAttributesStringConstants.FileMetaAttributeFileExtension, FileFilterOperator.Equals, "xls", FilterAttributeDataType.String);

            List<FilterCondition> filterConditions = new List<FilterCondition>();
            filterConditions.Add(parentDirectoryCondition);
            filterConditions.Add(fileExtensionFilterCondition);

            //Get information about a test file and then create a dummy filter condition based on the
            //file attribites of the test file

            FileInfo fileInfo = new FileInfo(@"C:\Projects\Classifier\findfilesutil\Trunk\src\KMPAlgorithmTestRunner\KMPAlgorithmTestRunner\TestData\Microsoft.txt");

            FilterCondition fileCreateCondition = new FilterCondition(FileMetaAttributesStringConstants.FileMetaAttributeCreationTime, FileFilterOperator.Equals, fileInfo.CreationTime.Ticks.ToString(), FilterAttributeDataType.Long);
            FileMetaAttributes fileAttributes = new FileMetaAttributes(fileInfo.DirectoryName, fileInfo.CreationTime.Ticks, fileInfo.LastWriteTime.Ticks, fileInfo.Length, fileInfo.Extension, @"HORNET\\prahaladd");

            filterConditions.Add(fileCreateCondition);

            FileMetaAttributeFilter fileFilter = new FileMetaAttributeFilter(filterConditions);

            FileFilterEvaluator filterEvaluator = new FileFilterEvaluator(fileFilter, fileAttributes);

            bool result = filterEvaluator.EvaluateFilter();

            Assert.IsFalse(result);
        }
        public void SearchInFiles(bool searchSubDirectories, FileMetaAttributeFilter fileFilter)
        {
            DirectoryTreeWalker directoryTreeWalker = new DirectoryTreeWalker();
            directoryTreeWalker.SearchSubDirectories = searchSubDirectories;
            directoryTreeWalker.WalkTheTree(SearchRootPath);

            //ok now the tree has been walked. Get the list of all the text files and then determine the presence of the strings
            string fileContent = string.Empty;

            foreach (string file in directoryTreeWalker.Files)
            {
                if (!Utilities.IsTextFile(file))
                    continue;

                FileMetaAttributes fileAttributes = Utilities.GetFileMetaAttributes(file);

                if (null != fileFilter && !Utilities.EvaluateMetaAttributeFilters(fileAttributes, fileFilter))
                    continue;

                fileContent = Utilities.ReadTextFromFiles(file);

                KMPEngine kmpEngine = new KMPEngine(fileContent, SearchPattern);

                List<int> occurences = kmpEngine.Find(true, true);

                if (occurences.Count == 0)
                    continue;

                if (occurences[0] != -1)
                {

                    _fileNamesWithContentPresent.Add(file);

                    _fileNameToOccurencePositionsMap.Add(file, occurences);
                }
            }
        }
 public static bool EvaluateMetaAttributeFilters(FileMetaAttributes fileAttributes, FileMetaAttributeFilter filter)
 {
     FileFilterEvaluator filterEvaluator = new FileFilterEvaluator(filter,fileAttributes);
     return filterEvaluator.EvaluateFilter();
 }
 /// <summary>
 /// Creates an instance of a file filter evaluator
 /// </summary>
 /// <param name="fileFilter">The file filter to be evaluated</param>
 /// <param name="fileAttributes">The attributes of the file against which the filter will be evaluated</param>
 public FileFilterEvaluator(FileMetaAttributeFilter fileFilter, FileMetaAttributes fileAttributes)
 {
     _fileFilter = fileFilter;
     _fileAttributes = fileAttributes;
 }