Esempio n. 1
0
        public AssociationClassCallExp createAssociationClassCallExp(
            OclExpression source,
            CoreAssociationClass referredAssociationClass,
            CoreAssociationEnd navigationSource,
            List <object> qualifiers,
            bool isMarkedPre)
        {
            AssociationClassCallExpImpl exp = new AssociationClassCallExpImpl();

            exp.setFactory(this);

            exp.setReferredAssociationClass(referredAssociationClass);
            exp.setNavigationSource(navigationSource);
            exp.setSource(isMarkedPre ? createAtPreOperation(source) : source);
            if (qualifiers != null)
            {
                foreach (OclExpression qualifier in qualifiers)
                {
                    ((OclExpressionImpl)qualifier).setNavigationCallExp(exp);
                    ((AssociationClassCallExpImpl)exp).addQualifier(qualifier);
                }
            }
            CoreAssociationEnd assocEnd = navigationSource != null ? navigationSource : referredAssociationClass.lookupAssociationEnd(source.getType());

            exp.setType(((AssociationClassCallExpImpl)exp).getExpressionType(source, assocEnd, referredAssociationClass));

            ((OclExpressionImpl)source).setAppliedProperty(exp);
            return(exp);
        }
        public void testAssociationClassExp_02()
        {
            AstOclModelElementFactory factory1 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage());

            VariableDeclaration variable = factory1.createVariableDeclaration("abc", getClassifier("SpecialFilm"), null);
            VariableExp         source   = factory1.createVariableExp(variable);

            CoreAssociationClass assocClass = getClassifier("SpecialFilm").lookupAssociationClass("Allocation");
            CoreAssociationEnd   dist       = getClassifier("SpecialFilm").lookupAssociationEnd("dist");

            AssociationClassCallExp exp1 = factory1.createAssociationClassCallExp(source, assocClass, dist, null, false);

            Assert.AreEqual("abc.Allocation", exp1.ToString());
            Assert.AreEqual("Set(Allocation)", exp1.getType().getName());
        }
Esempio n. 3
0
 /**
  * @param referredAssociationClass The referredAssociationClass to set.
  */
 public void setReferredAssociationClass(
     CoreAssociationClass referredAssociationClass)
 {
     this.referredAssociationClass = referredAssociationClass;
 }
Esempio n. 4
0
 public CoreClassifier getExpressionType(OclExpression source, CoreAssociationEnd associationEnd, CoreAssociationClass associationClass)
 {
     return(base.getExpressionType(source.getType(), associationEnd, associationClass));
 }
Esempio n. 5
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);
        }