示例#1
0
  private void createModel() {
    EFactory factory = metamodelPackage.getEFactoryInstance();
    netObject = factory.create(getNetClass());

    place1Object = factory.create(getPlaceClass());
    setName(place1Object, "place1");
    setTokens(place1Object, 1);

    place2Object = factory.create(getPlaceClass());
    setName(place2Object, "place2");

    transitionObject = factory.create(getTransitionClass());
    setIncoming(transitionObject, place1Object);
    setOutgoing(transitionObject, place2Object);

    EList<EObject> placesValue = new BasicEList<EObject>();
    placesValue.add(place1Object);
    placesValue.add(place2Object);
    EReference placesReference = getPlacesReference(netObject.eClass());
    netObject.eSet(placesReference, placesValue);

    EList<EObject> transitionsValue = new BasicEList<EObject>();
    transitionsValue.add(transitionObject);
    EReference transitionsReference = getTransitionsReference(netObject.eClass());
    netObject.eSet(transitionsReference, transitionsValue);
  }
示例#2
0
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 public IComment addComment() {
   org.eclipse.emf.ecore.EPackage ePackage =
       org.eclipse.emf.ecore.EPackage.Registry.INSTANCE.getEPackage(
           "http://www.openhealthtools.org/mdht/uml/cda/apitest");
   org.eclipse.emf.ecore.EFactory eFactory =
       org.eclipse.emf.ecore.EPackage.Registry.INSTANCE.getEFactory(
           "http://www.openhealthtools.org/mdht/uml/cda/apitest");
   org.eclipse.emf.ecore.EClass eClass =
       (org.eclipse.emf.ecore.EClass) ePackage.getEClassifier("Comment");
   org.eclipse.emf.ecore.EObject eObject = eFactory.create(eClass);
   try {
     java.lang.reflect.Method initMethod =
         eObject.getClass().getMethod("init", new java.lang.Class[0]);
     initMethod.invoke(eObject, new Object[0]);
   } catch (Exception e) {
     // no init() method
   }
   org.eclipse.emf.ecore.EPackage domainPackage = this.eClass().getEPackage();
   org.eclipse.emf.ecore.EFactory domainFactory = domainPackage.getEFactoryInstance();
   org.eclipse.emf.ecore.EClass domainEClass =
       (org.eclipse.emf.ecore.EClass) domainPackage.getEClassifier("IComment");
   IComment value = (IComment) domainFactory.create(domainEClass);
   value.setCDAType((org.openhealthtools.mdht.uml.cda.Act) eObject);
   this.getCDAType().addAct((org.openhealthtools.mdht.uml.cda.Act) eObject);
   return value;
 }
