private EnAr.Element ConstructPrimitiveType(Ecore.IEDataType eDataType) { if (!eclassifier2Class.ContainsKey(eDataType)) { EnAr.Package parentPackage = ConstructMetamodelPackage(eDataType.EPackage); EnAr.Element primitiveType = (EnAr.Element)parentPackage.Elements.AddNew(eDataType.Name, "Class"); eclassifier2Class[eDataType] = primitiveType; primitiveType.Stereotype = "primitive"; if (ecorePrimitiveToEnAr.ContainsKey(eDataType.Name)) { EnAr.TaggedValue tag = (EnAr.TaggedValue)primitiveType.TaggedValues.AddNew("MOFPrimitiveType", "Tag"); tag.Value = ecorePrimitiveToEnAr[eDataType.Name]; tag.Update(); primitiveType.TaggedValues.Refresh(); } parentPackage.Elements.Refresh(); parentPackage.Update(); parentPackage.Element.Update(); primitiveType.Update(); return(primitiveType); } return(eclassifier2Class[eDataType]); }
private EnAr.Element ConstructEnumeration(Ecore.IEEnum eEnum) { if (eclassifier2Class.ContainsKey(eEnum)) { return(eclassifier2Class[eEnum]); } EnAr.Package parentPackage = ConstructMetamodelPackage(eEnum.EPackage); EnAr.Element enumeration = (EnAr.Element)parentPackage.Elements.AddNew(eEnum.Name, "Enumeration"); eclassifier2Class[eEnum] = enumeration; foreach (Ecore.IEEnumLiteral eEnumLiteral in eEnum.ELiterals) { EnAr.Attribute attributeLiteral = (EnAr.Attribute)enumeration.Attributes.AddNew(eEnumLiteral.Name, "Attribute"); attributeLiteral.Stereotype = "enum"; attributeLiteral.LowerBound = "1"; attributeLiteral.UpperBound = "1"; attributeLiteral.IsCollection = false; attributeLiteral.Update(); } enumeration.Attributes.Refresh(); enumeration.Update(); enumeration.Refresh(); return(enumeration); }