Package org.firebirdsql.jdbc
Class AbstractFieldMetaData
- java.lang.Object
-
- org.firebirdsql.jdbc.AbstractFieldMetaData
-
- All Implemented Interfaces:
java.sql.Wrapper
- Direct Known Subclasses:
FBParameterMetaData
,FBResultSetMetaData
public abstract class AbstractFieldMetaData extends java.lang.Object implements java.sql.Wrapper
Base class forFBResultSetMetaData
andFBParameterMetaData
for methods common to both implementations.- Since:
- 3.0
- Author:
- David Jencks, Nickolay Samofatov, Mark Rotteveel
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
AbstractFieldMetaData.ExtendedFieldInfo
This class is an old-fashion data structure that stores additional information about fields in a database.protected static class
AbstractFieldMetaData.FieldKey
This class should be used as a composite key in an internal field mapping structures.
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractFieldMetaData(RowDescriptor rowDescriptor, FBConnection connection)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected int
estimateFixedPrecision(int fieldIndex)
protected abstract java.util.Map<AbstractFieldMetaData.FieldKey,AbstractFieldMetaData.ExtendedFieldInfo>
getExtendedFieldInfo(FBConnection connection)
This method retrieves extended information from the system tables in a database.protected AbstractFieldMetaData.ExtendedFieldInfo
getExtFieldInfo(int columnIndex)
protected java.lang.String
getFieldClassName(int field)
protected int
getFieldCount()
Retrieves the number of fields in the object for which thisAbstractFieldMetaData
object contains information.protected FieldDescriptor
getFieldDescriptor(int fieldIndex)
TheFieldDescriptor
of the field with indexfieldIndex
.protected int
getFieldType(int field)
protected java.lang.String
getFieldTypeName(int field)
protected int
getPrecisionInternal(int field)
Retrieves the designated parameter's specified column size.protected RowDescriptor
getRowDescriptor()
protected int
getScaleInternal(int field)
Retrieves the designated field's number of digits to right of the decimal point.protected boolean
isSignedInternal(int field)
Retrieves whether values for the designated field can be signed numbers.boolean
isWrapperFor(java.lang.Class<?> iface)
<T> T
unwrap(java.lang.Class<T> iface)
-
-
-
Constructor Detail
-
AbstractFieldMetaData
protected AbstractFieldMetaData(RowDescriptor rowDescriptor, FBConnection connection)
-
-
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
-
getRowDescriptor
protected final RowDescriptor getRowDescriptor()
- Returns:
- The row descriptor.
-
getFieldCount
protected final int getFieldCount()
Retrieves the number of fields in the object for which thisAbstractFieldMetaData
object contains information.- Returns:
- the number of fields
-
getFieldDescriptor
protected final FieldDescriptor getFieldDescriptor(int fieldIndex)
TheFieldDescriptor
of the field with indexfieldIndex
.- Parameters:
fieldIndex
- 1-based index of a field in this metadata object- Returns:
- field descriptor
-
isSignedInternal
protected final boolean isSignedInternal(int field)
Retrieves whether values for the designated field can be signed numbers.- Parameters:
field
- the first field is 1, the second is 2, ...- Returns:
true
if so;false
otherwise
-
getScaleInternal
protected final int getScaleInternal(int field)
Retrieves the designated field's number of digits to right of the decimal point. 0 is returned for data types where the scale is not applicable.- Parameters:
field
- the first field is 1, the second is 2, ...- Returns:
- scale
-
getFieldClassName
protected final java.lang.String getFieldClassName(int field) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
getFieldTypeName
protected final java.lang.String getFieldTypeName(int field)
-
getFieldType
protected int getFieldType(int field)
-
getPrecisionInternal
protected final int getPrecisionInternal(int field) throws java.sql.SQLException
Retrieves the designated parameter's specified column size.The returned value represents the maximum column size for the given parameter. For numeric data, this is the maximum precision. For character data, this is the length in characters. For datetime datatypes, this is the length in characters of the String representation (assuming the maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, this is the length in bytes. 0 is returned for data types where the column size is not applicable.
- Parameters:
field
- the first field is 1, the second is 2, ...- Returns:
- precision
- Throws:
java.sql.SQLException
- if a database access error occurs
-
estimateFixedPrecision
protected final int estimateFixedPrecision(int fieldIndex)
-
getExtFieldInfo
protected final AbstractFieldMetaData.ExtendedFieldInfo getExtFieldInfo(int columnIndex) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
getExtendedFieldInfo
protected abstract java.util.Map<AbstractFieldMetaData.FieldKey,AbstractFieldMetaData.ExtendedFieldInfo> getExtendedFieldInfo(FBConnection connection) throws java.sql.SQLException
This method retrieves extended information from the system tables in a database. Since this method is expensive, use it with care.- Returns:
- mapping between
AbstractFieldMetaData.FieldKey
instances andAbstractFieldMetaData.ExtendedFieldInfo
instances, or an empty Map if the metadata implementation does not support extended info. - Throws:
java.sql.SQLException
- if a database error occurs while obtaining extended field information.
-
-