/* * 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.jdbc.relational; import org.eclipse.emf.ecore.EClass; import org.teiid.designer.jdbc.metadata.JdbcNode; import org.teiid.designer.jdbc.metadata.JdbcTable; import org.teiid.designer.metamodels.relational.RelationalPackage; import org.teiid.designer.metamodels.relational.Table; /** * JdbcNodeToRelationalMapping * * @since 8.0 */ public interface JdbcNodeToRelationalMapping { /** * Obtain the {@link RelationalPackage Relational} {@link EClass} that is used to represent the * supplied {@link JdbcNode database object}. * @param jdbcNode the database object for which the Relational * metaclass should be found; may not be null * @return the Relational metaclass that should be used to represent * the database object; may be null only if there is no known * metaclass for the supplied type of node */ public EClass getRelationalClassForJdbcNode( JdbcNode jdbcNode ); /** * Register a specific {@link RelationalPackage Relational} {@link EClass} for the supplied * {@link java.sql.DatabaseMetaData#getTableTypes() JDBC table type}. The default for all * {@link org.teiid.designer.jdbc.metadata.JdbcTable JdbcTable} instances is * {@link Table}. * @param tableType the JDBC table type; may not be null * @param eClassName the name of the {@link EClass} that should be used to represent * {@link JdbcTable database table objects}; may not be null or zero length */ public void setRelationalClassForJdbcTableType( String tableType, String eClassName ); /** * Get the {@link RelationalPackage Relational} {@link EClass} that is * currently registered for the supplied * {@link java.sql.DatabaseMetaData#getTableTypes() JDBC table type}. The default for all * {@link org.teiid.designer.jdbc.metadata.JdbcTable JdbcTable} instances is * {@link Table}. * <p> * If there is no EClass name registered for the supplied table type, this method * then checks for an EClass name registered for the {@link String#toUpperCase() uppercase} * form of the table type. * </p> * @param tableType the JDBC table type; may not be null * @return the name of the {@link EClass} that should be used to represent * {@link JdbcTable database table objects}; null if no EClass is registered * for the supplied table type or the uppercase form of the table type */ public String getRelationalClassForJdbcTableType( String tableType ); }