/* * 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 java.util.Collection; import org.eclipse.emf.ecore.EObject; /** * SqlTableAspect * * @since 8.0 */ public interface SqlTableAspect extends SqlColumnSetAspect { // These are mapping types for which the table can be atarget. interface MAPPINGS { public static final int SQL_TRANSFORM = 1; public static final int TREE_TRANSFORM = 2; } // prefix on the name of the materialized table final String MATERIALIZED_VIEW_PREFIX = "MV"; //$NON-NLS-1$ // suffix on the name of the materialized staging table final String STAGING_TABLE_SUFFIX = "ST"; //$NON-NLS-1$ /** * Check if UPDATE operations are supported on the table * @param eObject The <code>EObject</code> for which update prop is obtained * @return true if the table can be used in an UPDATE */ boolean supportsUpdate(EObject eObject); /** * Check if table represents a table in a virtual model * @return true if the table is virtual */ boolean isVirtual(EObject eObject); /** * Check if table represents a system table * @return true if the table is system table */ boolean isSystem(EObject eObject); /** * Check if table represents a materialized view * @return true if the table is materialized view */ boolean isMaterialized(EObject eObject); /** * Check if table represents a global temporary table * @return true if the table is temporary table */ boolean isGlobalTempTable(EObject eObject); /** * Return the table type of this table * @see org.teiid.designer.metadata.runtime.MetadataConstants.TABLE_TYPES * @return a int value from the available table types */ int getTableType(EObject eObject); /** * Get the materialized view table reference ID * @return the string ID */ String getMaterializedTableId(EObject eObject); /** * Get a list of <code>EObject</code>s objects for the indexes in the table * @param eObject The <code>EObject</code> for which indexes are obtained * @return a list of <code>EObject</code>s */ Collection getIndexes(EObject eObject); /** * Get a list of <code>EObject</code>s objects for the unique keys in the table * @param eObject The <code>EObject</code> for which unique keys are obtained * @return a list of <code>EObject</code>s */ Collection getUniqueKeys(EObject eObject); /** * Get a list of <code>EObject</code>s objects for the foreign keys in the table * @param eObject The <code>EObject</code> for which foreign keys are obtained * @return a list of <code>EObject</code>s */ Collection getForeignKeys(EObject eObject); /** * Get a primary key <code>EObject</code> in the table * @param eObject The <code>EObject</code> for which primary key is obtained * @return a <code>EObject</code> for the primary key */ Object getPrimaryKey(EObject eObject); /** * Get a list of <code>EObject</code>s objects for the access patterns in the table * @param eObject The <code>EObject</code> for which access patterns are obtained * @return a list of <code>EObject</code>s */ Collection getAccessPatterns(EObject eObject); /** * Get a cardinality of the table in the table * @param eObject The <code>EObject</code> for which cardinality is obtained * @return cardinality for the table. */ int getCardinality(EObject eObject); /** * Check if the table is mappable for the given mapping type. * @param eObject The <code>EObject</code> whose mapability is checked * @param mappinType The mapping type being checked. * @return true if mappable else false */ boolean isMappable(EObject eObject, int mappingType); /** * Check if the table is can be a transformation source for the given target. * @param source The <code>EObject</code> intends to be a transformation source * @param target The <code>EObject</code> that is the target of the transformation * @return true if can be a source else false */ boolean canBeTransformationSource(EObject source, EObject target); /** * Check if the table can accept the given transformation source. * @param target The <code>EObject</code> that is the target of the transformation * @param source The <code>EObject</code> intends to be a transformation source * @return true if can be a source else false */ boolean canAcceptTransformationSource(EObject target, EObject source); /** * Sets updatability property on a table. * @param eObject The <code>EObject</code> for which update prop is set. * @param supportsUpdate Sets a boolean indicating if the table supports update */ void setSupportsUpdate(EObject eObject, boolean supportsUpdate); }