/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.core.metamodel.aspect.core.aspects.imports; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.core.metamodel.aspect.AbstractMetamodelAspect; import org.teiid.designer.core.metamodel.aspect.ImportsAspect; import org.teiid.designer.core.metamodel.aspect.MetamodelEntity; import org.teiid.designer.metamodels.core.ModelImport; /** * ModelAnnotationAspect * * @since 8.0 */ public class ModelImportAspect extends AbstractMetamodelAspect implements ImportsAspect { public ModelImportAspect(MetamodelEntity entity) { super.setMetamodelEntity(entity); super.setID(ModelerCore.EXTENSION_POINT.IMPORT_ASPECT.ID); } /** * @see org.teiid.designer.core.metamodel.aspect.ImportsAspect#getModelLocation(org.eclipse.emf.ecore.EObject) * @since 4.3 */ @Override public String getModelLocation(EObject eObject) { CoreArgCheck.isInstanceOf(ModelImport.class, eObject); // the modelImport object ModelImport modelImport = (ModelImport) eObject; return modelImport.getModelLocation(); } /* (non-Javadoc) * @See org.teiid.designer.core.metamodel.aspect.ImportsAspect#getModelImportPaths(org.eclipse.emf.ecore.EObject) */ @Override public IPath getModelPath(EObject eObject) { CoreArgCheck.isInstanceOf(ModelImport.class, eObject); // the modelImport object ModelImport modelImport = (ModelImport) eObject; String importPath = modelImport.getPath(); if(importPath != null) { // return the IPath return new Path(modelImport.getPath()); } return null; } /* (non-Javadoc) * @See org.teiid.designer.core.metamodel.aspect.ImportsAspect#getImportedModelObjectID(org.eclipse.emf.ecore.EObject) */ @Override public String getModelUuid(EObject eObject) { CoreArgCheck.isInstanceOf(ModelImport.class, eObject); // the modelImport object return ((ModelImport)eObject).getUuid(); } /* (non-Javadoc) * @See org.teiid.designer.core.metamodel.aspect.ImportsAspect#getModelType(org.eclipse.emf.ecore.EObject) */ @Override public String getModelType(EObject eObject) { CoreArgCheck.isInstanceOf(ModelImport.class, eObject); // the modelImport object ModelImport modelImport = (ModelImport) eObject; return modelImport.getModelType().getName(); } /* (non-Javadoc) * @See org.teiid.designer.core.metamodel.aspect.ImportsAspect#getPrimaryMetaModelUri(org.eclipse.emf.ecore.EObject) */ @Override public String getPrimaryMetaModelUri(EObject eObject) { CoreArgCheck.isInstanceOf(ModelImport.class, eObject); // the modelImport object ModelImport modelImport = (ModelImport) eObject; return modelImport.getPrimaryMetamodelUri(); } // /* (non-Javadoc) // * @See org.teiid.designer.core.metamodel.aspect.ImportsAspect#setModelPath(org.eclipse.emf.ecore.EObject, org.eclipse.core.runtime.IPath) // */ // public void setModelPath(EObject eObject, IPath modelPath) { // CoreArgCheck.isInstanceOf(ModelImport.class, eObject); // CoreArgCheck.isNotNull(modelPath); // // the modelImport object // ModelImport modelImport = (ModelImport) eObject; // modelImport.setPath(modelPath.toString()); // } /** * @see org.teiid.designer.core.metamodel.aspect.ImportsAspect#setModelLocation(org.eclipse.emf.ecore.EObject, org.eclipse.emf.common.util.URI) * @since 4.3 */ @Override public void setModelLocation(EObject eObject, URI uri) { CoreArgCheck.isInstanceOf(ModelImport.class, eObject); CoreArgCheck.isNotNull(uri); // the modelImport object ModelImport modelImport = (ModelImport) eObject; Resource eResource = modelImport.eResource(); if (eResource != null) { URI eResourceURI = eResource.getURI(); URI importURI = uri; String uriString = URI.decode(importURI.toString()); if (uri.isFile()) { boolean deresolve = (eResourceURI != null && !eResourceURI.isRelative() && eResourceURI.isHierarchical()); if (deresolve && !importURI.isRelative()) { URI deresolvedURI = importURI.deresolve(eResourceURI, true, true, false); if (deresolvedURI.hasRelativePath()) { importURI = deresolvedURI; uriString = URI.decode(importURI.toString()); } } modelImport.setModelLocation(uriString); } else { modelImport.setModelLocation(uriString); } } } }