private void MapComplexTypeToCdt(SourceItem sourceElement, Stack <XmlQualifiedName> parentComplexTypeNames, XmlQualifiedName qualifiedComplexTypeName, string complexTypeName, string path) { ICdt targetCdt = null; ComplexTypeMapping complexTypeMapping; List <ElementMapping> childMappings = GetChildMappings(sourceElement, parentComplexTypeNames, qualifiedComplexTypeName, path); if (childMappings.Count() > 0) { foreach (ElementMapping child in childMappings) { if (child is AttributeOrSimpleElementToSupMapping) { if (targetCdt == null) { targetCdt = ((AttributeOrSimpleElementToSupMapping)child).Cdt; } else { if (targetCdt.Id != ((AttributeOrSimpleElementToSupMapping)child).Cdt.Id) { throw new MappingError("Complex type mapped to more than one CDTs"); } } } } complexTypeMapping = new ComplexTypeToCdtMapping(sourceElement.Name, complexTypeName, childMappings); complexTypeMappings.GetAndCreate(complexTypeName + ((IBcc)GetTargetElement(sourceElement)).Cdt.Name).Add(complexTypeMapping); return; } targetCdt = ((IBcc)GetTargetElement(sourceElement)).Cdt; complexTypeMapping = new ComplexTypeToCdtMapping(sourceElement.Name, complexTypeName, childMappings) { TargetCdt = targetCdt }; complexTypeMappings.GetAndCreate(complexTypeName + ((IBcc)GetTargetElement(sourceElement)).Cdt.Name).Add(complexTypeMapping); }
private void GenerateBdtSpecsFromComplexTypeMapping(ComplexTypeMapping complexTypeMapping) { if (complexTypeMapping is ComplexTypeToCdtMapping) { ComplexTypeToCdtMapping cdtMapping = (ComplexTypeToCdtMapping)complexTypeMapping; List <BdtSupSpec> supSpecs = new List <BdtSupSpec>(); foreach (AttributeOrSimpleElementToSupMapping supMapping in cdtMapping.GetSupMappings()) { BdtSupSpec bdtSupSpec = BdtSpec.CloneCdtSup(supMapping.Sup); bdtSupSpec.Name = supMapping.BIEName; supSpecs.Add(bdtSupSpec); } BdtSpec bdtSpec = BdtSpec.CloneCdt(complexTypeMapping.TargetCdt, complexTypeMapping.BIEName); bdtSpec.Sups = supSpecs; bdtSpecs.Add(bdtSpec); } }