Class VTIMetaDataTemplate

java.lang.Object
org.apache.derby.vti.VTIMetaDataTemplate
All Implemented Interfaces:
ResultSetMetaData, Wrapper
Direct Known Subclasses:
ImportResultSetMetaData

public abstract class VTIMetaDataTemplate extends Object implements ResultSetMetaData
An abstract implementation of ResultSetMetaData (JDBC 1.2) that is useful when writing a VTI (virtual table interface). This class implements most of the methods of ResultSetMetaData, each one throwing a SQLException with the name of the method. A concrete subclass can then just implement the methods not implemented here and override any methods it needs to implement for correct functionality.

The methods not implemented here are

  • getColumnCount()
  • getColumnType()

For virtual tables the database engine only calls methods defined in the JDBC 1.2 definition of java.sql.ResultSetMetaData.
Classes that implement a JDBC 2.0 conformant java.sql.ResultSetMetaData can be used as the meta data for virtual tables.
Developers can use the VTIMetaDataTemplate20 instead of this class when developing in a Java 2 environment.
  • Constructor Details

    • VTIMetaDataTemplate

      public VTIMetaDataTemplate()
  • Method Details

    • isWrapperFor

      public boolean isWrapperFor(Class<?> iface) throws SQLException
      Specified by:
      isWrapperFor in interface Wrapper
      Throws:
      SQLException
    • unwrap

      public <T> T unwrap(Class<T> iface) throws SQLException
      Specified by:
      unwrap in interface Wrapper
      Throws:
      SQLException
    • isAutoIncrement

      public boolean isAutoIncrement(int column) throws SQLException
      Is the column automatically numbered, and thus read-only?
      Specified by:
      isAutoIncrement in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if the column is automatically numbered
      Throws:
      SQLException - if a database-access error occurs.
    • isCaseSensitive

      public boolean isCaseSensitive(int column) throws SQLException
      Does a column's case matter?
      Specified by:
      isCaseSensitive in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if the column is case-sensitive
      Throws:
      SQLException - if a database-access error occurs.
    • isSearchable

      public boolean isSearchable(int column) throws SQLException
      Can the column be used in a WHERE clause?
      Specified by:
      isSearchable in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if the column is searchable
      Throws:
      SQLException - if a database-access error occurs.
    • isCurrency

      public boolean isCurrency(int column) throws SQLException
      Is the column a cash value?
      Specified by:
      isCurrency in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if the column is a cash value
      Throws:
      SQLException - if a database-access error occurs.
    • isNullable

      public int isNullable(int column) throws SQLException
      Can you put a NULL in this column?
      Specified by:
      isNullable in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      columnNoNulls, columnNullable or columnNullableUnknown
      Throws:
      SQLException - if a database-access error occurs.
    • isSigned

      public boolean isSigned(int column) throws SQLException
      Is the column a signed number?
      Specified by:
      isSigned in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if the column is a signed number
      Throws:
      SQLException - if a database-access error occurs.
    • getColumnDisplaySize

      public int getColumnDisplaySize(int column) throws SQLException
      What's the column's normal maximum width in chars?
      Specified by:
      getColumnDisplaySize in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      the column's maximum width
      Throws:
      SQLException - if a database-access error occurs.
    • getColumnLabel

      public String getColumnLabel(int column) throws SQLException
      What's the suggested column title for use in printouts and displays?
      Specified by:
      getColumnLabel in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      the column's title
      Throws:
      SQLException - if a database-access error occurs.
    • getColumnName

      public String getColumnName(int column) throws SQLException
      What's a column's name?
      Specified by:
      getColumnName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      column name
      Throws:
      SQLException - if a database-access error occurs.
    • getSchemaName

      public String getSchemaName(int column) throws SQLException
      What's a column's table's schema?
      Specified by:
      getSchemaName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      schema name or "" if not applicable
      Throws:
      SQLException - if a database-access error occurs.
    • getPrecision

      public int getPrecision(int column) throws SQLException
      How many decimal digits are in the column?
      Specified by:
      getPrecision in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      the column's precision
      Throws:
      SQLException - if a database-access error occurs.
    • getScale

      public int getScale(int column) throws SQLException
      What's a column's number of digits to the right of the decimal point?
      Specified by:
      getScale in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      the column's scale
      Throws:
      SQLException - if a database-access error occurs.
    • getTableName

      public String getTableName(int column) throws SQLException
      What's a column's table name?
      Specified by:
      getTableName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      the column's table name or "" if not applicable
      Throws:
      SQLException - if a database-access error occurs.
    • getCatalogName

      public String getCatalogName(int column) throws SQLException
      What's a column's table's catalog name?
      Specified by:
      getCatalogName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      the column's table's catalog name or "" if not applicable.
      Throws:
      SQLException - if a database-access error occurs.
    • getColumnTypeName

      public String getColumnTypeName(int column) throws SQLException
      What's a column's data source specific type name?
      Specified by:
      getColumnTypeName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      the column's type name
      Throws:
      SQLException - if a database-access error occurs.
    • isReadOnly

      public boolean isReadOnly(int column) throws SQLException
      Is a column definitely not writable?
      Specified by:
      isReadOnly in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true - vti's are read only false - column is not read-only
      Throws:
      SQLException - if a database-access error occurs.
    • isWritable

      public boolean isWritable(int column) throws SQLException
      Is it possible for a write on the column to succeed?
      Specified by:
      isWritable in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if column is possibly writable
      Throws:
      SQLException - if a database-access error occurs.
    • isDefinitelyWritable

      public boolean isDefinitelyWritable(int column) throws SQLException
      Will a write on the column definitely succeed?
      Specified by:
      isDefinitelyWritable in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if column is definitely writable
      Throws:
      SQLException - if a database-access error occurs.
    • getColumnClassName

      public String getColumnClassName(int column) throws SQLException
      Returns the fully-qualified name of the Java class whose instances are manufactured if the method ResultSet.getObject is called to retrieve a value from the column. JDBC 2.0.
      Specified by:
      getColumnClassName in interface ResultSetMetaData
      Throws:
      SQLException - if a database-access error occurs
    • notImplemented

      protected SQLException notImplemented(String methodName)

      Create a SQLException saying that the calling method is not implemented.