private ScheduleOfRITEs BuildScheduleFromRITChars(string name, HashSet <long> EDSschedule)
        {
            ScheduleOfRITEs newSchedule = new ScheduleOfRITEs(name);

            foreach (long RITCharID in EDSschedule)
            {
                long RITEID = EDSDataExtract.CoverageIdAttrMap[RITCharID].RITExposureId;

                RITCharacteristic characteristicToAdd = _characteristics.Where(ritchar => ritchar.ID == RITCharID).FirstOrDefault();
                RITE ritetoAdd = _rites.Where(rite => rite.ExposureID == RITEID).FirstOrDefault();

                if (characteristicToAdd != null)
                {
                    newSchedule.AddCharacteristic(characteristicToAdd);
                }
                else
                {
                    throw new IndexOutOfRangeException("Error building schedule with RITCharacteristics: Cannot find RITCharacteristic with id = " + RITCharID + " in Exposure Data");
                }

                if (ritetoAdd != null)
                {
                    newSchedule.AddItem(ritetoAdd);
                }
                else
                {
                    throw new IndexOutOfRangeException("Error building schedule with RITEs: Cannot find RITE with id = " + RITEID + " in Exposure Data");
                }
            }

            return(newSchedule);
        }
        public override bool ScheduleListEquals(Schedule <RITE> other)
        {
            ScheduleOfRITEs otherSch = other as ScheduleOfRITEs;

            if (otherSch == null)
            {
                return(false);
            }

            if (IsLocation)
            {
                if (this.RITChars.SetEquals(otherSch.RITChars))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                if (this.ScheduleList.SetEquals(otherSch.ScheduleList))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
        public override bool IsLargerOrEqualThan(Schedule <RITE> other)
        {
            ScheduleOfRITEs otherSch = other as ScheduleOfRITEs;

            if (otherSch == null)
            {
                return(false);
            }

            if (IsLocation)
            {
                if (this.RITChars.IsSupersetOf(otherSch.RITChars))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                if (this.ScheduleList.IsSupersetOf(other.ScheduleList))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
        public void AddScheduleFromRITChars(string name, HashSet <RITCharacteristic> RITChars)
        {
            ScheduleOfRITEs newSchedule = new ScheduleOfRITEs(name);

            foreach (RITCharacteristic RITChar in RITChars)
            {
                newSchedule.AddItem(RITChar.ParentRITE);
                newSchedule.AddCharacteristic(RITChar);
            }
            _schedules.Add(newSchedule);
            _schedulesDict.Add(newSchedule.Name, newSchedule);
        }
        public void AddSchedule(string name, HashSet <RITE> rites)
        {
            ScheduleOfRITEs newSchedule = new ScheduleOfRITEs(name);

            foreach (RITE rite in rites)
            {
                newSchedule.AddItem(rite);
                newSchedule.RITChars.UnionWith(rite.RiskCharacteristics);
            }
            _schedules.Add(newSchedule);
            _schedulesDict.Add(newSchedule.Name, newSchedule);
        }
        private ScheduleOfRITEs BuildScheduleFromRITs2(string name, HashSet <long> EDSschedule)
        {
            ScheduleOfRITEs newSchedule = new ScheduleOfRITEs(name);

            foreach (long riteID in EDSschedule)
            {
                RITE ritetoAdd;
                if (!_ritesDict.TryGetValue(riteID, out ritetoAdd))
                {
                    throw new IndexOutOfRangeException("Error building schedule with RITEs: Cannot find RITE with id = " + riteID + " in Exposure Data");
                }

                newSchedule.AddItem(ritetoAdd);
                newSchedule.RITChars.UnionWith(ritetoAdd.RiskCharacteristics);
            }

            return(newSchedule);
        }
        private ScheduleOfRITEs BuildScheduleFromRITs(string name, HashSet <long> EDSschedule)
        {
            ScheduleOfRITEs newSchedule = new ScheduleOfRITEs(name);

            foreach (long riteID in EDSschedule)
            {
                RITE ritetoAdd = _rites.Where(rite => rite.ExposureID == riteID).FirstOrDefault();

                if (ritetoAdd != null)
                {
                    newSchedule.AddItem(ritetoAdd);
                    newSchedule.RITChars.UnionWith(ritetoAdd.RiskCharacteristics);
                }
                else
                {
                    throw new IndexOutOfRangeException("Error building schedule with RITEs: Cannot find RITE with id = " + riteID + " in Exposure Data");
                }
            }

            return(newSchedule);
        }
        private ScheduleOfRITEs BuildScheduleFromRITChars2(string name, HashSet <long> EDSschedule)
        {
            ScheduleOfRITEs newSchedule = new ScheduleOfRITEs(name);

            foreach (long RITCharID in EDSschedule)
            {
                RITCharacteristic characteristicToAdd;
                if (!_characteristicsDict.TryGetValue(RITCharID, out characteristicToAdd))
                {
                    throw new IndexOutOfRangeException("Error building schedule with RITCharacteristics: Cannot find RITCharacteristic with id = " + RITCharID + " in Exposure Data");
                }
                newSchedule.AddCharacteristic(characteristicToAdd);

                long RITEID = EDSDataExtract.CoverageIdAttrMap[RITCharID].RITExposureId;
                RITE ritetoAdd;
                if (!_ritesDict.TryGetValue(RITEID, out ritetoAdd))
                {
                    throw new IndexOutOfRangeException("Error building schedule with RITEs: Cannot find RITE with id = " + RITEID + " in Exposure Data");
                }
                newSchedule.AddItem(ritetoAdd);
            }

            return(newSchedule);
        }