public EReference createEReference(EClass eClass, String name, EClass type, Multiplicity multiplicity) { EReference eReference = EcoreFactory.eINSTANCE.createEReference(); eReference.setName(name); if (multiplicity == Multiplicity.MANY) { eReference.setUpperBound(-1); } if (!isNew(eClass)) { changes.add(new NewReferenceChange(this, eClass.getEAllStructuralFeatures().size(), eReference)); } eReference.setEType(type); eClass.getEStructuralFeatures().add(eReference); return eReference; }
eRef.setUnsettable(true); // Inverses are always optional? eRef.getEAnnotations().add(createInverseAnnotation()); eRef.setName(attrib.getName()); if (inverseAttribute.getMax_cardinality() != null) { IntegerBound max_cardinality = (IntegerBound) inverseAttribute.getMax_cardinality();
if (!found) { EReference eReference = eFactory.createEReference(); eReference.setName(attributeName.getName()); eReference.setDerived(true); eReference.setUnsettable(true);
/** * @since 2.0 */ public static EReference createEReference(EClass eClass, String name, EClassifier type, boolean isRequired, boolean isMany) { EReference eReference = EcoreFactory.eINSTANCE.createEReference(); eReference.setName(name); eReference.setEType(type); eReference.setLowerBound(isRequired ? 1 : 0); eReference.setUpperBound(isMany ? -1 : 0); eClass.getEStructuralFeatures().add(eReference); return eReference; }
/** * Converts {@link Segment} to {@link EReference} * * @param segment * @param refClass * @return */ public static EReference segmentToEReference(Segment segment, EClass refClass) { EReference reference = segmentGroupToEReference(segment, refClass); annotate(reference, SmooksMetadata.ANNOTATION_TYPE_KEY, SmooksMetadata.SEGMENT_TYPE); annotate(reference, SmooksMetadata.SEGCODE, segment.getSegcode()); String name = segment.getSegcode(); char lastChar = reference.getName().charAt(reference.getName().length() - 1); if (Character.isDigit(lastChar)) { name = name + lastChar; } reference.setName(name); return reference; }
/** * Converts {@link Segment} to {@link EReference} * * @param segment * @param refClass * @return */ public static EReference segmentToEReference(Segment segment, EClass refClass) { EReference reference = segmentGroupToEReference(segment, refClass); annotate(reference, SmooksMetadata.ANNOTATION_TYPE_KEY, SmooksMetadata.SEGMENT_TYPE); annotate(reference, SmooksMetadata.SEGCODE, segment.getSegcode()); String name = segment.getSegcode(); char lastChar = reference.getName().charAt(reference.getName().length() - 1); if (Character.isDigit(lastChar)) { name = name + lastChar; } reference.setName(name); return reference; }
/*Create your second EClass*/ EClass mySecondEClass = ecoreFactory.createEClass(); mySecondEClass.setName("mySecondClass"); myPackage.getEClassifiers().add(mySecondEClass); /*now, the firstClass should hold instances of secondClass*/ /*1. create EReference (Ereferences unlike EAttributes define relationships between EClasses)*/ EReference secondClassesRef = ecoreFactory.createEReference(); secondClassesRef.setName("secondClasses"); /*set containment true -> every EObject must have a Container*/ secondClassesRef.setContainment(true); /*set Type to your EClass*/ secondClassesRef.setEType(mySecondEClass); /*set upperbound -> now the reference is an EList*/ secondClassesRef.setUpperBound(ETypedElement.UNBOUNDED_MULTIPLICITY); /*finally add ERef to EClass*/ myFirstEClass.getEStructuralFeatures().add(secondClassesRef); /*and for example supertypes*/ myFirstEClass.getESuperTypes().add(mySecondEClass);
/** * Creates a droot root class * * @param rootClass * @return */ public static EClass createDocumentRoot(EClass rootClass) { EClass clazz = EcoreFactory.eINSTANCE.createEClass(); clazz.setName("DocumentRoot"); metadata.setDocumentRoot(clazz); if (rootClass != null) { EReference reference = EcoreFactory.eINSTANCE.createEReference(); clazz.getEStructuralFeatures().add(reference); reference.setEType(rootClass); reference.setName(metadata.getName(rootClass)); metadata.setFeatureKind(reference, ExtendedMetaData.ELEMENT_FEATURE); setTargetNamespace(reference); reference.setContainment(true); } return clazz; }
/** * Creates a droot root class * * @param rootClass * @return */ public static EClass createDocumentRoot(EClass rootClass) { EClass clazz = EcoreFactory.eINSTANCE.createEClass(); clazz.setName("DocumentRoot"); metadata.setDocumentRoot(clazz); if (rootClass != null) { EReference reference = EcoreFactory.eINSTANCE.createEReference(); clazz.getEStructuralFeatures().add(reference); reference.setEType(rootClass); reference.setName(metadata.getName(rootClass)); metadata.setFeatureKind(reference, ExtendedMetaData.ELEMENT_FEATURE); setTargetNamespace(reference); reference.setContainment(true); } return clazz; }
/** * Convert {@link SegmentGroup} into {@link EReference} to the given * {@link EClass} * * @param grp * @param refClass * @return */ public static EReference segmentGroupToEReference(SegmentGroup grp, EClass refClass) { EReference reference = EcoreFactory.eINSTANCE.createEReference(); reference.setContainment(true); reference.setName(toJavaName(grp.getXmltag(), false)); reference.setEType(refClass); reference.setLowerBound(grp.getMinOccurs()); reference.setUpperBound(grp.getMaxOccurs()); addMappingInformation(reference, grp); annotate(reference, "minOccurs", String.valueOf(grp.getMinOccurs())); annotate(reference, "maxOccurs", String.valueOf(grp.getMaxOccurs())); annotate(reference, SmooksMetadata.ANNOTATION_TYPE_KEY, SmooksMetadata.SEGMENT_GROUP_TYPE); annotate(reference, SmooksMetadata.SEGCODE, grp.getSegcode()); return reference; }
/** * Convert {@link SegmentGroup} into {@link EReference} to the given * {@link EClass} * * @param grp * @param refClass * @return */ public static EReference segmentGroupToEReference(SegmentGroup grp, EClass refClass) { EReference reference = EcoreFactory.eINSTANCE.createEReference(); reference.setContainment(true); reference.setName(toJavaName(grp.getXmltag(), false)); reference.setEType(refClass); reference.setLowerBound(grp.getMinOccurs()); reference.setUpperBound(grp.getMaxOccurs()); addMappingInformation(reference, grp); annotate(reference, "minOccurs", String.valueOf(grp.getMinOccurs())); annotate(reference, "maxOccurs", String.valueOf(grp.getMaxOccurs())); annotate(reference, SmooksMetadata.ANNOTATION_TYPE_KEY, SmooksMetadata.SEGMENT_GROUP_TYPE); annotate(reference, SmooksMetadata.SEGCODE, grp.getSegcode()); return reference; }
private void createEPackageMultiplicityOneCrossRefNoOpposite() { EPackage ePackage = this.createNewEPackage("MyEPackage", "http://www.example.com/model", "model"); EClass eClass = EcoreFactory.eINSTANCE.createEClass(); eClass.setName("MyEClass"); EClass eOtherClass = EcoreFactory.eINSTANCE.createEClass(); eOtherClass.setName("YourEClass"); EReference eReference = EcoreFactory.eINSTANCE.createEReference(); eReference.setName("child"); eReference.setEType(eOtherClass); eReference.setLowerBound(0); eReference.setUpperBound(1); eReference.setContainment(false); eClass.getEStructuralFeatures().add(eReference); ePackage.getEClassifiers().add(eClass); ePackage.getEClassifiers().add(eOtherClass); this.registerEPackages(ePackage); }
private void createEPackageMultiplicityOneCrossRefWithMultiplicityOneOpposite() { EPackage ePackage = this.createNewEPackage("MyEPackage", "http://www.example.com/model", "model"); EClass eClass = EcoreFactory.eINSTANCE.createEClass(); eClass.setName("MyEClass"); EClass eOtherClass = EcoreFactory.eINSTANCE.createEClass(); eOtherClass.setName("YourEClass"); EReference eRefChild = EcoreFactory.eINSTANCE.createEReference(); eRefChild.setName("child"); eRefChild.setEType(eOtherClass); eRefChild.setLowerBound(0); eRefChild.setUpperBound(1); eRefChild.setContainment(false); EReference eRefParent = EcoreFactory.eINSTANCE.createEReference(); eRefParent.setName("parent"); eRefParent.setLowerBound(0); eRefParent.setUpperBound(1); eRefParent.setEType(eClass); eRefParent.setEOpposite(eRefChild); eRefChild.setEOpposite(eRefParent); eClass.getEStructuralFeatures().add(eRefChild); eOtherClass.getEStructuralFeatures().add(eRefParent); ePackage.getEClassifiers().add(eClass); ePackage.getEClassifiers().add(eOtherClass); this.registerEPackages(ePackage); }
private void createEPackageMultiplicityOneContainmentWithOpposite() { EPackage ePackage = this.createNewEPackage("MyEPackage", "http://www.example.com/model", "model"); EClass eClass = EcoreFactory.eINSTANCE.createEClass(); eClass.setName("MyEClass"); EClass eOtherClass = EcoreFactory.eINSTANCE.createEClass(); eOtherClass.setName("YourEClass"); EReference eRefChild = EcoreFactory.eINSTANCE.createEReference(); eRefChild.setName("child"); eRefChild.setEType(eOtherClass); eRefChild.setLowerBound(0); eRefChild.setUpperBound(1); eRefChild.setContainment(true); EReference eRefParent = EcoreFactory.eINSTANCE.createEReference(); eRefParent.setName("parent"); eRefParent.setLowerBound(0); eRefParent.setUpperBound(1); eRefParent.setEType(eClass); eRefParent.setEOpposite(eRefChild); eRefChild.setEOpposite(eRefParent); eClass.getEStructuralFeatures().add(eRefChild); eOtherClass.getEStructuralFeatures().add(eRefParent); ePackage.getEClassifiers().add(eClass); ePackage.getEClassifiers().add(eOtherClass); this.registerEPackages(ePackage); }
private void createEPackageMultiplicityManyCrossRefNoOpposite() { EPackage ePackage = this.createNewEPackage("MyEPackage", "http://www.example.com/model", "model"); EClass eClass = EcoreFactory.eINSTANCE.createEClass(); eClass.setName("MyEClass"); EClass eOtherClass = EcoreFactory.eINSTANCE.createEClass(); eOtherClass.setName("YourEClass"); EReference eReference = EcoreFactory.eINSTANCE.createEReference(); eReference.setName("children"); eReference.setEType(eOtherClass); eReference.setLowerBound(0); eReference.setUpperBound(-1); eReference.setContainment(false); eClass.getEStructuralFeatures().add(eReference); ePackage.getEClassifiers().add(eClass); ePackage.getEClassifiers().add(eOtherClass); this.registerEPackages(ePackage); }
private void createEPackageMultiplicityOneContainmentNoOpposite() { EPackage ePackage = this.createNewEPackage("MyEPackage", "http://www.example.com/model", "model"); EClass eClass = EcoreFactory.eINSTANCE.createEClass(); eClass.setName("MyEClass"); EClass eOtherClass = EcoreFactory.eINSTANCE.createEClass(); eOtherClass.setName("YourEClass"); EReference eReference = EcoreFactory.eINSTANCE.createEReference(); eReference.setName("child"); eReference.setEType(eOtherClass); eReference.setLowerBound(0); eReference.setUpperBound(1); eReference.setContainment(true); eClass.getEStructuralFeatures().add(eReference); ePackage.getEClassifiers().add(eClass); ePackage.getEClassifiers().add(eOtherClass); this.registerEPackages(ePackage); }
private void createEPackageMultiplicityManyContainmentNoOpposite() { EPackage ePackage = this.createNewEPackage("MyEPackage", "http://www.example.com/model", "model"); EClass eClass = EcoreFactory.eINSTANCE.createEClass(); eClass.setName("MyEClass"); EClass eOtherClass = EcoreFactory.eINSTANCE.createEClass(); eOtherClass.setName("YourEClass"); EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute(); eAttribute.setName("MyAttribute"); eAttribute.setEType(EcorePackage.Literals.ESTRING); eAttribute.setLowerBound(0); eAttribute.setUpperBound(1); eClass.getEStructuralFeatures().add(eAttribute); EReference eReference = EcoreFactory.eINSTANCE.createEReference(); eReference.setName("children"); eReference.setEType(eOtherClass); eReference.setLowerBound(0); eReference.setUpperBound(-1); eReference.setContainment(true); eClass.getEStructuralFeatures().add(eReference); ePackage.getEClassifiers().add(eClass); ePackage.getEClassifiers().add(eOtherClass); this.registerEPackages(ePackage); }
private void createEPackageSymmetricMultiplicityManyCrosssRef() { EPackage ePackage = this.createNewEPackage("MyEPackage", "http://www.example.com/model", "model"); { EClass eClass = EcoreFactory.eINSTANCE.createEClass(); eClass.setName("MyEClass"); { EReference eRef = EcoreFactory.eINSTANCE.createEReference(); eRef.setName("ref"); eRef.setEType(eClass); eRef.setLowerBound(0); eRef.setUpperBound(-1); eRef.setEOpposite(eRef); eRef.setContainment(false); eRef.setOrdered(true); eRef.setUnique(true); eClass.getEStructuralFeatures().add(eRef); } ePackage.getEClassifiers().add(eClass); } this.registerEPackages(ePackage); }