Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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()))
     );
Exemple #4
0
        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);
        }