Example #1
0
        public CoreModel getModel(XNamespace xnamespace)
        {
            if (coreModel != null)
            {
                return(coreModel);
            }

            xcoreModel = doc.Element(xnamespace + "logicalClassDesignerModel");

            if (xcoreModel != null)
            {
                coreModel = new CoreModelImpl();
                var name = xcoreModel.Attribute("name");
                coreModel.setName(name != null ? name.Value : "");
                var xcoreModelNamespace = xcoreModel.Element(xnamespace + "packagedElements");

                if (xcoreModelNamespace != null)
                {
                    CoreNamespace coreNamespace = new CoreNamespaceImpl();

                    var xhaspackages = xcoreModelNamespace.Element(xnamespace + "logicalClassDesignerModelHasPackages");
                    if (xhaspackages != null)
                    {
                        var xpackages = xhaspackages.Elements(xnamespace + "package");

                        // all model datatypes
                        var xdatatypes = xcoreModelNamespace.Descendants(xnamespace + "referencedType");
                        foreach (var xdatatype in xdatatypes.Where(x => !belongsPackages(x, xpackages)))
                        {
                            createDataType(coreNamespace, coreModel, xdatatype);
                        }

                        foreach (var xpackage in xpackages)
                        {
                            createPackage(xnamespace, coreNamespace, coreModel, xpackage);
                        }
                    }

                    // fill model types
                    fillModelElementTypes();
                }
            }

            return(coreModel);
        }
Example #2
0
        private CorePackage createPackage(XNamespace xnamespace, CoreNamespace ownerNamespace, CoreModelElement owner, XElement xpackage)
        {
            CorePackage corePackage = new CorePackageImpl();

            corePackage.setName(xpackage.Attribute("name").Value);
            corePackage.setElemOwner(owner);
            updateElemOwnedElements(owner, corePackage);
            corePackage.setNamespace(ownerNamespace);
            updateNamespaceElemOwnedElements(ownerNamespace, corePackage);

            lookup.Add(xpackage.Attribute("xmi.id").Value, corePackage);

            var xcoreNamespace = xpackage.Element(xnamespace + "Namespace.ownedElement");

            if (xcoreNamespace != null)
            {
                CoreNamespace coreNamespace = new CoreNamespaceImpl();

                var xmodelClasses = xcoreNamespace.Elements(xnamespace + "Class");
                createModelClasses(xnamespace, coreNamespace, corePackage, xmodelClasses);

                var xpackages = xcoreNamespace.Elements(xnamespace + "Package");
                foreach (var xinnerpackage in xpackages)
                {
                    createPackage(xnamespace, coreNamespace, coreModel, xinnerpackage);
                }

                var xstereotypes = xcoreNamespace.Elements(xnamespace + "Stereotype");
                foreach (var xstereotype in xstereotypes)
                {
                    createStereotype(coreNamespace, corePackage, xstereotype);
                }

                var xinterfaces = xcoreNamespace.Elements(xnamespace + "Interface");
                foreach (var xinterface in xinterfaces)
                {
                    createInterface(coreNamespace, corePackage, xinterface);
                }
            }

            return(corePackage);
        }
Example #3
0
        private CorePackage createPackage(XNamespace xnamespace, CoreNamespace ownerNamespace, CoreModelElement owner, XElement xpackage)
        {
            CorePackage corePackage = new CorePackageImpl();

            corePackage.setName(xpackage.Attribute("name").Value);
            corePackage.setElemOwner(owner);
            updateElemOwnedElements(owner, corePackage);
            corePackage.setNamespace(ownerNamespace);
            updateNamespaceElemOwnedElements(ownerNamespace, corePackage);

            lookup.Add(xpackage.Attribute("Id").Value, corePackage);

            var xcoreNamespace = xpackage.Element(xnamespace + "packagedElements");

            if (xcoreNamespace != null)
            {
                CoreNamespace coreNamespace = new CoreNamespaceImpl();

                var xhasnamedelements = xcoreNamespace.Element(xnamespace + "packageHasNamedElement");
                if (xhasnamedelements != null)
                {
                    var xenumerations = xcoreNamespace.Descendants(xnamespace + "enumeration");
                    var stereotype    = createStereotype(ownerNamespace, owner, "Enumeration");
                    foreach (var xenumeration in xenumerations)
                    {
                        createEnumeration(xnamespace, coreNamespace, corePackage, xenumeration, stereotype);
                    }

                    var stereotypeId  = createStereotype(ownerNamespace, owner, "Id");
                    var xmodelClasses = xcoreNamespace.Descendants(xnamespace + "class");
                    createModelClasses(xnamespace, coreNamespace, corePackage, xmodelClasses, stereotypeId);

                    var xpackages = xcoreNamespace.Descendants(xnamespace + "package");
                    foreach (var xinnerpackage in xpackages)
                    {
                        createPackage(xnamespace, coreNamespace, coreModel, xinnerpackage);
                    }
                }
            }

            return(corePackage);
        }
