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); }
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); }
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); }
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); }