示例#3
0
文件: Ecore2AS.java 项目: eclipse/ocl
 @Override
 public <@NonNull T extends NamedElement> T refreshElement(
     @NonNull Class<T> pivotClass, EClass pivotEClass, @NonNull EModelElement eModelElement) {
   EObject pivotElement = null;
   if (oldIdMap != null) {
     String id = ((XMLResource) eModelElement.eResource()).getID(eModelElement);
     if (id != null) {
       pivotElement = oldIdMap.get(id);
       if ((pivotElement != null) && (pivotElement.eClass() != pivotEClass)) {
         pivotElement = null;
       }
     }
   }
   if (pivotElement == null) {
     EFactory eFactoryInstance = pivotEClass.getEPackage().getEFactoryInstance();
     pivotElement = eFactoryInstance.create(pivotEClass);
   }
   if (!pivotClass.isAssignableFrom(pivotElement.getClass())) {
     throw new ClassCastException();
   }
   @SuppressWarnings("unchecked")
   T castElement = (T) pivotElement;
   Element oldElement = newCreateMap.put(eModelElement, castElement);
   assert oldElement == null;
   return castElement;
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 public CD withValue() {
   org.eclipse.emf.ecore.EPackage ePackage =
       org.openhealthtools.mdht.uml.hl7.datatypes.DatatypesPackage.eINSTANCE;
   org.eclipse.emf.ecore.EFactory eFactory =
       org.openhealthtools.mdht.uml.hl7.datatypes.DatatypesFactory.eINSTANCE;
   org.eclipse.emf.ecore.EClass eClass =
       (org.eclipse.emf.ecore.EClass) ePackage.getEClassifier("CD");
   org.eclipse.emf.ecore.EObject eObject = eFactory.create(eClass);
   CD value = (CD) eObject;
   this.getCDAType().getValues().add(value);
   return value;
 }
示例#5
0
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 public IVL_TS withProblemDate() {
   org.eclipse.emf.ecore.EPackage ePackage =
       org.openhealthtools.mdht.uml.hl7.datatypes.DatatypesPackage.eINSTANCE;
   org.eclipse.emf.ecore.EFactory eFactory =
       org.openhealthtools.mdht.uml.hl7.datatypes.DatatypesFactory.eINSTANCE;
   org.eclipse.emf.ecore.EClass eClass =
       (org.eclipse.emf.ecore.EClass) ePackage.getEClassifier("IVL_TS");
   org.eclipse.emf.ecore.EObject eObject = eFactory.create(eClass);
   IVL_TS value = (IVL_TS) eObject;
   this.getCDAType().setEffectiveTime(value);
   return value;
 }
示例#6
0
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 public ED withProblemName() {
   org.eclipse.emf.ecore.EPackage ePackage =
       org.openhealthtools.mdht.uml.hl7.datatypes.DatatypesPackage.eINSTANCE;
   org.eclipse.emf.ecore.EFactory eFactory =
       org.openhealthtools.mdht.uml.hl7.datatypes.DatatypesFactory.eINSTANCE;
   org.eclipse.emf.ecore.EClass eClass =
       (org.eclipse.emf.ecore.EClass) ePackage.getEClassifier("ED");
   org.eclipse.emf.ecore.EObject eObject = eFactory.create(eClass);
   ED value = (ED) eObject;
   this.getCDAType().setText(value);
   return value;
 }
示例#7
0
  /**
   * Clones an eobject, with the option of performing a deep clone in which referenced eobjects are
   * also cloned.
   *
   * @param prototype The object to be cloned from.
   * @param factory The factory used to create the clone.
   * @param deepÊFlag indicating wether to perform a deep clone.
   * @return THe cloned object, with all properties the same to the original.
   */
  public static EObject clone(EObject prototype, EFactory factory, boolean deep) {
    EObject clone = factory.create(prototype.eClass());

    for (Iterator i = clone.eClass().getEStructuralFeatures().iterator(); i.hasNext(); ) {
      EStructuralFeature feature = (EStructuralFeature) i.next();
      Object value = prototype.eGet(feature);
      if (deep && value instanceof EObject) {
        EObject evalue = (EObject) value;
        // recursively call
        // TODO:handle cycles in reference graph
        value = clone(evalue, evalue.eClass().getEPackage().getEFactoryInstance(), deep);
      }

      clone.eSet(feature, value);
    }

    return clone;
  }
 @Override
 public EObject create(EClass eClass) {
   if (EMFModelManager.replacedClasses.contains(eClass))
     return eClass.getEPackage().getEFactoryInstance().create(eClass);
   return delegate.create(eClass);
 }
 @Test
 public void test_dynamic_dispatch_411154() throws ParserException, IOException {
   if (useCodeGen) return;
   TestOCL ocl = createOCL();
   if (!EMFPlugin.IS_ECLIPSE_RUNNING) {
     OCLinEcoreStandaloneSetup.doSetup();
     //			OCLDelegateDomain.initialize(null);
   }
   MetamodelManager metamodelManager = ocl.getMetamodelManager();
   String metamodelText =
       "package Bug411154 : pfx = 'Bug411154.ecore'\n"
           + "{\n"
           + "	class Domain {\n"
           + "		property types : T1[*] { ordered composes };\n"
           + "		property t1_2a : T1;\n"
           + "		property t1_3a : T1;\n"
           + "		property t1_3b : T1;\n"
           + "		property t1_4 : T1;\n"
           + "		property t2a_2a : T2a;\n"
           + "		property t2a_3a : T2a;\n"
           + "		property t2b_2b : T2b;\n"
           + "		property t3a : T3a;\n"
           + "	}\n"
           + "	abstract class T1 {\n"
           + "		operation op1() : String { body: 'T1::op1'; }\n"
           + "		operation op4() : String { body: 'T1::op4'; }\n"
           + "		operation op5() : String { body: 'T1::op5'; }\n"
           + "		operation op6() : String { body: 'T1::op6'; }\n"
           + "	}\n"
           + "	class T2a extends T1 {\n"
           + "		operation op1() : String { body: 'T2a::op1'; }\n"
           + "		operation op2() : String { body: 'T2a::op2'; }\n"
           + "		operation op4() : String { body: 'T2a::op4'; }\n"
           + "		operation op6() : String { body: 'T2a::op6'; }\n"
           + "		operation op7() : String { body: 'T2a::op7'; }\n"
           + "		operation op9() : String { body: 'T2a::op9'; }\n"
           + "	}\n"
           + "	class T2b extends T1 {\n"
           + "		operation op6() : String { body: 'T2b::op6'; }\n"
           + "		operation op7() : String { body: 'T2b::op7'; }\n"
           + "		operation op9() : String { body: 'T2b::op9'; }\n"
           + "	}\n"
           + "	class T3a extends T2a,T2b {\n"
           + "		operation op1() : String { body: 'T3a::op1'; }\n"
           + "		operation op2() : String { body: 'T3a::op2'; }\n"
           + "		operation op3() : String { body: 'T3a::op3'; }\n"
           + "		operation op6() : String { body: 'T3a::op6'; }\n"
           + "		operation op7() : String { body: 'T3a::op7'; }\n"
           + "	}\n"
           + "	class T3b extends T2a,T2b {\n"
           + "	}\n"
           + "	class T4 extends T3a,T3b {\n"
           + "		operation op6() : String { body: 'T4::op6'; }\n"
           + "		operation op7() : String { body: 'T4::op7'; }\n"
           + "	}\n"
           + "}\n";
   Resource metamodel = cs2as(ocl, metamodelText);
   Model pivotModel = (Model) metamodel.getContents().get(0);
   org.eclipse.ocl.pivot.Package pivotPackage = pivotModel.getOwnedPackages().get(0);
   org.eclipse.ocl.pivot.Class pivotTypeDomain =
       NameUtil.getNameable(pivotPackage.getOwnedClasses(), "Domain");
   //		org.eclipse.ocl.pivot.Class pivotTypeT1 =
   // ClassUtil.getNamedElement(pivotPackage.getOwnedType(), "T1");
   org.eclipse.ocl.pivot.Class pivotTypeT2a =
       NameUtil.getNameable(pivotPackage.getOwnedClasses(), "T2a");
   org.eclipse.ocl.pivot.Class pivotTypeT2b =
       NameUtil.getNameable(pivotPackage.getOwnedClasses(), "T2b");
   org.eclipse.ocl.pivot.Class pivotTypeT3a =
       NameUtil.getNameable(pivotPackage.getOwnedClasses(), "T3a");
   org.eclipse.ocl.pivot.Class pivotTypeT3b =
       NameUtil.getNameable(pivotPackage.getOwnedClasses(), "T3b");
   org.eclipse.ocl.pivot.Class pivotTypeT4 =
       NameUtil.getNameable(pivotPackage.getOwnedClasses(), "T4");
   EPackage ePackage = metamodelManager.getEcoreOfPivot(EPackage.class, pivotPackage);
   EClass eClassDomain = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeDomain);
   //		EClass eClassT1 = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeT1);
   EClass eClassT2a = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeT2a);
   EClass eClassT2b = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeT2b);
   EClass eClassT3a = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeT3a);
   EClass eClassT3b = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeT3b);
   EClass eClassT4 = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeT4);
   EReference eReferenceDomain_types =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "types"));
   EReference eReferenceDomain_t1_2a =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "t1_2a"));
   EReference eReferenceDomain_t1_3a =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "t1_3a"));
   EReference eReferenceDomain_t1_3b =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "t1_3b"));
   EReference eReferenceDomain_t1_4 =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "t1_4"));
   EReference eReferenceDomain_t2a_2a =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "t2a_2a"));
   EReference eReferenceDomain_t2a_3a =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "t2a_3a"));
   EReference eReferenceDomain_t2b_2b =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "t2b_2b"));
   EReference eReferenceDomain_t3a =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeDomain.getOwnedProperties(), "t3a"));
   EFactory eFactory = ePackage.getEFactoryInstance();
   Resource resource = new ResourceImpl();
   EObject testObjectDomain = eFactory.create(eClassDomain);
   resource.getContents().add(testObjectDomain);
   EObject testObjectT2a = eFactory.create(eClassT2a);
   EObject testObjectT2b = eFactory.create(eClassT2b);
   EObject testObjectT3a = eFactory.create(eClassT3a);
   EObject testObjectT3b = eFactory.create(eClassT3b);
   EObject testObjectT4 = eFactory.create(eClassT4);
   @SuppressWarnings("unchecked")
   List<EObject> list = (List<EObject>) testObjectDomain.eGet(eReferenceDomain_types);
   list.add(testObjectT2a);
   list.add(testObjectT2b);
   list.add(testObjectT3a);
   list.add(testObjectT3b);
   list.add(testObjectT4);
   testObjectDomain.eSet(eReferenceDomain_t1_2a, testObjectT2a);
   testObjectDomain.eSet(eReferenceDomain_t1_3a, testObjectT3a);
   testObjectDomain.eSet(eReferenceDomain_t1_3b, testObjectT3b);
   testObjectDomain.eSet(eReferenceDomain_t1_4, testObjectT4);
   testObjectDomain.eSet(eReferenceDomain_t2a_2a, testObjectT2a);
   testObjectDomain.eSet(eReferenceDomain_t2a_3a, testObjectT3a);
   testObjectDomain.eSet(eReferenceDomain_t2b_2b, testObjectT2b);
   testObjectDomain.eSet(eReferenceDomain_t3a, testObjectT3a);
   //
   ocl.assertQueryEquals(testObjectT2a, "T2a::op1", "self.op1()");
   ocl.assertQueryEquals(testObjectT2a, "T2a::op2", "self.op2()");
   ocl.assertSemanticErrorQuery(
       pivotTypeT2a,
       "self.op3()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T2a::op3");
   ocl.assertQueryEquals(testObjectT2a, "T2a::op4", "self.op4()");
   ocl.assertQueryEquals(testObjectT2a, "T1::op5", "self.op5()");
   ocl.assertQueryEquals(testObjectT2a, "T2a::op6", "self.op6()");
   ocl.assertQueryEquals(testObjectT2a, "T2a::op7", "self.op7()");
   ocl.assertSemanticErrorQuery(
       pivotTypeT2a,
       "self.op8()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T2a::op8");
   ocl.assertQueryEquals(testObjectT2a, "T2a::op9", "self.op9()");
   //
   ocl.assertQueryEquals(testObjectT3a, "T3a::op1", "self.op1()");
   ocl.assertQueryEquals(testObjectT3a, "T3a::op2", "self.op2()");
   ocl.assertQueryEquals(testObjectT3a, "T3a::op3", "self.op3()");
   ocl.assertQueryEquals(testObjectT3a, "T2a::op4", "self.op4()");
   ocl.assertQueryEquals(testObjectT3a, "T1::op5", "self.op5()");
   ocl.assertQueryEquals(testObjectT3a, "T3a::op6", "self.op6()");
   ocl.assertQueryEquals(testObjectT3a, "T3a::op7", "self.op7()");
   ocl.assertSemanticErrorQuery(
       pivotTypeT3a,
       "self.op8()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T3a::op8");
   ocl.assertSemanticErrorQuery(
       pivotTypeT3a,
       "self.op9()",
       "Ambiguous resolution:\n"
           + "\tOperation : Bug411154::T2a::op9() : String[?]\n"
           + "\tOperation : Bug411154::T2b::op9() : String[?]");
   //
   ocl.assertQueryEquals(testObjectDomain, "T2a::op1", "t1_2a.op1()");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_2a.op2()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op2");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_2a.op3()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op3");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op4", "t1_2a.op4()");
   ocl.assertQueryEquals(testObjectDomain, "T1::op5", "t1_2a.op5()");
   //
   ocl.assertQueryEquals(testObjectDomain, "T3a::op1", "t1_3a.op1()");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_3a.op2()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op2");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_3a.op3()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op3");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op4", "t1_3a.op4()");
   ocl.assertQueryEquals(testObjectDomain, "T1::op5", "t1_3a.op5()");
   //
   ocl.assertQueryEquals(testObjectDomain, "T2a::op1", "t1_3b.op1()");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_3b.op2()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op2");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_3b.op3()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op3");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op4", "t1_3b.op4()");
   ocl.assertQueryEquals(testObjectDomain, "T1::op5", "t1_3b.op5()");
   ocl.assertQueryInvalid(
       testObjectDomain,
       "t1_3b.op6()",
       NLS.bind(
           PivotMessages.AmbiguousOperation, "Bug411154::T1::op6() : String[?]", "Bug411154::T3b"),
       InvalidValueException.class);
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_3b.op7()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op7");
   //
   ocl.assertQueryEquals(testObjectDomain, "T3a::op1", "t1_4.op1()");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_4.op2()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op2");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_4.op3()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op3");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op4", "t1_4.op4()");
   ocl.assertQueryEquals(testObjectDomain, "T1::op5", "t1_4.op5()");
   ocl.assertQueryEquals(testObjectDomain, "T4::op6", "t1_4.op6()");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t1_4.op7()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T1::op7");
   //
   ocl.assertQueryEquals(testObjectDomain, "T2a::op1", "t2a_2a.op1()");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op2", "t2a_2a.op2()");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t2a_2a.op3()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T2a::op3");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op4", "t2a_2a.op4()");
   ocl.assertQueryEquals(testObjectDomain, "T1::op5", "t2a_2a.op5()");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op6", "t2a_2a.op6()");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op7", "t2a_2a.op7()");
   //
   ocl.assertQueryEquals(testObjectDomain, "T2b::op6", "t2b_2b.op6()");
   //
   ocl.assertQueryEquals(testObjectDomain, "T3a::op1", "t2a_3a.op1()");
   ocl.assertQueryEquals(testObjectDomain, "T3a::op2", "t2a_3a.op2()");
   ocl.assertSemanticErrorQuery(
       pivotTypeDomain,
       "t2a_3a.op3()",
       PivotMessagesInternal.UnresolvedOperation_ERROR_,
       "Bug411154",
       "T2a::op3");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op4", "t2a_3a.op4()");
   ocl.assertQueryEquals(testObjectDomain, "T1::op5", "t2a_3a.op5()");
   //
   ocl.assertQueryEquals(testObjectDomain, "T3a::op1", "t3a.op1()");
   ocl.assertQueryEquals(testObjectDomain, "T3a::op2", "t3a.op2()");
   ocl.assertQueryEquals(testObjectDomain, "T3a::op3", "t3a.op3()");
   ocl.assertQueryEquals(testObjectDomain, "T2a::op4", "t3a.op4()");
   ocl.assertQueryEquals(testObjectDomain, "T1::op5", "t3a.op5()");
   ocl.dispose();
 }
 @Test
 public void test_cg_name_occlusion_401692() throws ParserException, IOException {
   TestOCL ocl = createOCL();
   if (!EMFPlugin.IS_ECLIPSE_RUNNING) {
     OCLinEcoreStandaloneSetup.doSetup();
     //			OCLDelegateDomain.initialize(null);
   }
   MetamodelManager metamodelManager = ocl.getMetamodelManager();
   String metamodelText =
       "package scope = 'abc'\n"
           + "{\n"
           + "	class A\n"
           + "	{\n"
           + "		attribute d : String;\n"
           + "		attribute e : String;\n"
           + "	}\n"
           + "	class B\n"
           + "	{\n"
           + "		operation findA(e : String) : A[?]\n"
           + "		{\n"
           + "			body:\n"
           + "				let found : OrderedSet(A) = as?->select(a : A | a.d = e) in if found->size() > 0 then found->first() else null endif;\n"
           + "		}\n"
           + "		property as : A[*] { ordered composes };\n"
           + "	}\n"
           + "}\n";
   Resource metamodel = cs2as(ocl, metamodelText);
   Model pivotModel = (Model) metamodel.getContents().get(0);
   org.eclipse.ocl.pivot.Package pivotPackage = pivotModel.getOwnedPackages().get(0);
   org.eclipse.ocl.pivot.Class pivotTypeA =
       NameUtil.getNameable(pivotPackage.getOwnedClasses(), "A");
   org.eclipse.ocl.pivot.Class pivotTypeB =
       NameUtil.getNameable(pivotPackage.getOwnedClasses(), "B");
   EPackage ePackage = metamodelManager.getEcoreOfPivot(EPackage.class, pivotPackage);
   EClass eClassA = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeA);
   EClass eClassB = metamodelManager.getEcoreOfPivot(EClass.class, pivotTypeB);
   EAttribute eAttributeAd =
       metamodelManager.getEcoreOfPivot(
           EAttribute.class, NameUtil.getNameable(pivotTypeA.getOwnedProperties(), "d"));
   EAttribute eAttributeAe =
       metamodelManager.getEcoreOfPivot(
           EAttribute.class, NameUtil.getNameable(pivotTypeA.getOwnedProperties(), "e"));
   EReference eReferenceBas =
       metamodelManager.getEcoreOfPivot(
           EReference.class, NameUtil.getNameable(pivotTypeB.getOwnedProperties(), "as"));
   EFactory eFactory = ePackage.getEFactoryInstance();
   Resource resource = new ResourceImpl();
   EObject testObjectA1 = eFactory.create(eClassA);
   testObjectA1.eSet(eAttributeAd, "d1");
   testObjectA1.eSet(eAttributeAe, "e1");
   EObject testObjectA2 = eFactory.create(eClassA);
   testObjectA2.eSet(eAttributeAd, "d2");
   testObjectA2.eSet(eAttributeAe, "e2");
   EObject testObjectB = eFactory.create(eClassB);
   resource.getContents().add(testObjectB);
   @SuppressWarnings("unchecked")
   List<EObject> as = (List<EObject>) testObjectB.eGet(eReferenceBas);
   as.add(testObjectA1);
   as.add(testObjectA2);
   //
   ocl.assertQueryEquals(testObjectB, testObjectA1, "self.findA('d1')");
   ocl.assertQueryEquals(testObjectB, null, "self.findA('e2')");
   ocl.dispose();
 }
