コード例 #1
0
        //public Dictionary<string, Dictionary<string, SubjectCompareOutcome>> SubjectTree { get; private set; }
        //public Dictionary<ISubjectInput, HashSet<ISubjectInput>> PerRiskExplosionMapping { get; private set; }

        public SubjectTreeBuilder(HashSet <PrimarySubject> _inputList, bool _matrixForm)
        {
            OriginalSubjects        = new HashSet <PrimarySubject>(_inputList);
            WholeSubjects           = new HashSet <PrimarySubject>(_inputList);
            OriginalPerRiskSubjects = new HashSet <PrimarySubject>();
            foreach (PrimarySubject subject in OriginalSubjects)
            {
                if (subject.IsPerRisk)
                {
                    OriginalPerRiskSubjects.Add(subject);
                }
            }
            ExplodedSubjectList = new HashSet <PrimarySubject>();
            MatrixForm          = _matrixForm;
            if (MatrixForm)
            {
                SubjectTreeMatrix = new SubjectCompareOutcome[21000, 21000];
            }
            else
            {
                SubjectTreeArray = new Dictionary <int, SubjectCompareOutcome> [1000000];
            }

            OriginalSubjectsMinusPerRisk = new HashSet <PrimarySubject>(OriginalSubjects);
            OriginalSubjectsMinusPerRisk.ExceptWith(OriginalPerRiskSubjects);
        }
コード例 #2
0
        public SubjectCompareOutcome CompareTwoSubjects(PrimarySubject s1, PrimarySubject s2)
        {
            SubjectCompareOutcome colOut = CompareTwoCOLs(s1.CauseOfLossSet.Collection, s2.CauseOfLossSet.Collection);
            SubjectCompareOutcome expOut = CompareTwoExpTypes(s1.ExposureTypes.Collection, s2.ExposureTypes.Collection);
            SubjectCompareOutcome schOut = CompareTwoSchedules(s1.Schedule, s2.Schedule);

            if (colOut == SubjectCompareOutcome.Equal && expOut == SubjectCompareOutcome.Equal && schOut == SubjectCompareOutcome.Equal)
            {
                if (s1.IsPerRisk == s2.IsPerRisk)
                {
                    return(SubjectCompareOutcome.Equal);
                }
                else if (s1.IsPerRisk && !s2.IsPerRisk)
                {
                    return(SubjectCompareOutcome.Child);
                }
                else
                {
                    return(SubjectCompareOutcome.Parent);
                }
            }

            else if (colOut == SubjectCompareOutcome.Disjoin || expOut == SubjectCompareOutcome.Disjoin || schOut == SubjectCompareOutcome.Disjoin)
            {
                return(SubjectCompareOutcome.Disjoin);
            }

            else if ((colOut == SubjectCompareOutcome.Parent || colOut == SubjectCompareOutcome.Equal) &&
                     (expOut == SubjectCompareOutcome.Parent || expOut == SubjectCompareOutcome.Equal) &&
                     (schOut == SubjectCompareOutcome.Parent || schOut == SubjectCompareOutcome.Equal))
            {
                return(SubjectCompareOutcome.Parent);
            }

            else if ((colOut == SubjectCompareOutcome.Child || colOut == SubjectCompareOutcome.Equal) &&
                     (expOut == SubjectCompareOutcome.Child || expOut == SubjectCompareOutcome.Equal) &&
                     (schOut == SubjectCompareOutcome.Child || schOut == SubjectCompareOutcome.Equal))
            {
                return(SubjectCompareOutcome.Child);
            }

            else
            {
                return(SubjectCompareOutcome.Overlap);
            }
        }