protected void OnSingleFileCrawlFinished(ReportProgressEventArgs e)
 {
     EventHandler<ReportProgressEventArgs> handler = SingleFileCrawlFinished;
     if (handler != null)
     {
         handler(this, e);
     }
 }
 void regExCrawler_SingleFileCrawlFinished(object sender, ReportProgressEventArgs e)
 {
     // report progress
     if (SingleFileCrawlFinished != null)
     {
         SingleFileCrawlFinished(this, e);
     }
 }
 private void RegExTractorSimpleWorkflow_SingleFileCrawlFinished(object sender, ReportProgressEventArgs e)
 {
     OnSingleFileCrawlFinished(e);
 }
 void fileIterator_SingleFileProcessed(object sender, ReportProgressEventArgs e)
 {
     OnSingleFileCrawlFinished(e);
 }
示例#5
0
 void workflow_SingleFileCrawlFinished(object sender, ReportProgressEventArgs e)
 {
     if (this.InvokeRequired)
     {
         BeginInvoke(new MethodInvoker(delegate() { workflow_SingleFileCrawlFinished(sender, e); }));
     }
     else labelProgress.Text = e.Message;
 }
        /// <summary>
        /// Parse the given content with the given search terms.
        /// </summary>
        /// <param name="SearchTerms"></param>
        /// <param name="Content"></param>
        /// <param name="FileName"></param>
        /// <param name="FileFolder"></param>
        /// <returns></returns>
        public List<Finding> Crawl(List<RegExSearchTerm> SearchTerms, string Content, string FileName, string FileFolder)
        {
            var findingResultList = new List<Finding>();

            // iterate through search terms
            // each search term may result in a finding
            // this finding will be added to finding result list
            foreach (var searchTerm in SearchTerms)
            {
                var finding = new Finding()
                {
                    Expression = searchTerm.Expression,
                    ExpressionFriendlyName = searchTerm.ExpressionFriendlyName,
                    FileName = FileName,
                    FileFolder = FileFolder,
                    Match = new List<RegExTractorMatchCollection>()
                };

                var regEx = new Regex(searchTerm.Expression);
                var regExMatchCollection = regEx.Matches(Content);

                // the System.Text.RegularExpression.Regex.Matches has not index
                // so we have to count the iterations by ourself
                int matchCount = 0;

                // iterate through match collection
                foreach (Match regExMatch in regExMatchCollection)
                {
                    // increase matchCount
                    matchCount++;
                    // create a new RegExtractorMatchCollection
                    var resultMatchCollection = new RegExTractorMatchCollection()
                    {
                        // set the id of the collection
                        Id = matchCount, MatchCollection = new List<RegExTractorMatch>()
                    };

                    // count match groups
                    var groupsCount = regExMatch.Groups.Count;

                    // loop throug groups
                    for (int g = 0; g < groupsCount; g++)
                    {
                        // create a single RegExTractorMatch
                        var resultMatch = new RegExTractorMatch()
                        {
                            Id = g + 1,
                            Match = regExMatch.Groups[g].Value
                        };
                        // add this match to result collection
                        resultMatchCollection.MatchCollection.Add(resultMatch);
                    }

                    // add the result match collection to finding result
                    finding.Match.Add(resultMatchCollection);

                }
                // add finding to findig list
                findingResultList.Add(finding);

                // report progress
                var eventArgs = new ReportProgressEventArgs();
                eventArgs.Message = String.Format(@"Finished search for expression {0} in file {1}\{2}", searchTerm.ExpressionFriendlyName, FileFolder, FileName);
                OnSingleFileCrawlFinished(eventArgs);
            }

            if (findingResultList == null) throw new ArgumentNullException();
            return findingResultList;
        }