package br.puc.molic.diagram.part; import java.text.MessageFormat; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EEnum; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; public class MetaModelFacility { /** * @generated */ private static MetaModelFacility instanceMolic; /** * @generated */ private final EPackage ePackage; /** * @generated */ private MetaModelFacility(EPackage ePackage) { this.ePackage = ePackage; } /** * @throws IllegalStateException if no EPackage with given URI is registered. * @generated */ public static MetaModelFacility getMolic() { if (instanceMolic == null) { EPackage pkg = getRegistry().getEPackage("molic"); if (pkg == null) { throw new IllegalStateException( "Package molic(molic) not found"); } instanceMolic = new MetaModelFacility(pkg); instanceMolic.initMolic(); } return instanceMolic; } /** * Default implementation returns global registry, clients that need another may redefine. * @generated */ private static EPackage.Registry getRegistry() { return EPackage.Registry.INSTANCE; } /** * @generated */ public boolean isInstance(Object obj, String metaClassName) { EClass metaClass = getEClass(metaClassName); return obj instanceof EObject && metaClass.isSuperTypeOf(((EObject) obj).eClass()); } /** * @generated */ public EObject newInstance(String metaClassName) { return this.ePackage.getEFactoryInstance().create( getEClass(metaClassName)); } /** * @generated */ public EClass getEClass(String metaClassName) { assert metaClassName != null; EClass metaClass = findMetaClass(metaClassName); assertMetaClass(metaClass, metaClassName); return metaClass; } /** * @generated */ public EStructuralFeature getEFeature(String metaClassName, String metaFeatureName) { assert metaFeatureName != null; EClass metaClass = getEClass(metaClassName); EStructuralFeature f = metaClass.getEStructuralFeature(metaFeatureName); assertMetaFeature(f, metaClass, metaFeatureName); return f; } /** * @generated */ public EAttribute getEAttribute(String metaClassName, String metaFeatureName) { return (EAttribute) getEFeature(metaClassName, metaFeatureName); } /** * @generated */ public EReference getEReference(String metaClassName, String metaFeatureName) { return (EReference) getEFeature(metaClassName, metaFeatureName); } /** * @generated */ public EDataType getEDataType(String metaClassName) { assert metaClassName != null; EClassifier c = this.ePackage.getEClassifier(metaClassName); if (false == c instanceof EDataType) { return null; } return (EDataType) c; } /** * @generated */ public EEnum getEEnum(String metaClassName) { assert metaClassName != null; EClassifier c = this.ePackage.getEClassifier(metaClassName); if (false == c instanceof EEnum) { return null; } return (EEnum) c; } /** * @generated */ private EClass findMetaClass(String name) { EClassifier c = this.ePackage.getEClassifier(name); if (false == c instanceof EClass) { return null; } return (EClass) c; } /** * Default implementation throws IllegalStateException if metaclass is null * @generated */ private void assertMetaClass(EClass metaClass, String metaClassName) { if (metaClass == null) { throw new IllegalStateException(MessageFormat.format( "Can't find class {0} in the package {1}", new Object[] { metaClassName, this.ePackage.getName() })); } } /** * Default implementation throws IllegalStateException if meta-feature is null * @generated */ private void assertMetaFeature(EStructuralFeature metaFeature, EClass metaClass, String featureName) { if (metaFeature == null) { throw new IllegalStateException(MessageFormat.format( "Can't find feature {0} of class {1} in the package {2}", new Object[] { featureName, metaClass.getName(), this.ePackage.getName() })); } } /** * @generated */ private void initMolic() { } }