示例#11
0
 private static EObject createEmployee(String name) {
   EFactory employeeFactory = employeePackage.getEFactoryInstance();
   EObject employee = employeeFactory.create(employeeClass);
   employee.eSet(nameAttr, name);
   return employee;
 }
示例#12
0
  @Override
  protected void setUp() {
    super.setUp();

    pkg = umlf.createPackage();
    pkg.setName("pkg");

    valueType = pkg.createOwnedPrimitiveType("Value");
    valueType
        .createOwnedOperation(
            "<",
            new BasicEList<String>(Collections.singleton("v")),
            new BasicEList<Type>(Collections.singleton(valueType)),
            getUMLBoolean())
        .setIsQuery(true);
    valueType
        .createOwnedOperation(
            "<=",
            new BasicEList<String>(Collections.singleton("v")),
            new BasicEList<Type>(Collections.singleton(valueType)),
            getUMLBoolean())
        .setIsQuery(true);
    valueType
        .createOwnedOperation(
            ">",
            new BasicEList<String>(Collections.singleton("v")),
            new BasicEList<Type>(Collections.singleton(valueType)),
            getUMLBoolean())
        .setIsQuery(true);
    valueType
        .createOwnedOperation(
            ">=",
            new BasicEList<String>(Collections.singleton("v")),
            new BasicEList<Type>(Collections.singleton(valueType)),
            getUMLBoolean())
        .setIsQuery(true);

    thingType = pkg.createOwnedClass("Thing", false);

    values = thingType.createOwnedAttribute("values", valueType);
    values.setUpper(LiteralUnlimitedNatural.UNLIMITED);
    values.setIsOrdered(true);
    values.setIsUnique(true);

    bdValue = thingType.createOwnedAttribute("bdValue", getEcoreBigDecimal());
    biValue = thingType.createOwnedAttribute("biValue", getEcoreBigInteger());

    numeroType = pkg.createOwnedClass("Numero", false);

    numeroType
        .createOwnedOperation(
            "+",
            new BasicEList<String>(Collections.singleton("n")),
            new BasicEList<Type>(Collections.singleton(numeroType)),
            numeroType)
        .setIsQuery(true);
    numeroType
        .createOwnedOperation(
            "-",
            new BasicEList<String>(Collections.singleton("n")),
            new BasicEList<Type>(Collections.singleton(numeroType)),
            numeroType)
        .setIsQuery(true);
    numeroType
        .createOwnedOperation(
            "*",
            new BasicEList<String>(Collections.singleton("n")),
            new BasicEList<Type>(Collections.singleton(numeroType)),
            numeroType)
        .setIsQuery(true);
    numeroType
        .createOwnedOperation(
            "/",
            new BasicEList<String>(Collections.singleton("n")),
            new BasicEList<Type>(Collections.singleton(numeroType)),
            numeroType)
        .setIsQuery(true);

    numeroType
        .createOwnedOperation(
            "-", ECollections.<String>emptyEList(), ECollections.<Type>emptyEList(), numeroType)
        .setIsQuery(true);

    numeroType
        .createOwnedOperation(
            "<",
            new BasicEList<String>(Collections.singleton("n")),
            new BasicEList<Type>(Collections.singleton(numeroType)),
            getUMLBoolean())
        .setIsQuery(true);
    numeroType
        .createOwnedOperation(
            "<=",
            new BasicEList<String>(Collections.singleton("n")),
            new BasicEList<Type>(Collections.singleton(numeroType)),
            getUMLBoolean())
        .setIsQuery(true);
    numeroType
        .createOwnedOperation(
            ">",
            new BasicEList<String>(Collections.singleton("n")),
            new BasicEList<Type>(Collections.singleton(numeroType)),
            getUMLBoolean())
        .setIsQuery(true);
    numeroType
        .createOwnedOperation(
            ">=",
            new BasicEList<String>(Collections.singleton("n")),
            new BasicEList<Type>(Collections.singleton(numeroType)),
            getUMLBoolean())
        .setIsQuery(true);
    numeroType
        .createOwnedOperation(
            "asLong",
            ECollections.<String>emptyEList(),
            ECollections.<Type>emptyEList(),
            getEcoreLong())
        .setIsQuery(true);

    numeros = thingType.createOwnedAttribute("numeros", numeroType);
    numeros.setUpper(LiteralUnlimitedNatural.UNLIMITED);
    numeros.setIsOrdered(true);
    numeros.setIsUnique(true);

    comparable = pkg.createOwnedClass("Comparable", true);
    comparable
        .createOwnedOperation(
            "compareTo",
            new BasicEList<String>(Collections.singleton("c")),
            new BasicEList<Type>(Collections.singleton(comparable)),
            getUMLInteger())
        .setIsQuery(true);

    // the Ecore counterpart

    epkg = UMLUtil.convertToEcore(pkg, null).iterator().next();

    ethingType = (EClass) epkg.getEClassifier(thingType.getName());
    enumeros = (EReference) ethingType.getEStructuralFeature(numeros.getName());
    evalues = (EAttribute) ethingType.getEStructuralFeature(values.getName());
    ebdValue = (EAttribute) ethingType.getEStructuralFeature(bdValue.getName());
    ebiValue = (EAttribute) ethingType.getEStructuralFeature(biValue.getName());

    enumeroType = (EClass) epkg.getEClassifier(numeroType.getName());
    enumeroType.setInstanceClass(Numero.class);

    evalueType = (EDataType) epkg.getEClassifier(valueType.getName());
    evalueType.setInstanceClass(Value.class);

    efactory = epkg.getEFactoryInstance();
    thing = efactory.create(ethingType);

    EPackage.Registry.INSTANCE.put(epkg.getNsURI(), epkg);

    @SuppressWarnings("unchecked")
    EList<Numero> list = (EList<Numero>) thing.eGet(enumeros);
    list.add(new Numero(6));
    list.add(new Numero(2));
  }