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()); }
/** * @param referredAssociationClass The referredAssociationClass to set. */ public void setReferredAssociationClass( CoreAssociationClass referredAssociationClass) { this.referredAssociationClass = referredAssociationClass; }
public CoreClassifier getExpressionType(OclExpression source, CoreAssociationEnd associationEnd, CoreAssociationClass associationClass) { return(base.getExpressionType(source.getType(), associationEnd, associationClass)); }
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); }