public abstract class StringColumnVTI extends VTITemplate
This is an abstract table function which assumes that all columns are strings and which coerces the strings to reasonable values for various getXXX() methods. Subclasses must implement the following ResultSet methods:
and the following protected method introduced by this class:
VTITemplate.ColumnDescriptor
Modifier and Type | Field and Description |
---|---|
private java.lang.String[] |
_columnNames |
private boolean |
_lastColumnWasNull |
Constructor and Description |
---|
StringColumnVTI(java.lang.String[] columnNames)
Build a StringColumnVTI with the given column names
|
Modifier and Type | Method and Description |
---|---|
private void |
checkNull(java.lang.String columnValue)
Set the wasNull flag based on whether this column value turned out to be null.
|
int |
findColumn(java.lang.String columnName) |
java.io.InputStream |
getAsciiStream(int columnIndex) |
java.math.BigDecimal |
getBigDecimal(int columnIndex) |
java.io.InputStream |
getBinaryStream(int columnIndex) |
java.sql.Blob |
getBlob(int columnIndex) |
boolean |
getBoolean(int columnIndex) |
byte |
getByte(int columnIndex) |
byte[] |
getBytes(int columnIndex) |
java.sql.Clob |
getClob(int columnIndex) |
int |
getColumnCount()
Get the number of columns.
|
java.lang.String |
getColumnName(int columnNumber)
Get name of a column (1-based indexing).
|
java.sql.Date |
getDate(int columnIndex) |
double |
getDouble(int columnIndex) |
private java.io.InputStream |
getEncodedStream(java.lang.String columnValue,
java.lang.String encoding)
Turn a string into an appropriately encoded ByteArrayInputStream.
|
float |
getFloat(int columnIndex) |
int |
getInt(int columnIndex) |
long |
getLong(int columnIndex) |
protected abstract java.lang.String |
getRawColumn(int columnNumber)
Get the string value of the column in the current row identified by the 1-based columnNumber.
|
short |
getShort(int columnIndex) |
java.lang.String |
getString(int columnIndex) |
java.sql.Time |
getTime(int columnIndex) |
java.sql.Timestamp |
getTimestamp(int columnIndex) |
private java.sql.SQLException |
makeSQLException(java.lang.String sqlstate,
java.lang.Object... args)
Construct a SQLException from a SQLState and args.
|
private long |
parseDateTime(java.lang.String columnValue)
Translate a date/time expression into the corresponding long number of
milliseconds.
|
void |
setColumnNames(java.lang.String[] columnNames)
Set the column names for this table function.
|
boolean |
wasNull() |
private java.sql.SQLException |
wrap(java.lang.Throwable t)
Wrap an exception in a SQLException.
|
absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, deleteRow, first, getArray, getArray, getAsciiStream, getBigDecimal, getBigDecimal, getBigDecimal, getBinaryStream, getBlob, getBoolean, getByte, getBytes, getCharacterStream, getCharacterStream, getClob, getConcurrency, getContext, getCursorName, getDate, getDate, getDate, getDouble, getFetchDirection, getFetchSize, getFloat, getHoldability, getInt, getLong, getMetaData, getNCharacterStream, getNCharacterStream, getNClob, getNClob, getNString, getNString, getObject, getObject, getObject, getObject, getObject, getObject, getRef, getRef, getReturnTableSignature, getRow, getRowId, getRowId, getShort, getSQLXML, getSQLXML, getStatement, getString, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isClosed, isFirst, isLast, isWrapperFor, last, moveToCurrentRow, moveToInsertRow, notImplemented, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setContext, setFetchDirection, setFetchSize, unwrap, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateClob, updateClob, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNString, updateNString, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp
private java.lang.String[] _columnNames
private boolean _lastColumnWasNull
public StringColumnVTI(java.lang.String[] columnNames)
Build a StringColumnVTI with the given column names
protected abstract java.lang.String getRawColumn(int columnNumber) throws java.sql.SQLException
Get the string value of the column in the current row identified by the 1-based columnNumber.
java.sql.SQLException
public void setColumnNames(java.lang.String[] columnNames) throws java.sql.SQLException
Set the column names for this table function. This is useful for AwareVTIs, which need to figure out their column names after analyzing their execution context. Throws an exception if the column names have already been set.
java.sql.SQLException
public int getColumnCount()
Get the number of columns.
public java.lang.String getColumnName(int columnNumber)
Get name of a column (1-based indexing).
public boolean wasNull() throws java.sql.SQLException
wasNull
in interface java.sql.ResultSet
wasNull
in class VTITemplate
java.sql.SQLException
public int findColumn(java.lang.String columnName) throws java.sql.SQLException
findColumn
in interface java.sql.ResultSet
findColumn
in class VTITemplate
java.sql.SQLException
public java.lang.String getString(int columnIndex) throws java.sql.SQLException
getString
in interface java.sql.ResultSet
getString
in class VTITemplate
java.sql.SQLException
public boolean getBoolean(int columnIndex) throws java.sql.SQLException
getBoolean
in interface java.sql.ResultSet
getBoolean
in class VTITemplate
java.sql.SQLException
public byte getByte(int columnIndex) throws java.sql.SQLException
getByte
in interface java.sql.ResultSet
getByte
in class VTITemplate
java.sql.SQLException
public short getShort(int columnIndex) throws java.sql.SQLException
getShort
in interface java.sql.ResultSet
getShort
in class VTITemplate
java.sql.SQLException
public int getInt(int columnIndex) throws java.sql.SQLException
getInt
in interface java.sql.ResultSet
getInt
in class VTITemplate
java.sql.SQLException
public long getLong(int columnIndex) throws java.sql.SQLException
getLong
in interface java.sql.ResultSet
getLong
in class VTITemplate
java.sql.SQLException
public float getFloat(int columnIndex) throws java.sql.SQLException
getFloat
in interface java.sql.ResultSet
getFloat
in class VTITemplate
java.sql.SQLException
public double getDouble(int columnIndex) throws java.sql.SQLException
getDouble
in interface java.sql.ResultSet
getDouble
in class VTITemplate
java.sql.SQLException
public java.math.BigDecimal getBigDecimal(int columnIndex) throws java.sql.SQLException
getBigDecimal
in interface java.sql.ResultSet
getBigDecimal
in class VTITemplate
java.sql.SQLException
public byte[] getBytes(int columnIndex) throws java.sql.SQLException
getBytes
in interface java.sql.ResultSet
getBytes
in class VTITemplate
java.sql.SQLException
public java.sql.Date getDate(int columnIndex) throws java.sql.SQLException
getDate
in interface java.sql.ResultSet
getDate
in class VTITemplate
java.sql.SQLException
public java.sql.Time getTime(int columnIndex) throws java.sql.SQLException
getTime
in interface java.sql.ResultSet
getTime
in class VTITemplate
java.sql.SQLException
public java.sql.Timestamp getTimestamp(int columnIndex) throws java.sql.SQLException
getTimestamp
in interface java.sql.ResultSet
getTimestamp
in class VTITemplate
java.sql.SQLException
public java.io.InputStream getAsciiStream(int columnIndex) throws java.sql.SQLException
getAsciiStream
in interface java.sql.ResultSet
getAsciiStream
in class VTITemplate
java.sql.SQLException
public java.io.InputStream getBinaryStream(int columnIndex) throws java.sql.SQLException
getBinaryStream
in interface java.sql.ResultSet
getBinaryStream
in class VTITemplate
java.sql.SQLException
public java.sql.Blob getBlob(int columnIndex) throws java.sql.SQLException
getBlob
in interface java.sql.ResultSet
getBlob
in class VTITemplate
java.sql.SQLException
public java.sql.Clob getClob(int columnIndex) throws java.sql.SQLException
getClob
in interface java.sql.ResultSet
getClob
in class VTITemplate
java.sql.SQLException
private void checkNull(java.lang.String columnValue)
Set the wasNull flag based on whether this column value turned out to be null.
private java.sql.SQLException wrap(java.lang.Throwable t)
Wrap an exception in a SQLException.
private long parseDateTime(java.lang.String columnValue) throws java.sql.SQLException
Translate a date/time expression into the corresponding long number of milliseconds.
java.sql.SQLException
private java.io.InputStream getEncodedStream(java.lang.String columnValue, java.lang.String encoding) throws java.sql.SQLException
Turn a string into an appropriately encoded ByteArrayInputStream.
java.sql.SQLException
private java.sql.SQLException makeSQLException(java.lang.String sqlstate, java.lang.Object... args)
Construct a SQLException from a SQLState and args.
Apache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.