package edu.isistan.sadanalyzer.util;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
public class ReflectionHelper {
private static List<EPackage> ePackages;
static {
ePackages = new ArrayList<EPackage>();
//ePackages.addAll((Collection<? extends EPackage>) EPackage.Registry.INSTANCE.values());
for(Object object : EPackage.Registry.INSTANCE.values()) {
if(object instanceof EPackage) {
ePackages.add((EPackage)object);
}
}
}
public static EPackage getEPackage(String eClass) {
for(EPackage ePackage : ePackages)
if(
ePackage.getEClassifier(eClass) != null &&
!ePackage.getNsURI().equals("http://www.eclipse.org/emf/2003/XMLType") &&
!ePackage.getNsURI().equals("http://www.eclipse.org/emf/2002/Ecore")
)
return ePackage;
return null;
}
public static EClass getEClass(EPackage ePackage, String eClass) {
return (EClass) ePackage.getEClassifier(eClass);
}
public static EClass getEClass(String eClass) {
return getEClass(getEPackage(eClass), eClass);
}
public static EAttribute getEAttribute(EClass eClass, String eAttribute) {
return (EAttribute) eClass.getEStructuralFeature(eAttribute.toLowerCase());
}
public static EAttribute getEAttribute(String eClass, String eAttribute) {
return getEAttribute(getEClass(eClass), eAttribute);
}
}