/** * Convert an (annotated) Ecore resource to a Pivot Model. * * @param alias * @param ecoreResource the annotated Ecore resource * @return the Pivot root package */ public static @NonNull Model importFromEcore( @NonNull EnvironmentFactoryInternal environmentFactory, String alias, @NonNull Resource ecoreResource) { Ecore2AS conversion = getAdapter(ecoreResource, environmentFactory); return conversion.getASModel(); }
public Type getASType(@NonNull EObject eObject) { Element pivotElement = newCreateMap.get(eObject); if (pivotElement == null) { Resource resource = eObject.eResource(); if ((resource != ecoreResource) && (resource != null)) { Ecore2AS converter = getAdapter(resource, environmentFactory); if (allConverters.add(converter)) { converter.getASModel(); // allEClassifiers.addAll(converter.allEClassifiers); // allNames.addAll(converter.allNames); for (Map.Entry<@NonNull EObject, @NonNull Element> entry : converter.newCreateMap.entrySet()) { newCreateMap.put(entry.getKey(), entry.getValue()); } } } pivotElement = newCreateMap.get(eObject); } if (pivotElement == null) { error("Unresolved " + eObject); } else if (!(pivotElement instanceof Type)) { error("Incompatible " + eObject); } else { return (Type) pivotElement; } return null; }
public <T extends Element> T getASElement( @NonNull Class<T> requiredClass, @NonNull EObject eObject) { if (pivotModel == null) { getASModel(); } Element element = newCreateMap.get(eObject); if (element == null) { Resource resource = eObject.eResource(); if ((resource != ecoreResource) && (resource != null)) { Ecore2AS converter = getAdapter(resource, environmentFactory); if (allConverters.add(converter)) { converter.getASModel(); for (Map.Entry<@NonNull EObject, @NonNull Element> entry : converter.newCreateMap.entrySet()) { newCreateMap.put(entry.getKey(), entry.getValue()); } } } element = newCreateMap.get(eObject); } if (element == null) { error("Unresolved " + eObject); } else if (!requiredClass.isAssignableFrom(element.getClass())) { throw new ClassCastException( element.getClass().getName() + " is not assignable to " + requiredClass.getName()); } @SuppressWarnings("unchecked") T castElement = (T) element; return castElement; }
/** * Convert an (annotated) Ecore object to a pivot element. * * @param eObject the annotated Ecore object * @return the pivot element */ public static Element importFromEcore( @NonNull EnvironmentFactoryInternal environmentFactory, String alias, @NonNull EObject eObject) { Resource ecoreResource = ClassUtil.nonNullEMF(eObject.eResource()); Ecore2AS conversion = getAdapter(ecoreResource, environmentFactory); @SuppressWarnings("unused") Model pivotModel = conversion.getASModel(); return conversion.newCreateMap.get(eObject); }
public @Nullable <T extends Element> T getASOfEcore( @NonNull Class<T> requiredClass, @NonNull EObject eObject) { if (pivotModel == null) { getASModel(); } Element element = newCreateMap.get(eObject); if (element == null) { return null; } if (!requiredClass.isAssignableFrom(element.getClass())) { throw new ClassCastException( element.getClass().getName() + " is not assignable to " + requiredClass.getName()); } @SuppressWarnings("unchecked") T castElement = (T) element; return castElement; }