private SubjectPosition ConstructSubject(Dictionary <string, object> KeyValueData) { object CausesOfLossObject; HashSet <SymbolicValue> CausesOfLoss = new HashSet <SymbolicValue>(); if (KeyValueData.TryGetValue("CausesOfLoss", out CausesOfLossObject)) { CausesOfLoss.UnionWith(ToHashSet(CausesOfLossObject.ToString())); } object ScheduleObject; HashSet <SymbolicValue> ScheduleSymbols = new HashSet <SymbolicValue>(); if (KeyValueData.TryGetValue("Schedule", out ScheduleObject)) { ScheduleSymbols.UnionWith(ToHashSet(ScheduleObject.ToString())); } Schedule _Schedule = new Schedule(ScheduleSymbols); object ExposureTypesObject; HashSet <SymbolicValue> ExposureTypes = new HashSet <SymbolicValue>(); if (KeyValueData.TryGetValue("ExposureTypes", out ExposureTypesObject)) { ExposureTypes.UnionWith(ToHashSet(ExposureTypesObject.ToString())); } bool Resolution = false; if (KeyValueData.ContainsKey("PerRisk")) { Resolution = bool.Parse((string)KeyValueData["PerRisk"]); } if ((CausesOfLoss.Count == 0) && (ScheduleSymbols.Count == 0) && (ExposureTypes.Count == 0)) { SubjectPosition CoverSubjectPosition = new SubjectPosition(); if (this.ContractSubject is Subject) { CoverSubjectPosition = new Subject(this.ContractSubject as Subject); ((Subject)CoverSubjectPosition).PerRisk = Resolution; } else if (this.ContractSubject is NetPosition) { CoverSubjectPosition = new NetPosition(this.ContractSubject as NetPosition); } else if (this.ContractSubject is SubjectPosition) { CoverSubjectPosition = new SubjectPosition(this.ContractSubject as SubjectPosition); } return(CoverSubjectPosition); } return(new Subject(UniversalSubject, _Schedule, CausesOfLoss, ExposureTypes, ResolvedSchedule, CoverageIdAttrMap, Resolution)); }
public NetPosition(NetPosition CopyFromNetPosition) : this(CopyFromNetPosition.GrossPosition, CopyFromNetPosition.CededPosition) { }