/* * 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.transformation.aspects.sql; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.emf.ecore.EObject; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.core.metamodel.aspect.AbstractMetamodelAspect; import org.teiid.designer.core.metamodel.aspect.AspectManager; import org.teiid.designer.core.metamodel.aspect.MetamodelEntity; import org.teiid.designer.core.metamodel.aspect.sql.SqlAspect; /** * AbstractTransformationSqlAspect * * @since 8.0 */ public abstract class AbstractTransformationSqlAspect extends AbstractMetamodelAspect implements SqlAspect { public static final String ASPECT_ID = ModelerCore.EXTENSION_POINT.SQL_ASPECT.ID; public static final String FULL_NAME_DELIMITER = "."; //$NON-NLS-1$ protected AbstractTransformationSqlAspect(MetamodelEntity entity) { super.setMetamodelEntity(entity); super.setID(ASPECT_ID); } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlAspect#getFullName(org.eclipse.emf.ecore.EObject) */ @Override public String getFullName(final EObject eObject) { final String parentFullName = getParentFullName(eObject); if ( parentFullName != null ) { final String name = getName(eObject); return parentFullName + FULL_NAME_DELIMITER + name; } return getName(eObject); } /** * @see org.teiid.designer.core.metamodel.aspect.sql.SqlAspect#getPath(org.eclipse.emf.ecore.EObject) */ @Override public IPath getPath(final EObject eObject) { final IPath parentPath = getParentPath(eObject); final String name = getName(eObject); if ( parentPath != null ) { return parentPath.append(name); } return new Path(name); } protected String getParentFullName(EObject eObject) { final EObject parent = eObject.eContainer(); if ( parent != null ) { final SqlAspect parentAspect = AspectManager.getSqlAspect(parent); if ( parentAspect != null ) { final String parentFullName = parentAspect.getFullName(parent); return parentFullName; } } return null; } protected IPath getParentPath(EObject eObject) { final EObject parent = eObject.eContainer(); if ( parent != null ) { final SqlAspect parentAspect = AspectManager.getSqlAspect(parent); if ( parentAspect != null ) { final IPath parentPath = parentAspect.getPath(parent); return parentPath; } } return null; } protected String getModelName(EObject eObject) { IPath parentPath = getParentPath(eObject); return parentPath.segment(0); } }