Example #4
0
        public CoreModel getModel(XNamespace xnamespace)
        {
            if (coreModel != null)
            {
                return(coreModel);
            }

            var xcoreModel = doc.Descendants(xnamespace + "Model").FirstOrDefault();

            if (xcoreModel != null)
            {
                coreModel = new CoreModelImpl();
                var xcoreModelNamespace = xcoreModel.Element(xnamespace + "Namespace.ownedElement");

                if (xcoreModelNamespace != null)
                {
                    CoreNamespace coreNamespace = new CoreNamespaceImpl();

                    // all model datatypes
                    var xdatatypes = xcoreModelNamespace.Descendants(xnamespace + "DataType");
                    foreach (var xdatatype in xdatatypes)
                    {
                        createDataType(coreNamespace, coreModel, xdatatype);
                    }

                    var xmodelClasses = xcoreModelNamespace.Elements(xnamespace + "Class");
                    createModelClasses(xnamespace, coreNamespace, coreModel, xmodelClasses);

                    var xpackages = xcoreModelNamespace.Elements(xnamespace + "Package");
                    foreach (var xpackage in xpackages)
                    {
                        createPackage(xnamespace, coreNamespace, coreModel, xpackage);
                    }

                    // all model generalizations
                    var xgeneralizations = getAllAvailableGeneralizations(xnamespace, xcoreModelNamespace);
                    foreach (var xgeneralization in xgeneralizations)
                    {
                        createGeneralization(xnamespace, xgeneralization);
                    }

                    // create all model abstractions
                    var xabstractions = xcoreModelNamespace.Descendants(xnamespace + "Abstraction");
                    foreach (var xabstraction in xabstractions)
                    {
                        createAbstraction(xabstraction);
                    }

                    // fill model types
                    fillModelElementTypes();

                    // all associations classes
                    var xassociationclasses = xcoreModelNamespace.Descendants(xnamespace + "AssociationClass");
                    foreach (var xassociationclass in xassociationclasses)
                    {
                        CoreAssociationClass associationClass = (CoreAssociationClass)createAssociation(xnamespace, xassociationclass, new CoreAssociationClassImpl());
                        fillModelElementTypes();
                        updateElemOwnedElements(coreModel, associationClass);

                        associationClass.setElemOwner(coreModel);
                        updateElemOwnedElements(coreModel, associationClass);
                        associationClass.setNamespace(coreNamespace);
                        updateNamespaceElemOwnedElements(coreNamespace, associationClass);

                        var xclassifierfeature = xassociationclass.Element(xnamespace + "Classifier.feature");
                        if (xclassifierfeature != null)
                        {
                            var xoperations = xclassifierfeature.Elements(xnamespace + "Operation");
                            foreach (var xoperation in xoperations)
                            {
                                createOperation(xnamespace, coreNamespace, associationClass, xoperation);
                            }

                            var xattributes = xclassifierfeature.Elements(xnamespace + "Attribute");
                            foreach (var xattribute in xattributes)
                            {
                                createAttribute(coreNamespace, associationClass, xattribute);
                            }
                        }
                    }

                    // all model associations
                    var xassociations = xcoreModelNamespace.Descendants(xnamespace + "Association");
                    foreach (var xassociation in xassociations)
                    {
                        CoreAssociation coreAssociation = createAssociation(xnamespace, xassociation, new CoreAssociationImpl());
                        fillModelElementTypes();
                        //coreModel.addAssociation(coreAssociation);
                        updateElemOwnedElements(coreModel, coreAssociation);
                    }
                }
            }

            return(coreModel);
        }