Example #1
0
        public void Generate(string searchQuery,
                             IEnumerable <string> inputPaths,
                             IEnumerable <MatchingFile> searchResults)
        {
            SummaryOptionsForm form = new SummaryOptionsForm();

            if (form.ShowDialog() == DialogResult.OK)
            {
                ReportOptions    options       = form.Options;
                string           fileExtension = Path.GetExtension(options.outputFilePath);
                IDocumentBuilder builder       = DocumentBuilderFactory.Create(fileExtension);

                Generate(builder, options, searchQuery, inputPaths, searchResults);
            }
        }
Example #2
0
        internal void Generate(IDocumentBuilder builder,
                               ReportOptions options,
                               string searchQuery,
                               IEnumerable <string> inputPaths,
                               IEnumerable <MatchingFile> searchResults)
        {
            builder.AddReportHeader(options.headerHasGenerationDate ? DateTime.Now : (DateTime?)null,
                                    options.headerHasSearchQuery ? searchQuery : null,
                                    options.headerHasInputPaths ? inputPaths : null);

            builder.AddSectionHeader("Search results");

            IEnumerable <MatchingFile> sortedResults = searchResults.OrderByDescending(info => info.accuracy);

            if (options.maxEntries > 0)
            {
                sortedResults = sortedResults.Take(options.maxEntries);
            }

            foreach (MatchingFile match in sortedResults)
            {
                SearchResult result = new SearchResult();
                result.fileName         = match.fileInfo.Name;
                result.fullFilePath     = options.resultHasFullFilePath ? match.fileInfo.ToString() : null;
                result.fileSizeBytes    = options.resultHasFileSize ? match.fileInfo.Length : (long?)null;
                result.dateCreated      = options.resultHasCreationTime ? match.fileInfo.CreationTime : (DateTime?)null;
                result.dateLastAccess   = options.resultHasLastAccessTime ? match.fileInfo.LastAccessTime : (DateTime?)null;
                result.dateLastModified = options.resultHasLastModificationTime ? match.fileInfo.LastWriteTime : (DateTime?)null;

                builder.AddSearchResult(result);

                if (options.resultHasContext)
                {
                    List <PositionTextPairGroup> groups = GroupMatchPositions(match.searchResults, options.contextSizeChars);
                    GenerateContext(builder, groups, match.fileReader);
                }
            }

            builder.AddReportFooter();
            builder.Save(options.outputFilePath);
        }
Example #3
0
        internal void Generate(IDocumentBuilder builder,
                               ReportOptions options,
                               string searchQuery,
                               IEnumerable<string> inputPaths,
                               IEnumerable<MatchingFile> searchResults)
        {
            builder.AddReportHeader(options.headerHasGenerationDate ? DateTime.Now : (DateTime?)null,
                                    options.headerHasSearchQuery ? searchQuery : null,
                                    options.headerHasInputPaths ? inputPaths : null);

            builder.AddSectionHeader("Search results");

            IEnumerable<MatchingFile> sortedResults = searchResults.OrderByDescending(info => info.accuracy);
            if (options.maxEntries > 0)
                sortedResults = sortedResults.Take(options.maxEntries);

            foreach (MatchingFile match in sortedResults)
            {
                SearchResult result = new SearchResult();
                result.fileName = match.fileInfo.Name;
                result.fullFilePath = options.resultHasFullFilePath ? match.fileInfo.ToString() : null;
                result.fileSizeBytes = options.resultHasFileSize ? match.fileInfo.Length : (long?)null;
                result.dateCreated = options.resultHasCreationTime ? match.fileInfo.CreationTime : (DateTime?)null;
                result.dateLastAccess = options.resultHasLastAccessTime ? match.fileInfo.LastAccessTime : (DateTime?)null;
                result.dateLastModified = options.resultHasLastModificationTime ? match.fileInfo.LastWriteTime : (DateTime?)null;

                builder.AddSearchResult(result);

                if (options.resultHasContext)
                {
                    List<PositionTextPairGroup> groups = GroupMatchPositions(match.searchResults, options.contextSizeChars);
                    GenerateContext(builder, groups, match.fileReader);
                }
            }

            builder.AddReportFooter();
            builder.Save(options.outputFilePath);
        }