public static ContextReport FromReport(ComparisonReportObjects report) { var result = new ContextReport(); foreach (var left in report.Contexts.Item1) { Scenario right = null; var leftFacts = left.Instance.Facts.Where(f => f.Context.Scenario == left); foreach (var r in report.Contexts.Item2) { var rightFacts = r.Instance.Facts.Where(f => f.Context.Scenario == r); if (rightFacts.Count() == leftFacts.Count()) { right = r; break; } } if (right != null) { result.Matches.Add(Tuple.Create(left, right)); } } return(result); }
public static ComparisonReportObjects ReportObjects(Instance a, Instance b, ComparisonTypes comparisons, BasicComparisons basicSelection) { var report = new ComparisonReportObjects(); if (comparisons.HasFlag(ComparisonTypes.Basic)) { report.Basics = BasicComparison(a, b, basicSelection).ToList(); } if (comparisons.HasFlag(ComparisonTypes.Contexts)) { report.Contexts = ScenarioComparison(a, b); } if (comparisons.HasFlag(ComparisonTypes.Facts)) { report.Facts = FactComparison(a, b); } if (comparisons.HasFlag(ComparisonTypes.DomainNamespaces)) { report.DomainNamespaces = DomainNamespaceComparison(a, b); } if (comparisons.HasFlag(ComparisonTypes.Units)) { report.Units = UnitComparison(a, b); } if (comparisons.HasFlag(ComparisonTypes.Entity)) { report.Entities = EntityComparison(a, b); } if (comparisons.HasFlag(ComparisonTypes.Entity)) { report.Periods = PeriodComparison(a, b); } if (comparisons.HasFlag(ComparisonTypes.TaxonomyVersion)) { report.TaxonomyVersions = TaxonomyVersionComparison(a, b); } if (comparisons.HasFlag(ComparisonTypes.SchemaReference)) { report.SchemaReferences = SchemaReferenceComparison(a, b); } if (comparisons.HasFlag(ComparisonTypes.FilingIndicators)) { report.FilingIndicators = FilingIndicatorComparison(a, b); } report.Result = GetResultForReport(report); return(report); }
static bool GetResultForReport(ComparisonReportObjects report) => !( (report.Basics != null && report.Basics.Any()) || (report.Contexts != null && (report.Contexts.Item1.Any() || report.Contexts.Item2.Any())) || (report.Facts != null && (report.Facts.Item1.Any()) || report.Facts.Item2.Any()) || (report.DomainNamespaces != null && (report.DomainNamespaces.Item1.Any() || report.DomainNamespaces.Item2.Any())) || (report.Units != null && (report.Units.Item1.Any() || report.Units.Item2.Any())) || (report.Entities != null && (report.Entities.Item1.Any() || report.Entities.Item2.Any())) || (report.Periods != null && (report.Periods.Item1.Any() || report.Periods.Item2.Any())) || (report.TaxonomyVersions != null && (report.TaxonomyVersions.Item1.Any() || report.TaxonomyVersions.Item2.Any())) || (report.SchemaReferences != null && (report.SchemaReferences.Item1.Any() || report.SchemaReferences.Item2.Any())) || (report.FilingIndicators != null && (report.FilingIndicators.Item1.Any() || report.FilingIndicators.Item2.Any())) );
public static FactReport FromReport(ComparisonReportObjects report) { var result = new FactReport(); var l = new LinkedList <Fact>(report.Facts.Item1); var r = new LinkedList <Fact>(report.Facts.Item2); foreach (var left in l) { Fact right = null; foreach (var candidate in r) { var match = false; if (candidate.Metric.Equals(left.Metric) && candidate.Context.Scenario.Equals(left.Context.Scenario)) { match = true; } else if (candidate.Equals(left)) { match = true; } if (match) { right = candidate; r.Remove(candidate); break; } } if (right != null) { result.Matches.Add(Tuple.Create(left, right)); } } return(result); }