Ejemplo n.º 1
0
 /// <summary>
 /// Returns a string based on the nature of mismatches in finding
 /// </summary>
 /// <param name="finding">the assessed state of the Fact</param>
 /// <returns></returns>
 public string ResolveMismatchMessage(FactValidationFindings finding)
 {
     if (finding.linksListExceptions.Count == 1)
     {
         var linkText = finding.fact.GetTextFromHyperlink(finding.linksListExceptions.FirstOrDefault());
         var factNr   = finding.fact.ID + 1;
         return(string.Format(Language.Resources.MismatchMessage1, linkText, factNr.ToString()) + "\r\n");
     }
     else if (finding.linksListExceptions.Count > 1)
     {
         var hyperLinkStrings = new List <string>();
         foreach (var link in finding.linksListExceptions)
         {
             var linkText = finding.fact.GetTextFromHyperlink(link);
             hyperLinkStrings.Add(linkText);
         }
         var sb = new StringBuilder();
         for (int i = 0; i < hyperLinkStrings.Count - 1; i++)
         {
             sb.AppendLine(i.ToString() + ", ");
         }
         return(string.Format(Language.Resources.MismatchMessage2, sb) + "\r\n");
     }
     else
     {
         throw new ArgumentOutOfRangeException("linksListExceptions cannot be empty.");
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Validates the data inside the fact and returns these findings.
        /// </summary>
        /// <returns></returns>
        public FactValidationFindings Validate()
        {
            var findings  = new FactValidationFindings(this);
            var linksList = FindHyperlinks(FactDocument).ToList();

            if (linksList.Count != linksList.Distinct().Count())
            {
                var hash = new HashSet <Hyperlink>();

                foreach (var link in linksList)
                {
                    if (!hash.Add(link))
                    {
                        findings.duplicates.Add(link);
                        findings.areThereDuplicates = true;
                    }
                }
            }
            else
            {
                if (linksList.Count == TotalFactMembers.Keys.Count)
                {
                    IEnumerable <Hyperlink> matches = linksList.Intersect(TotalFactMembers.Keys);
                    if (matches.Count() == linksList.Count())
                    {
                        findings.allGreen = true;
                    }
                    else
                    {
                        findings.mismatch            = true;
                        findings.linksListExceptions = linksList.Except(TotalFactMembers.Keys).ToList();
                        findings.dictExceptions      = TotalFactMembers.Keys.Except(linksList).ToList();
                    }
                }
                else
                {
                    var greater = Math.Max(linksList.Count, TotalFactMembers.Keys.Count);
                    if (greater == linksList.Count)
                    {
                        findings.linkListHasMore     = true;
                        findings.differenceCount     = greater - TotalFactMembers.Keys.Count;
                        findings.linksListExceptions = linksList.Except(TotalFactMembers.Keys).ToList();
                    }
                    else if (greater == TotalFactMembers.Keys.Count)
                    {
                        findings.dictKeysHasMore = true;
                        findings.differenceCount = greater - linksList.Count;
                        findings.dictExceptions  = TotalFactMembers.Keys.Except(linksList).ToList();
                    }
                }
            }
            return(findings);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns a string based on the nature of duplications in finding
        /// </summary>
        /// <param name="finding">the assessed state of the Fact</param>
        /// <returns></returns>
        public string ResolveDuplicatesMessage(FactValidationFindings finding)
        {
            var hyperLinkStrings = new List <string>();

            foreach (var duplicate in finding.duplicates)
            {
                var linkText = finding.fact.GetTextFromHyperlink(duplicate);
                hyperLinkStrings.Add(linkText);
            }
            var sb = new StringBuilder();

            for (int i = 0; i < hyperLinkStrings.Count; i++)
            {
                sb.AppendLine(i.ToString() + ", ");
            }
            return(string.Format(Language.Resources.DuplicatesMessage, sb + "\r\n"));
        }