Package org.apache.derby.vti
Class VTIMetaDataTemplate
- java.lang.Object
-
- org.apache.derby.vti.VTIMetaDataTemplate
-
- All Implemented Interfaces:
java.sql.ResultSetMetaData
,java.sql.Wrapper
- Direct Known Subclasses:
ImportResultSetMetaData
public abstract class VTIMetaDataTemplate extends java.lang.Object implements java.sql.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 Summary
Constructors Constructor Description VTIMetaDataTemplate()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
getCatalogName(int column)
What's a column's table's catalog name?java.lang.String
getColumnClassName(int column)
Returns the fully-qualified name of the Java class whose instances are manufactured if the methodResultSet.getObject
is called to retrieve a value from the column.int
getColumnDisplaySize(int column)
What's the column's normal maximum width in chars?java.lang.String
getColumnLabel(int column)
What's the suggested column title for use in printouts and displays?java.lang.String
getColumnName(int column)
What's a column's name?java.lang.String
getColumnTypeName(int column)
What's a column's data source specific type name?int
getPrecision(int column)
How many decimal digits are in the column?int
getScale(int column)
What's a column's number of digits to the right of the decimal point?java.lang.String
getSchemaName(int column)
What's a column's table's schema?java.lang.String
getTableName(int column)
What's a column's table name?boolean
isAutoIncrement(int column)
Is the column automatically numbered, and thus read-only?boolean
isCaseSensitive(int column)
Does a column's case matter?boolean
isCurrency(int column)
Is the column a cash value?boolean
isDefinitelyWritable(int column)
Will a write on the column definitely succeed?int
isNullable(int column)
Can you put a NULL in this column?boolean
isReadOnly(int column)
Is a column definitely not writable?boolean
isSearchable(int column)
Can the column be used in a WHERE clause?boolean
isSigned(int column)
Is the column a signed number?boolean
isWrapperFor(java.lang.Class<?> iface)
boolean
isWritable(int column)
Is it possible for a write on the column to succeed?protected java.sql.SQLException
notImplemented(java.lang.String methodName)
Create a SQLException saying that the calling method is not implemented.<T> T
unwrap(java.lang.Class<T> iface)
-
-
-
Method Detail
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
- Specified by:
isWrapperFor
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
- Specified by:
unwrap
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
isAutoIncrement
public boolean isAutoIncrement(int column) throws java.sql.SQLException
Is the column automatically numbered, and thus read-only?- Specified by:
isAutoIncrement
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- true if the column is automatically numbered
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
isCaseSensitive
public boolean isCaseSensitive(int column) throws java.sql.SQLException
Does a column's case matter?- Specified by:
isCaseSensitive
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- true if the column is case-sensitive
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
isSearchable
public boolean isSearchable(int column) throws java.sql.SQLException
Can the column be used in a WHERE clause?- Specified by:
isSearchable
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- true if the column is searchable
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
isCurrency
public boolean isCurrency(int column) throws java.sql.SQLException
Is the column a cash value?- Specified by:
isCurrency
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- true if the column is a cash value
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
isNullable
public int isNullable(int column) throws java.sql.SQLException
Can you put a NULL in this column?- Specified by:
isNullable
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- columnNoNulls, columnNullable or columnNullableUnknown
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
isSigned
public boolean isSigned(int column) throws java.sql.SQLException
Is the column a signed number?- Specified by:
isSigned
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- true if the column is a signed number
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getColumnDisplaySize
public int getColumnDisplaySize(int column) throws java.sql.SQLException
What's the column's normal maximum width in chars?- Specified by:
getColumnDisplaySize
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- the column's maximum width
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getColumnLabel
public java.lang.String getColumnLabel(int column) throws java.sql.SQLException
What's the suggested column title for use in printouts and displays?- Specified by:
getColumnLabel
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- the column's title
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getColumnName
public java.lang.String getColumnName(int column) throws java.sql.SQLException
What's a column's name?- Specified by:
getColumnName
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- column name
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getSchemaName
public java.lang.String getSchemaName(int column) throws java.sql.SQLException
What's a column's table's schema?- Specified by:
getSchemaName
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- schema name or "" if not applicable
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getPrecision
public int getPrecision(int column) throws java.sql.SQLException
How many decimal digits are in the column?- Specified by:
getPrecision
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- the column's precision
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getScale
public int getScale(int column) throws java.sql.SQLException
What's a column's number of digits to the right of the decimal point?- Specified by:
getScale
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- the column's scale
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getTableName
public java.lang.String getTableName(int column) throws java.sql.SQLException
What's a column's table name?- Specified by:
getTableName
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- the column's table name or "" if not applicable
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getCatalogName
public java.lang.String getCatalogName(int column) throws java.sql.SQLException
What's a column's table's catalog name?- Specified by:
getCatalogName
in interfacejava.sql.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:
java.sql.SQLException
- if a database-access error occurs.
-
getColumnTypeName
public java.lang.String getColumnTypeName(int column) throws java.sql.SQLException
What's a column's data source specific type name?- Specified by:
getColumnTypeName
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- the column's type name
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
isReadOnly
public boolean isReadOnly(int column) throws java.sql.SQLException
Is a column definitely not writable?- Specified by:
isReadOnly
in interfacejava.sql.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:
java.sql.SQLException
- if a database-access error occurs.
-
isWritable
public boolean isWritable(int column) throws java.sql.SQLException
Is it possible for a write on the column to succeed?- Specified by:
isWritable
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- true if column is possibly writable
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
isDefinitelyWritable
public boolean isDefinitelyWritable(int column) throws java.sql.SQLException
Will a write on the column definitely succeed?- Specified by:
isDefinitelyWritable
in interfacejava.sql.ResultSetMetaData
- Parameters:
column
- the first column is 1, the second is 2, ...- Returns:
- true if column is definitely writable
- Throws:
java.sql.SQLException
- if a database-access error occurs.
-
getColumnClassName
public java.lang.String getColumnClassName(int column) throws java.sql.SQLException
Returns the fully-qualified name of the Java class whose instances are manufactured if the methodResultSet.getObject
is called to retrieve a value from the column. JDBC 2.0.- Specified by:
getColumnClassName
in interfacejava.sql.ResultSetMetaData
- Throws:
java.sql.SQLException
- if a database-access error occurs
-
notImplemented
protected java.sql.SQLException notImplemented(java.lang.String methodName)
Create a SQLException saying that the calling method is not implemented.
-
-