Exemplo n.º 1
0
        private CoreAssociationEnd createAssociationEnd(XNamespace xnamespace, CoreAssociation coreAssociation, XElement xassociationend)
        {
            CoreAssociationEnd coreAssociationEnd = new CoreAssociationEndImpl();
            var name = xassociationend.Attribute("name");

            coreAssociationEnd.setName(name != null ? name.Value : "");

            coreAssociationEnd.setAssociation(coreAssociation);
            //coreAssociationEnd.setOrdering(getOrderingKind(xassociationend.Attribute("ordering").Value));

            updateConnection(coreAssociation, coreAssociationEnd);

            //var xqualifiernamespace = xassociationend.Element(xnamespace + "AssociationEnd.qualifier");
            //if (xqualifiernamespace != null)
            //{
            //    var xqualifiers = xqualifiernamespace.Elements(xnamespace + "Attribute");
            //    foreach (var xqualifier in xqualifiers)
            //    {
            //        CoreAttribute qualifier = createAttribute(null, coreAssociationEnd, xqualifier);
            //        updateQualifiers(coreAssociationEnd, qualifier);
            //    }
            //}

            var multiplicity = createMultiplicity(xnamespace, xassociationend);

            coreAssociationEnd.setMultiplicity(multiplicity);

            var id = xassociationend.Attribute("Id").Value;

            lookup.Add(id, coreAssociationEnd);

            return(coreAssociationEnd);
        }
Exemplo n.º 2
0
        protected void updateConnection(CoreAssociation owner, CoreAssociationEnd newConnection)
        {
            List <object> connections = owner.getConnection();

            connections.Add(newConnection);
            owner.setConnection(connections);
        }
Exemplo n.º 3
0
        private void createAssociationEnd(XNamespace xnamespace, CoreAssociation coreAssociation, XElement xassociationend)
        {
            CoreAssociationEnd coreAssociationEnd = new CoreAssociationEndImpl();

            coreAssociationEnd.setName(xassociationend.Attribute("name").Value);

            coreAssociationEnd.setAssociation(coreAssociation);
            coreAssociationEnd.setOrdering(getOrderingKind(xassociationend.Attribute("ordering").Value));

            updateConnection(coreAssociation, coreAssociationEnd);

            var xqualifiernamespace = xassociationend.Element(xnamespace + "AssociationEnd.qualifier");

            if (xqualifiernamespace != null)
            {
                var xqualifiers = xqualifiernamespace.Elements(xnamespace + "Attribute");
                foreach (var xqualifier in xqualifiers)
                {
                    CoreAttribute qualifier = createAttribute(null, coreAssociationEnd, xqualifier);
                    updateQualifiers(coreAssociationEnd, qualifier);
                }
            }

            var multiplicity = createMultiplicity(xnamespace, xassociationend);

            coreAssociationEnd.setMultiplicity(multiplicity);

            var id = xassociationend.Attribute("xmi.id").Value;

            lookup.Add(id, coreAssociationEnd);
            var xtyperefid = xassociationend.Attribute("type").Value;

            idToType.Add(id, xtyperefid);
        }
        /* (non-Javadoc)
         * @see ocl20.CoreAssociation#isClassifierInAssociation(ocl20.CoreClassifier[])
         */
        public static bool isClassifierInAssociation(CoreAssociation association, CoreClassifier classifier)
        {
            foreach (CoreAssociationEnd associationEnd in association.getTheAssociationEnds())
            {
                if (classifier == associationEnd.getTheParticipant())
                {
                    return(true);
                }
            }

            return(false);
        }
        public static string buildName(CoreAssociation association)
        {
            StringBuilder name = new StringBuilder();

            foreach (CoreAssociationEnd assocEnd in association.getTheAssociationEnds())
            {
                if (name.Length > 0)
                {
                    name.Append("-");
                }
                name.Append(assocEnd.getTheParticipant().getFullPathName());
                name.Append("::");
                name.Append(assocEnd.getName());
            }

            return(name.ToString());
        }
        /* (non-Javadoc)
         * @see ocl20.CoreAssociation#getAssociationEnd(java.lang.String)
         */
        public static CoreAssociationEnd getAssociationEnd(CoreAssociation association, string roleName)
        {
            // first try to match role name
            foreach (CoreAssociationEnd assocEnd in association.getTheAssociationEnds())
            {
                StringBuilder upperCaseName = new StringBuilder(roleName);
                char          firstChar     = roleName.MySubstring(0, 1).ToUpper()[0];
                upperCaseName.Insert(0, firstChar);
                string adjustedRoleName = upperCaseName.ToString();

                if (assocEnd.getName().Equals(roleName) ||
                    assocEnd.getName().Equals(adjustedRoleName))
                {
                    return(assocEnd);
                }
            }

            return(null);
        }
