/*
* 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.sql;
import org.eclipse.core.runtime.IPath;
import org.eclipse.emf.ecore.EObject;
import org.teiid.designer.core.metamodel.aspect.MetamodelAspect;
/**
* SqlAspect
*
* @since 8.0
*/
public interface SqlAspect extends MetamodelAspect {
/**
* Returns true if, for this implementation of SqlAspect, the eObject
* being checked can be used in the context of SQL query validation or
* resolution. If false is returned, this aspect may be used to obtain
* metamodel specific information about this EObject, but this EObject
* is not necessary for query validation or resolution.
* <p>Examples of EObjects for which false is returned are:</p>
* <li>
* Transformation.InputSet
* Transformation.InputSetParameter
* Xsd.XSDSimpleTypeDefinition (if not a global simple type)
* </li>
* @param eObject The <code>EObject</code> to be checked
* @return
*/
boolean isQueryable(EObject eObject);
/**
* Returns true if the implementation of this SqlAspect represents
* the specified record type.
* @param recordType one of {@link org.teiid.designer.core.index.IndexConstants.RECORD_TYPE}
* @return
*/
boolean isRecordType(char recordType);
/**
* Get entity short name
* @param eObject The <code>EObject</code> for which name is obtained
* @return short name of the metamodel entity.
*/
String getName(EObject eObject);
/**
* Get entity fully qualified name.
* @param eObject The <code>EObject</code> for which name is obtained
* @return full name of the metamodel entity.
*/
String getFullName(EObject eObject);
/**
* Get entity name in source
* @param eObject The <code>EObject</code> for which nameInSource is obtained
* @return nameInSource of the metamodel entity.
*/
String getNameInSource(EObject eObject);
/**
* Get the ObjectID of the metamodel entity.
* @param eObject The <code>EObject</code> for which object ID is obtained
* @return ObjectID of the metamodel entity.
*/
Object getObjectID(EObject eObject);
/**
* Get the ObjectID of the parent metamodel entity. The parent
* entity may be the actual eContainer for the specified EObject or
* may represent a logical parent within the model.
* @param eObject The <code>EObject</code> for which the parent's object ID is obtained
* @return ObjectID of the parent entity.
*/
Object getParentObjectID(EObject eObject);
/**
* Get the relative path within the model including the model name.
* @param eObject The <code>EObject</code> for which path is obtained
* @return short name of the table
*/
IPath getPath(EObject eObject);
/**
* Update the targetObject with the properties of the sourceObject,
* this method may or maynot set all the properties and is not always implemented
* depending on the aspect.
* @param targetObject The target object that needs to be updated
* @param sourceObject The source object whose properties are copied over
*/
void updateObject(EObject targetObject, EObject sourceObject);
}