org.modeshape.jdbc.JcrResultSet Maven / Gradle / Ivy
Show all versions of modeshape-jdbc-local
/*
* ModeShape (http://www.modeshape.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.modeshape.jdbc;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Array;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Date;
import java.sql.NClob;
import java.sql.Ref;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.RowId;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.jcr.Binary;
import javax.jcr.ItemNotFoundException;
import javax.jcr.PathNotFoundException;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.ValueFormatException;
import javax.jcr.query.QueryResult;
import javax.jcr.query.Row;
import javax.jcr.query.RowIterator;
import org.modeshape.common.util.IoUtil;
import org.modeshape.jdbc.util.TimestampWithTimezone;
/**
*
*/
public class JcrResultSet implements ResultSet {
private boolean closed;
private JcrStatement statement;
private QueryResult jcrResults;
private ResultSetMetaData metadata;
private RowIterator rowIter;
private Row row;
// the object which was last read from Results
private Object currentValue = null;
private Map columnIndexesByName;
private String[] columnIDs = null;
protected JcrResultSet( JcrStatement statement,
QueryResult jcrResults,
ResultSetMetaData resultSetMetaData ) throws SQLException {
this.statement = statement;
this.jcrResults = jcrResults;
assert this.statement != null;
assert this.jcrResults != null;
if (resultSetMetaData != null) {
this.metadata = resultSetMetaData;
} else {
this.metadata = new JcrResultSetMetaData(this.statement.connection(), this.jcrResults);
}
int index = 1; // not zero-based
int colCnt = this.metadata.getColumnCount();
// add 1 because using 1 based location, not zero based, JDBC spec
columnIDs = new String[colCnt + 1];
columnIndexesByName = new HashMap(colCnt);
while (index <= colCnt) {
String name = this.metadata.getColumnName(index);
columnIndexesByName.put(name, index);
columnIDs[index] = name;
index++;
}
this.columnIndexesByName = Collections.unmodifiableMap(columnIndexesByName);
try {
this.rowIter = this.jcrResults.getRows();
} catch (RepositoryException e) {
throw new SQLException(e.getLocalizedMessage(), e);
}
}
protected JcrResultSet() {
closed = true;
columnIndexesByName = Collections.emptyMap();
}
@Override
public boolean isClosed() {
return closed || statement.isClosed();
}
@Override
public void close() {
if (!closed) {
closed = true;
this.statement.close();
}
}
byte[] convertToByteArray( final Value value ) throws SQLException {
if (value == null) return null;
InputStream is = null;
boolean error = false;
try {
switch (value.getType()) {
case PropertyType.STRING:
case PropertyType.BOOLEAN:
case PropertyType.DOUBLE:
case PropertyType.LONG:
case PropertyType.DATE:
case PropertyType.DECIMAL:
String v = value.getString();
return (v != null ? v.getBytes() : null);
case PropertyType.BINARY:
is = value.getBinary().getStream();
return IoUtil.readBytes(is);
default:
return null;
}
} catch (IOException ioe) {
error = true;
throw new SQLException(ioe.getLocalizedMessage(), ioe);
} catch (IllegalStateException ie) {
error = true;
throw new SQLException(ie.getLocalizedMessage(), ie);
} catch (RepositoryException e) {
error = true;
throw new SQLException(e.getLocalizedMessage(), e);
} finally {
try {
if (is != null) is.close();
} catch (Exception e) {
if (!error) throw new SQLException(e.getLocalizedMessage(), e);
}
}
}
protected final void notClosed() throws SQLException {
if (isClosed()) throw new SQLException(JdbcLocalI18n.resultSetIsClosed.text());
}
protected final void noUpdates() throws SQLException {
throw new SQLFeatureNotSupportedException(JdbcLocalI18n.updatesNotSupported.text());
}
protected final void forwardOnly() throws SQLException {
throw new SQLException(JdbcLocalI18n.resultSetIsForwardOnly.text());
}
protected final void itemNotFoundUsingColunName( String columnName ) throws SQLException {
throw new SQLException(JdbcLocalI18n.noSuchColumn.text(columnName));
}
@Override
public ResultSetMetaData getMetaData() throws SQLException {
notClosed();
return metadata;
}
@Override
public Statement getStatement() throws SQLException {
notClosed();
return statement;
}
/**
* {@inheritDoc}
*
* This driver only supports {@link ResultSet#TYPE_FORWARD_ONLY}.
*
*
* @see java.sql.ResultSet#getType()
*/
@Override
public int getType() throws SQLException {
notClosed();
return ResultSet.TYPE_FORWARD_ONLY;
}
/**
* {@inheritDoc}
*
* This driver only supports {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#getFetchDirection()
*/
@Override
public int getFetchDirection() throws SQLException {
notClosed();
return ResultSet.FETCH_FORWARD;
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, will have no effect on the fetch direction because this driver only
* supports {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#setFetchDirection(int)
*/
@Override
public void setFetchDirection( int direction ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#absolute(int)
*/
@Override
public boolean absolute( int row ) throws SQLException {
notClosed();
forwardOnly();
return false;
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#afterLast()
*/
@Override
public void afterLast() throws SQLException {
notClosed();
forwardOnly();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#beforeFirst()
*/
@Override
public void beforeFirst() throws SQLException {
notClosed();
forwardOnly();
}
@Override
public void cancelRowUpdates() throws SQLException {
notClosed();
noUpdates();
}
@Override
public void clearWarnings() throws SQLException {
notClosed();
}
@Override
public void deleteRow() throws SQLException {
notClosed();
noUpdates();
}
@Override
public int findColumn( String columnLabel ) throws SQLException {
notClosed();
final Integer result = columnLabel != null ? columnIndexesByName.get(columnLabel) : null;
if (result == null) {
this.itemNotFoundUsingColunName(columnLabel);
}
assert result != null;
return result;
}
private String findColumn( int columnIndex ) throws SQLException {
if (columnIndex > 0 && columnIndex < this.columnIDs.length) {
return columnIDs[columnIndex];
}
throw new SQLException(JdbcLocalI18n.invalidColumnIndex.text(new Object[] {columnIndex, this.columnIDs.length}));
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#first()
*/
@Override
public boolean first() throws SQLException {
notClosed();
forwardOnly();
return false;
}
@Override
public int getRow() throws SQLException {
notClosed();
return (int)this.rowIter.getPosition();
}
@Override
public RowId getRowId( final int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public RowId getRowId( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public String getCursorName() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public int getFetchSize() throws SQLException {
notClosed();
return statement.getFetchSize();
}
@Override
public Array getArray( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Array getArray( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public InputStream getAsciiStream( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public InputStream getAsciiStream( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public BigDecimal getBigDecimal( int columnIndex ) throws SQLException {
return getBigDecimal(findColumn(columnIndex));
}
@Override
public BigDecimal getBigDecimal( String columnLabel ) throws SQLException {
Object o = updateCurrentValueFromColumn(columnLabel, PropertyType.DECIMAL);
if (o != null) {
return (BigDecimal)o;
}
return null;
}
@Override
@SuppressWarnings("deprecation")
public BigDecimal getBigDecimal( int columnIndex,
int scale ) throws SQLException {
return getBigDecimal(columnIndex).setScale(scale);
}
@Override
@SuppressWarnings("deprecation")
public BigDecimal getBigDecimal( String columnLabel,
int scale ) throws SQLException {
return getBigDecimal(columnLabel).setScale(scale);
}
@Override
public InputStream getBinaryStream( int columnIndex ) throws SQLException {
return getBinaryStream(findColumn(columnIndex));
}
@Override
public InputStream getBinaryStream( String columnLabel ) throws SQLException {
Object o = updateCurrentValueFromColumn(columnLabel, PropertyType.BINARY);
if (o != null) {
try {
return ((Binary) o).getStream();
} catch (RepositoryException e) {
throw new SQLException(e);
}
}
return null;
}
@Override
public Blob getBlob( int columnIndex ) throws SQLException {
return getBlob(findColumn(columnIndex));
}
@Override
public Blob getBlob( String columnLabel ) throws SQLException {
Object o = updateCurrentValueFromColumn(columnLabel, PropertyType.BINARY);
if (o != null) {
return new JcrBlob((Binary)o);
}
return null;
}
@Override
public boolean getBoolean( int columnIndex ) throws SQLException {
return getBoolean(findColumn(columnIndex));
}
@Override
public boolean getBoolean( String columnLabel ) throws SQLException {
Object o = updateCurrentValueFromColumn(columnLabel, PropertyType.BOOLEAN);
if (o != null) {
return (Boolean)o;
}
return false;
}
@Override
public byte getByte( int columnIndex ) throws SQLException {
return getByte(findColumn(columnIndex));
}
@Override
public byte getByte( String columnLabel ) throws SQLException {
return Long.valueOf(getLong(columnLabel)).byteValue();
}
@Override
public byte[] getBytes( int columnIndex ) throws SQLException {
return getBytes(findColumn(columnIndex));
}
@Override
public byte[] getBytes( String columnLabel ) throws SQLException {
notClosed();
isRowSet();
this.currentValue = null;
try {
Value value = row.getValue(columnLabel);
byte[] rtnbytes = convertToByteArray(value);
this.currentValue = rtnbytes;
return rtnbytes;
} catch (PathNotFoundException pnfe) {
// do nothing, return null
} catch (ItemNotFoundException e) {
itemNotFoundUsingColunName(columnLabel);
} catch (RepositoryException e) {
throw new SQLException(e.getLocalizedMessage(), e);
}
return null;
}
@Override
public Reader getCharacterStream( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Reader getCharacterStream( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Clob getClob( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Clob getClob( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public int getConcurrency() throws SQLException {
notClosed();
return 0;
}
@Override
public Date getDate( int columnIndex ) throws SQLException {
return getDate(findColumn(columnIndex));
}
@Override
public Date getDate( String columnLabel ) throws SQLException {
Calendar calv = (Calendar)updateCurrentValueFromColumn(columnLabel, PropertyType.DATE);
if (calv == null) return null;
return TimestampWithTimezone.createDate(calv);
}
@Override
public Date getDate( int columnIndex,
Calendar cal ) throws SQLException {
return getDate(findColumn(columnIndex), cal);
}
@Override
public Date getDate( String columnLabel,
Calendar cal ) throws SQLException {
Calendar actual = (Calendar)updateCurrentValueFromColumn(columnLabel, PropertyType.DATE);
if (actual == null) return null;
return TimestampWithTimezone.createDate(actual, cal);
}
@Override
public double getDouble( int columnIndex ) throws SQLException {
return getDouble(findColumn(columnIndex));
}
@Override
public double getDouble( String columnLabel ) throws SQLException {
Object o = updateCurrentValueFromColumn(columnLabel, PropertyType.DOUBLE);
if (o != null) {
return (Double)o;
}
return 0;
}
@Override
public float getFloat( int columnIndex ) throws SQLException {
return getFloat(findColumn(columnIndex));
}
@Override
public float getFloat( String columnLabel ) throws SQLException {
return Double.valueOf(getDouble(columnLabel)).floatValue();
}
/**
* {@inheritDoc}
*
* According to 1.6 javadocs, holdability should be set to either {@link ResultSet#CLOSE_CURSORS_AT_COMMIT} or
* {@link ResultSet#HOLD_CURSORS_OVER_COMMIT}. However, JDBC 4.0 spec says the default holdability is implementation defined.
* Therefore, the default value will be 0.
*
* @see java.sql.ResultSet#getHoldability()
*/
@Override
public int getHoldability() throws SQLException {
notClosed();
return 0;
}
@Override
public int getInt( int columnIndex ) throws SQLException {
return getInt(findColumn(columnIndex));
}
@Override
public int getInt( String columnLabel ) throws SQLException {
notClosed();
return (int)getLong(columnLabel);
}
@Override
public long getLong( int columnIndex ) throws SQLException {
return getLong(findColumn(columnIndex));
}
@Override
public long getLong( String columnLabel ) throws SQLException {
Object o = updateCurrentValueFromColumn(columnLabel, PropertyType.LONG);
if (o != null) {
return (Long)o;
}
return 0L;
}
@Override
public Reader getNCharacterStream( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Reader getNCharacterStream( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public NClob getNClob( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public NClob getNClob( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public String getNString( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public String getNString( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Object getObject( int columnIndex ) throws SQLException {
return getObject(findColumn(columnIndex));
}
@Override
public Object getObject( String columnLabel ) throws SQLException {
return getColumnTranslatedToJDBC(columnLabel);
}
@Override
public Object getObject( int columnIndex,
Map> map ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Object getObject( String columnLabel,
Map> map ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
/**
* This method always throws {@link SQLFeatureNotSupportedException}.
*
* Note: This method is part of the JDBC API in JDK 1.7.
*
*
* @param columnIndex
* @param type
* @param the type class
* @return the object
* @throws SQLException
*/
@Override
public T getObject( int columnIndex,
Class type ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
/**
* This method always throws {@link SQLFeatureNotSupportedException}.
*
* Note: This method is part of the JDBC API in JDK 1.7.
*
*
* @param columnLabel
* @param type
* @param the type class
* @return the object
* @throws SQLException
*/
@Override
public T getObject( String columnLabel,
Class type ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Ref getRef( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public Ref getRef( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public SQLXML getSQLXML( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public SQLXML getSQLXML( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public short getShort( int columnIndex ) throws SQLException {
return getShort(findColumn(columnIndex));
}
@Override
public short getShort( String columnLabel ) throws SQLException {
return Long.valueOf(getLong(columnLabel)).shortValue();
}
@Override
public String getString( int columnIndex ) throws SQLException {
return getString(findColumn(columnIndex));
}
@Override
public String getString( String columnLabel ) throws SQLException {
Object o = updateCurrentValueFromColumn(columnLabel, PropertyType.STRING);
if (o != null) {
return (String)o;
}
return null;
}
@Override
public Time getTime( int columnIndex ) throws SQLException {
return getTime(findColumn(columnIndex));
}
@Override
public Time getTime( String columnLabel ) throws SQLException {
Calendar calv = (Calendar)updateCurrentValueFromColumn(columnLabel, PropertyType.DATE);
if (calv == null) return null;
return TimestampWithTimezone.createTime(calv);
}
@Override
public Time getTime( int columnIndex,
Calendar cal ) throws SQLException {
return getTime(findColumn(columnIndex), cal);
}
@Override
public Time getTime( String columnLabel,
Calendar cal ) throws SQLException {
Calendar actual = (Calendar)updateCurrentValueFromColumn(columnLabel, PropertyType.DATE);
if (actual == null) return null;
// if cal is null, it will be supplied in TimestampWithTimezone
return TimestampWithTimezone.createTime(actual, cal);
}
@Override
public Timestamp getTimestamp( int columnIndex ) throws SQLException {
return getTimestamp(findColumn(columnIndex));
}
@Override
public Timestamp getTimestamp( String columnLabel ) throws SQLException {
Calendar calv = (Calendar)updateCurrentValueFromColumn(columnLabel, PropertyType.DATE);
if (calv == null) return null;
return TimestampWithTimezone.createTimestamp(calv);
}
@Override
public Timestamp getTimestamp( int columnIndex,
Calendar cal ) throws SQLException {
return getTimestamp(findColumn(columnIndex), cal);
}
@Override
public Timestamp getTimestamp( String columnLabel,
Calendar cal ) throws SQLException {
Calendar actual = (Calendar)updateCurrentValueFromColumn(columnLabel, PropertyType.DATE);
if (actual == null) return null;
// if cal is null, it will be supplied in TimestampWithTimezone
return TimestampWithTimezone.createTimestamp(actual, cal);
}
@Override
public URL getURL( int columnIndex ) throws SQLException {
return getURL(findColumn(columnIndex));
}
@Override
public URL getURL( String columnLabel ) throws SQLException {
try {
return new URL(getString(columnLabel));
} catch (MalformedURLException e) {
throw new SQLException(e);
}
}
@Override
@SuppressWarnings("deprecation")
public InputStream getUnicodeStream( int columnIndex ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
@SuppressWarnings("deprecation")
public InputStream getUnicodeStream( String columnLabel ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
public Value getValue( int columnIndex ) throws SQLException {
return getValue(findColumn(columnIndex));
}
public Value getValue( String columnLabel ) throws SQLException {
notClosed();
isRowSet();
try {
return row.getValue(columnLabel);
} catch (PathNotFoundException pnfe) {
return null;
} catch (RepositoryException e) {
throw new SQLException(e.getLocalizedMessage(), e);
}
}
private Object updateCurrentValueFromColumn( String columnName,
int asType ) throws SQLException {
notClosed();
isRowSet();
this.currentValue = null;
try {
final Value jcrValue = row.getValue(columnName);
this.currentValue = extractValue(jcrValue, asType);
} catch (PathNotFoundException pnfe) {
// do nothing
} catch (ItemNotFoundException e) {
itemNotFoundUsingColunName(columnName);
} catch (RepositoryException e) {
throw new SQLException(e.getLocalizedMessage(), e);
}
return this.currentValue;
}
private Object extractValue( Value jcrValue,
int asType ) throws SQLException {
if (jcrValue == null) {
return null;
}
try {
switch (asType) {
case PropertyType.STRING: {
return jcrValue.getString();
}
case PropertyType.BOOLEAN: {
return jcrValue.getBoolean();
}
case PropertyType.DATE: {
return jcrValue.getDate();
}
case PropertyType.DOUBLE: {
return jcrValue.getDouble();
}
case PropertyType.LONG: {
return jcrValue.getLong();
}
case PropertyType.DECIMAL: {
return jcrValue.getDecimal();
}
case PropertyType.BINARY: {
if (jcrValue.getType() != PropertyType.BINARY) {
throw new SQLException(JdbcLocalI18n.cannotConvertJcrValue.text(PropertyType.nameFromValue(jcrValue.getType()),
PropertyType.TYPENAME_BINARY));
}
return jcrValue.getBinary();
}
default: {
return jcrValue.getString();
}
}
} catch (ValueFormatException ve) {
throw new SQLException(JdbcLocalI18n.cannotConvertJcrValue.text(PropertyType.nameFromValue(jcrValue.getType()),
PropertyType.nameFromValue(asType)), ve);
} catch (IllegalArgumentException ie) {
throw new SQLException(JdbcLocalI18n.cannotConvertJcrValue.text(PropertyType.nameFromValue(jcrValue.getType()),
PropertyType.nameFromValue(asType)), ie);
} catch (RepositoryException e) {
throw new SQLException(e);
}
}
/**
* This method transforms a {@link Value} into a JDBC type based on {@link JcrType} mappings
*
* @param columnName
* @return Object
* @throws SQLException
*/
private Object getColumnTranslatedToJDBC( String columnName ) throws SQLException {
notClosed();
isRowSet();
Value value = null;
this.currentValue = null;
try {
value = row.getValue(columnName);
} catch (javax.jcr.PathNotFoundException pnf) {
// do nothing
} catch (RepositoryException e) {
throw new SQLException(e.getLocalizedMessage(), e);
}
if (value == null) return null;
this.currentValue = JcrType.translateValueToJDBC(value);
return this.currentValue;
}
@Override
public SQLWarning getWarnings() /*throws SQLException*/{
return null;
}
protected boolean hasNext() {
return rowIter.hasNext();
}
@Override
public void insertRow() throws SQLException {
this.notClosed();
this.noUpdates();
}
@Override
public boolean isAfterLast() throws SQLException {
this.notClosed();
if (this.row == null && !this.rowIter.hasNext() && this.rowIter.getPosition() == this.rowIter.getSize()) {
return true;
}
return false;
}
@Override
public boolean isBeforeFirst() throws SQLException {
this.notClosed();
if (this.rowIter.getPosition() == 0) {
return true;
}
return false;
}
@Override
public boolean isFirst() throws SQLException {
this.notClosed();
if (this.rowIter.getPosition() == 1) {
return true;
}
return false;
}
@Override
public boolean isLast() throws SQLException {
this.notClosed();
if (this.row != null && !this.rowIter.hasNext() && this.rowIter.getPosition() == this.rowIter.getSize()) {
return true;
}
return false;
}
protected final void isRowSet() throws SQLException {
if (this.row != null) return;
throw new SQLException(JdbcLocalI18n.currentRowNotSet.text());
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#last()
*/
@Override
public boolean last() throws SQLException {
notClosed();
forwardOnly();
return false;
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#moveToCurrentRow()
*/
@Override
public void moveToCurrentRow() throws SQLException {
notClosed();
forwardOnly();
}
@Override
public void moveToInsertRow() throws SQLException {
this.noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when cursor position is after the last row, will return false
*
*
* @see java.sql.ResultSet#next()
*/
@Override
public boolean next() throws SQLException {
notClosed();
if (!this.hasNext()) {
this.row = null;
this.currentValue = null;
return false;
}
this.row = rowIter.nextRow();
return true;
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#previous()
*/
@Override
public boolean previous() throws SQLException {
notClosed();
this.forwardOnly();
return false;
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#refreshRow()
*/
@Override
public void refreshRow() throws SQLException {
notClosed();
this.forwardOnly();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLException} because this driver only supports
* {@link ResultSet#FETCH_FORWARD}.
*
*
* @see java.sql.ResultSet#relative(int)
*/
@Override
public boolean relative( int rows ) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
/**
* {@inheritDoc}
*
* This method always returns false since this JDBC driver does not support any updates.
*
*
* @see java.sql.ResultSet#rowDeleted()
*/
@Override
public boolean rowDeleted() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
/**
* {@inheritDoc}
*
* This method always returns false since this JDBC driver does not support any updates.
*
*
* @see java.sql.ResultSet#rowInserted()
*/
@Override
public boolean rowInserted() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
/**
* {@inheritDoc}
*
* This method always returns false since this JDBC driver does not support any updates.
*
*
* @see java.sql.ResultSet#rowUpdated()
*/
@Override
public boolean rowUpdated() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public void setFetchSize( int rows ) /*throws SQLException*/{
// does nothing
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateArray(int, java.sql.Array)
*/
@Override
public void updateArray( int columnIndex,
Array x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateArray(java.lang.String, java.sql.Array)
*/
@Override
public void updateArray( String columnLabel,
Array x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateAsciiStream(int, java.io.InputStream)
*/
@Override
public void updateAsciiStream( int columnIndex,
InputStream x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateAsciiStream(java.lang.String, java.io.InputStream)
*/
@Override
public void updateAsciiStream( String columnLabel,
InputStream x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateAsciiStream(int, java.io.InputStream, int)
*/
@Override
public void updateAsciiStream( int columnIndex,
InputStream x,
int length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateAsciiStream(java.lang.String, java.io.InputStream, int)
*/
@Override
public void updateAsciiStream( String columnLabel,
InputStream x,
int length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateAsciiStream(int, java.io.InputStream, long)
*/
@Override
public void updateAsciiStream( int columnIndex,
InputStream x,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateAsciiStream(java.lang.String, java.io.InputStream, long)
*/
@Override
public void updateAsciiStream( String columnLabel,
InputStream x,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBigDecimal(int, java.math.BigDecimal)
*/
@Override
public void updateBigDecimal( int columnIndex,
BigDecimal x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBigDecimal(java.lang.String, java.math.BigDecimal)
*/
@Override
public void updateBigDecimal( String columnLabel,
BigDecimal x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBinaryStream(int, java.io.InputStream)
*/
@Override
public void updateBinaryStream( int columnIndex,
InputStream x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBinaryStream(java.lang.String, java.io.InputStream)
*/
@Override
public void updateBinaryStream( String columnLabel,
InputStream x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBinaryStream(int, java.io.InputStream, int)
*/
@Override
public void updateBinaryStream( int columnIndex,
InputStream x,
int length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBinaryStream(java.lang.String, java.io.InputStream, int)
*/
@Override
public void updateBinaryStream( String columnLabel,
InputStream x,
int length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBinaryStream(int, java.io.InputStream, long)
*/
@Override
public void updateBinaryStream( int columnIndex,
InputStream x,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBinaryStream(java.lang.String, java.io.InputStream, long)
*/
@Override
public void updateBinaryStream( String columnLabel,
InputStream x,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBlob(int, java.sql.Blob)
*/
@Override
public void updateBlob( int columnIndex,
Blob x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBlob(java.lang.String, java.sql.Blob)
*/
@Override
public void updateBlob( String columnLabel,
Blob x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBlob(int, java.io.InputStream)
*/
@Override
public void updateBlob( int columnIndex,
InputStream inputStream ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBlob(java.lang.String, java.io.InputStream)
*/
@Override
public void updateBlob( String columnLabel,
InputStream inputStream ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBlob(int, java.io.InputStream, long)
*/
@Override
public void updateBlob( int columnIndex,
InputStream inputStream,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBlob(java.lang.String, java.io.InputStream, long)
*/
@Override
public void updateBlob( String columnLabel,
InputStream inputStream,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBoolean(int, boolean)
*/
@Override
public void updateBoolean( int columnIndex,
boolean x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBoolean(java.lang.String, boolean)
*/
@Override
public void updateBoolean( String columnLabel,
boolean x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateByte(int, byte)
*/
@Override
public void updateByte( int columnIndex,
byte x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateByte(java.lang.String, byte)
*/
@Override
public void updateByte( String columnLabel,
byte x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBytes(int, byte[])
*/
@Override
public void updateBytes( int columnIndex,
byte[] x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateBytes(java.lang.String, byte[])
*/
@Override
public void updateBytes( String columnLabel,
byte[] x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateCharacterStream(int, java.io.Reader)
*/
@Override
public void updateCharacterStream( int columnIndex,
Reader x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateCharacterStream(java.lang.String, java.io.Reader)
*/
@Override
public void updateCharacterStream( String columnLabel,
Reader reader ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateCharacterStream(int, java.io.Reader, int)
*/
@Override
public void updateCharacterStream( int columnIndex,
Reader x,
int length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateCharacterStream(java.lang.String, java.io.Reader, int)
*/
@Override
public void updateCharacterStream( String columnLabel,
Reader reader,
int length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateCharacterStream(int, java.io.Reader, long)
*/
@Override
public void updateCharacterStream( int columnIndex,
Reader x,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateCharacterStream(java.lang.String, java.io.Reader, long)
*/
@Override
public void updateCharacterStream( String columnLabel,
Reader reader,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateClob(int, java.sql.Clob)
*/
@Override
public void updateClob( int columnIndex,
Clob x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateClob(java.lang.String, java.sql.Clob)
*/
@Override
public void updateClob( String columnLabel,
Clob x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateClob(int, java.io.Reader)
*/
@Override
public void updateClob( int columnIndex,
Reader reader ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateClob(java.lang.String, java.io.Reader)
*/
@Override
public void updateClob( String columnLabel,
Reader reader ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateClob(int, java.io.Reader, long)
*/
@Override
public void updateClob( int columnIndex,
Reader reader,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateClob(java.lang.String, java.io.Reader, long)
*/
@Override
public void updateClob( String columnLabel,
Reader reader,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateDate(int, java.sql.Date)
*/
@Override
public void updateDate( int columnIndex,
Date x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateDate(java.lang.String, java.sql.Date)
*/
@Override
public void updateDate( String columnLabel,
Date x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateDouble(int, double)
*/
@Override
public void updateDouble( int columnIndex,
double x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateDouble(java.lang.String, double)
*/
@Override
public void updateDouble( String columnLabel,
double x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateFloat(int, float)
*/
@Override
public void updateFloat( int columnIndex,
float x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateFloat(java.lang.String, float)
*/
@Override
public void updateFloat( String columnLabel,
float x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateInt(int, int)
*/
@Override
public void updateInt( int columnIndex,
int x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateInt(java.lang.String, int)
*/
@Override
public void updateInt( String columnLabel,
int x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateLong(int, long)
*/
@Override
public void updateLong( int columnIndex,
long x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateLong(java.lang.String, long)
*/
@Override
public void updateLong( String columnLabel,
long x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNCharacterStream(int, java.io.Reader)
*/
@Override
public void updateNCharacterStream( int columnIndex,
Reader x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNCharacterStream(java.lang.String, java.io.Reader)
*/
@Override
public void updateNCharacterStream( String columnLabel,
Reader reader ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNCharacterStream(int, java.io.Reader, long)
*/
@Override
public void updateNCharacterStream( int columnIndex,
Reader x,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNCharacterStream(java.lang.String, java.io.Reader, long)
*/
@Override
public void updateNCharacterStream( String columnLabel,
Reader reader,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNClob(int, java.sql.NClob)
*/
@Override
public void updateNClob( int columnIndex,
NClob clob ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNClob(java.lang.String, java.sql.NClob)
*/
@Override
public void updateNClob( String columnLabel,
NClob clob ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNClob(int, java.io.Reader)
*/
@Override
public void updateNClob( int columnIndex,
Reader reader ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNClob(java.lang.String, java.io.Reader)
*/
@Override
public void updateNClob( String columnLabel,
Reader reader ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNClob(int, java.io.Reader, long)
*/
@Override
public void updateNClob( int columnIndex,
Reader reader,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNClob(java.lang.String, java.io.Reader, long)
*/
@Override
public void updateNClob( String columnLabel,
Reader reader,
long length ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNString(int, java.lang.String)
*/
@Override
public void updateNString( int columnIndex,
String string ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNString(java.lang.String, java.lang.String)
*/
@Override
public void updateNString( String columnLabel,
String string ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNull(int)
*/
@Override
public void updateNull( int columnIndex ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateNull(java.lang.String)
*/
@Override
public void updateNull( String columnLabel ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateObject(int, java.lang.Object)
*/
@Override
public void updateObject( int columnIndex,
Object x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateObject(java.lang.String, java.lang.Object)
*/
@Override
public void updateObject( String columnLabel,
Object x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateObject(int, java.lang.Object, int)
*/
@Override
public void updateObject( int columnIndex,
Object x,
int scaleOrLength ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateObject(java.lang.String, java.lang.Object, int)
*/
@Override
public void updateObject( String columnLabel,
Object x,
int scaleOrLength ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateRef(int, java.sql.Ref)
*/
@Override
public void updateRef( int columnIndex,
Ref x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateRef(java.lang.String, java.sql.Ref)
*/
@Override
public void updateRef( String columnLabel,
Ref x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateRow()
*/
@Override
public void updateRow() throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateRowId(int, java.sql.RowId)
*/
@Override
public void updateRowId( int columnIndex,
RowId x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateRowId(java.lang.String, java.sql.RowId)
*/
@Override
public void updateRowId( String columnLabel,
RowId x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateSQLXML(int, java.sql.SQLXML)
*/
@Override
public void updateSQLXML( int columnIndex,
SQLXML xmlObject ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateSQLXML(java.lang.String, java.sql.SQLXML)
*/
@Override
public void updateSQLXML( String columnLabel,
SQLXML xmlObject ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateShort(int, short)
*/
@Override
public void updateShort( int columnIndex,
short x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateShort(java.lang.String, short)
*/
@Override
public void updateShort( String columnLabel,
short x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateString(int, java.lang.String)
*/
@Override
public void updateString( int columnIndex,
String x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateString(java.lang.String, java.lang.String)
*/
@Override
public void updateString( String columnLabel,
String x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateTime(int, java.sql.Time)
*/
@Override
public void updateTime( int columnIndex,
Time x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateTime(java.lang.String, java.sql.Time)
*/
@Override
public void updateTime( String columnLabel,
Time x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateTimestamp(int, java.sql.Timestamp)
*/
@Override
public void updateTimestamp( int columnIndex,
Timestamp x ) throws SQLException {
notClosed();
noUpdates();
}
/**
* {@inheritDoc}
*
* This method, when called on an open result set, always throws {@link SQLFeatureNotSupportedException} since this JDBC
* driver does not support any updates.
*
*
* @see java.sql.ResultSet#updateTimestamp(java.lang.String, java.sql.Timestamp)
*/
@Override
public void updateTimestamp( String columnLabel,
Timestamp x ) throws SQLException {
notClosed();
noUpdates();
}
@Override
public boolean wasNull() throws SQLException {
notClosed();
return currentValue == null;
}
@Override
public boolean isWrapperFor( Class> iface ) {
return iface.isInstance(this);
}
@Override
public T unwrap( Class iface ) throws SQLException {
if (iface.isInstance(this)) {
return iface.cast(this);
}
throw new SQLException(JdbcLocalI18n.classDoesNotImplementInterface.text());
}
}