コード例 #1
0
        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]);
        }
コード例 #2
0
        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);
        }