/* * 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.emf.ecore.EObject; /** * SqlColumnAspect is used to get the different properties on a column for runtime metadata. * * @since 8.0 */ public interface SqlColumnAspect extends SqlAspect, SqlDatatypeCheckerAspect { /** * Check if the column is selectable * @param eObject The <code>EObject</code> for which selectable prop is obtained * @return true if the column is selectable elese false */ boolean isSelectable(EObject eObject); /** * Check if the column is updatable * @param eObject The <code>EObject</code> for which updatable prop is obtained * @return true if the column is updatable else false */ boolean isUpdatable(EObject eObject); /** * Get the column's nulltype * @param eObject The <code>EObject</code> for which nulltype prop is obtained * @return true if the column's null type */ int getNullType(EObject eObject); /** * Check if the column is autoincrementable * @param eObject The <code>EObject</code> for which autoincrementable prop is obtained * @return true if the column is autoincrementable else false */ boolean isAutoIncrementable(EObject eObject); /** * Check if the column is casesensitive * @param eObject The <code>EObject</code> for which caseSensitive prop is obtained * @return true if the column is casesensitive else false */ boolean isCaseSensitive(EObject eObject); /** * Check if the column is signed type. * @param eObject The <code>EObject</code> for which signed prop is obtained * @return true if the column is of a fixed length */ boolean isSigned(EObject eObject); /** * Check if the column is a currency type * @param eObject The <code>EObject</code> for which currency type prop is obtained * @return true if the column is of a fixed length */ boolean isCurrency(EObject eObject); /** * Check if the column is of a fixed length * @param eObject The <code>EObject</code> for which fixedLength prop is obtained * @return true if the column is of a fixed length */ boolean isFixedLength(EObject eObject); /** * Check if the column represents a column on a virtual group * that is mapped to a procedure's input parameter that is a * transformation source. In this sense, the virtual column * is an input parameter to the tranformation. * @param eObject The <code>EObject</code> * @return true if the column is a tranformation input parameter */ boolean isTranformationInputParameter(EObject eObject); /** * Check if the column is searcheable in a LIKE clause * @param eObject The <code>EObject</code> for which search type is obtained * @return true if the column is searcheable in a LIKE clause */ int getSearchType(EObject eObject); /** * Get the default value of the column * @param eObject The <code>EObject</code> for which defaultValue prop is obtained * @return column's default value */ String getDefaultValue(EObject eObject); /** * Get the minimum value of the column * @param eObject The <code>EObject</code> for which minimum value prop is obtained * @return column's minimum value */ Object getMinValue(EObject eObject); /** * Get the maximum value of the column * @param eObject The <code>EObject</code> for which maximum value prop is obtained * @return column's maximum value */ Object getMaxValue(EObject eObject); /** * Get the format of the column * @param eObject The <code>EObject</code> for which format is obtained * @return column's format */ String getFormat(EObject eObject); /** * Get the column's length * @param eObject The <code>EObject</code> for which length prop is obtained * @return length of the column */ int getLength(EObject eObject); /** * Get the column's length * @param eObject The <code>EObject</code> for which scale prop is obtained * @return length of the column */ int getScale(EObject eObject); /** * Get the column's radix * @param eObject The <code>EObject</code> for which scale prop is obtained * @return length of the column */ int getRadix(EObject eObject); /** * Get the number of distinct values this column has in the table. * @param eObject The <code>EObject</code> for which scale prop is obtained * @return distinct values for the column * @since 4.3 */ int getDistinctValues(EObject eObject); /** * Get the number of null values this column has in the table. * @param eObject The <code>EObject</code> for which scale prop is obtained * @return null values for the column * @return * @since 4.3 */ int getNullValues(EObject eObject); /** * Get the datatype of the column * @param eObject The <code>EObject</code> for which datatype prop is obtained * @return column's datatype */ EObject getDatatype(EObject eObject); /** * Set the datatype for the column * @param eObject The <code>EObject</code> for which datatype prop is to be set * @param datatype The <code>Datatype</code> value */ void setDatatype(EObject eObject, EObject datatype); /** * Indicates if the {@link #setDatatype(EObject, EObject)} is a supported operation. * @return <code>true</code>if supported; <code>false</code> otherwise. * @since 4.2 */ boolean canSetDatatype(); /** * Set the length for the column * @param eObject The <code>EObject</code> for which length prop is to be set * @param length The length value */ void setLength(EObject eObject, int length); /** * Indicates if the {@link #setLength(EObject, int)} is a supported operation. * @return <code>true</code>if supported; <code>false</code> otherwise. * @since 4.2 */ boolean canSetLength(); /** * Set the null type for the column * @param eObject The <code>EObject</code> for which null type value is to be set * @param nullType The null type value */ void setNullType(EObject eObject, int nullType); /** * Indicates if the {@link #setNullType(EObject, int)} is a supported operation. * @return <code>true</code>if supported; <code>false</code> otherwise. * @since 4.2 */ boolean canSetNullType(); /** * Get the name of the datatype of the column * @param eObject The <code>EObject</code> for which datatype prop is obtained * @return name of the column's datatype */ String getDatatypeName(EObject eObject); /** * Get the name of the runtime type of the column * @param eObject The <code>EObject</code> for which runtime type is obtained * @return name of the column's runtime datatype */ String getRuntimeType(EObject eObject); /** * Get the name of the native type of the column * @param eObject The <code>EObject</code> for which native type is obtained * @return name of the column's native datatype */ String getNativeType(EObject eObject); /** * Get the string form of the datatype ObjectID of the column * @param eObject The <code>EObject</code> for which datatype type is obtained * @return ObjectID string of the column's datatype */ String getDatatypeObjectID(EObject eObject); /** * Get the precision of the column * @param eObject The <code>EObject</code> for which precision prop is obtained * @return column's precision */ int getPrecision(EObject eObject); /** * Get the position of the column within its container * @param eObject The <code>EObject</code> for which position prop is obtained * @return column's position */ int getPosition(EObject eObject); /** * Get the charOctetLength of the column * @param eObject The <code>EObject</code> for which charOctetLength prop is obtained * @return column's char octect length */ int getCharOctetLength(EObject eObject); }