Exemplo n.º 7
0
 private void createModelClasses(XNamespace xnamespace, CoreNamespace ownerNamespace, CoreModelElement owner, IEnumerable <XElement> xmodelClasses, CoreStereotype coreStereotype)
 {
     if (xmodelClasses != null)
     {
         var iEnumerable = xmodelClasses as IList <XElement> ?? xmodelClasses.ToList();
         foreach (var xmodelClass in iEnumerable)
         {
             createClassifier(xnamespace, xmodelClass, ownerNamespace, owner, coreStereotype);
         }
         foreach (XElement xmodelClass in iEnumerable)
         {
             var xassociations = xmodelClass.Descendants(xnamespace + "association");
             foreach (var xassociation in xassociations)
             {
                 CoreAssociation coreAssociation = createAssociation(xnamespace, xassociation, new CoreAssociationImpl());
                 fillModelElementTypes();
                 updateElemOwnedElements(coreModel, coreAssociation);
             }
         }
     }
 }
        /* (non-Javadoc)
         * @see ocl20.CoreAssociation#getTheAssociationEnds(ocl20.CoreClassifier)
         */
        public static List <object> getTheAssociationEnds(CoreAssociation association, CoreClassifier classifier)
        {
            List <object> connection = association.getTheAssociationEnds();

            if (isSelfAssociation(connection, classifier))
            {
                return(connection);
            }
            else
            {
                List <object> result = new List <object>();

                foreach (CoreAssociationEnd associationEnd in connection)
                {
                    if (classifier != associationEnd.getTheParticipant())
                    {
                        result.Add(associationEnd);
                    }
                }
                return(result);
            }
        }
Exemplo n.º 9
0
 public void addAssociation(CoreAssociation association)
 {
     associations.Add(association.getFullPathName(), association);
 }
Exemplo n.º 10
0
 public abstract void setTheAssociation(CoreAssociation newValue);
Exemplo n.º 11
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);
        }
Exemplo n.º 12
0
        private CoreAssociation createAssociation(XNamespace xnamespace, XElement xassociation, CoreAssociation coreAssociation)
        {
            coreAssociation.setName(xassociation.Attribute("name").Value);

            XElement xelementconnection = xassociation.Element(xnamespace + "Association.connection");

            if (xelementconnection != null)
            {
                var xassociationends = xelementconnection.Elements(xnamespace + "AssociationEnd");
                foreach (var xassociationend in xassociationends)
                {
                    createAssociationEnd(xnamespace, coreAssociation, xassociationend);
                }
            }

            lookup.Add(xassociation.Attribute("xmi.id").Value, coreAssociation);

            return(coreAssociation);
        }
 public void setTheAssociation(CoreAssociation newValue)
 {
     setAssociation(newValue);
 }
 public void setAssociation(CoreAssociation newValue)
 {
     association = newValue;
 }
Exemplo n.º 15
0
        private CoreAssociation createAssociation(XNamespace xnamespace, XElement xassociation, CoreAssociation coreAssociation)
        {
            var name = xassociation.Attribute("name");

            coreAssociation.setName(name != null ? name.Value : "");

            List <CoreAssociationEnd> associationEnds = new List <CoreAssociationEnd>();
            var xassociationends = xassociation.Descendants(xnamespace + "memberEnd");

            foreach (var xassociationend in xassociationends)
            {
                associationEnds.Add(createAssociationEnd(xnamespace, coreAssociation, xassociationend));
            }

            XElement     xparent = xassociation.Parent;
            const string xname   = "class";

            while ((xparent != null && xparent.Name.LocalName != null) && !xparent.Name.LocalName.Equals(xname))
            {
                xparent = xparent.Parent;
            }
            var idAssocEnd0 = lookup.FirstOrDefault(e => e.Value == associationEnds[0]).Key;
            var idtype      = xparent.Attribute("Id").Value;

            idToType.Add(idAssocEnd0, idtype);

            var idAssocEnd1 = lookup.FirstOrDefault(e => e.Value == associationEnds[1]).Key;
            var idtype1     = xassociation.Element(xnamespace + "classMoniker").Attribute("Id").Value;

            idToType.Add(idAssocEnd1, idtype1);

            lookup.Add(xassociation.Attribute("Id").Value, coreAssociation);

            return(coreAssociation);
        }