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); } }
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); }
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); }