MockStatement.java

/***************************************************************************
   Copyright 2012 Emily Estes

   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 net.metanotion.sql;


import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.net.URL;
import java.util.Calendar;
import java.util.Map;
import java.sql.Array;
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.Date;
import java.sql.NClob;
import java.sql.ParameterMetaData;
import java.sql.Ref;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.RowId;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Time;
import java.sql.Timestamp;

/** This is a "null" implementation of a JDBC Statement. It's not really meant to be useful
other than as a way to test code with non-null instances of Statement. It would be acceptable
to expand this to a more interesting "mock" implementation of a statement, but it mostly consists
of the bare minimum code to "technically" implement the {@link java.sql.CallableStatement} interface.
*/
@SuppressWarnings("deprecation")
public final class MockStatement implements CallableStatement {
	private static final int FETCH_SIZE = 1000;
	private static final int MAX_FIELD_SIZE = 1000;
	private static final int MAX_ROWS = 1000;
	private static final int TIMEOUT = 30;

	private Connection conn = null;
	/** Create a new fake statement with no connection. */
	public MockStatement() { }

	/** Create a new fake statement for the given connection.
		@param conn The connection this statement is attached to.
	*/
	public MockStatement(final Connection conn) { this.conn = conn; }

	@Override public void addBatch(final String sql) { }
	@Override public void cancel() { }
	@Override public void clearBatch() { }
	@Override public void clearWarnings() { }
	@Override public void close() { }
	@Override public void closeOnCompletion() throws SQLException { }
	@Override public boolean execute(final String sql) { return true; }
	@Override public boolean execute(final String sql, final int autoGeneratedKeys) { return true; }
	@Override public boolean execute(final String sql, final int[] columnIndexes) { return true; }
	@Override public boolean execute(final String sql, final String[] columnNames) { return true; }
	@Override public int[] executeBatch() { return null; }
	@Override public ResultSet executeQuery(final String sql) { return new MockResultSet(this); }
	@Override public int executeUpdate(final String sql) { return 1; }
	@Override public int executeUpdate(final String sql, final int autoGeneratedKeys) { return 1; }
	@Override public int executeUpdate(final String sql, final int[] columnIndexes) { return 1; }
	@Override public int executeUpdate(final String sql, final String[] columnNames) { return 1; }
	@Override public Connection getConnection() { return conn; }
	@Override public int getFetchDirection() { return 0; }
	@Override public int getFetchSize() { return FETCH_SIZE; }
	@Override public ResultSet getGeneratedKeys() { return null; }
	@Override public int getMaxFieldSize() { return MAX_FIELD_SIZE; }
	@Override public int getMaxRows() { return MAX_ROWS; }
	@Override public boolean getMoreResults() { return false; }
	@Override public boolean getMoreResults(final int current) { return false; }
	@Override public int getQueryTimeout() { return TIMEOUT; }
	@Override public ResultSet getResultSet() { return null; }
	@Override public int getResultSetConcurrency() { return ResultSet.CONCUR_READ_ONLY; }
	@Override public int getResultSetHoldability() { return ResultSet.CLOSE_CURSORS_AT_COMMIT; }
	@Override public int getResultSetType() { return ResultSet.TYPE_SCROLL_SENSITIVE; }
	@Override public int getUpdateCount() { return 1; }
	@Override public SQLWarning getWarnings() { return null; }
	@Override public boolean isClosed() { return false; }
	@Override public boolean isCloseOnCompletion() throws SQLException { return false; }
	@Override public boolean isPoolable() { return true; }
	@Override public void setCursorName(String name) { }
	@Override public void setEscapeProcessing(final boolean enable) { }
	@Override public void setFetchDirection(final int direction) { }
	@Override public void setFetchSize(final int rows) { }
	@Override public void setMaxFieldSize(final int max) { }
	@Override public void setMaxRows(final int max) { }
	@Override public void setPoolable(final boolean poolable) { }
	@Override public void setQueryTimeout(final int seconds) { }

	@Override public void addBatch() { }
	@Override public void clearParameters() { }
	@Override public boolean execute() { return true; }
	@Override public ResultSet executeQuery() { return new MockResultSet(this); }
	@Override public int executeUpdate() { return 1; }
	@Override public ResultSetMetaData getMetaData() { return null; }
	@Override public ParameterMetaData getParameterMetaData() { return null; }
	@Override public void setArray(final int parameterIndex, final Array x) { }
	@Override public void setAsciiStream(final int parameterIndex, final InputStream x) { }
	@Override public void setAsciiStream(final int parameterIndex, final InputStream x, final int length) { }
	@Override public void setAsciiStream(final int parameterIndex, final InputStream x, final long length) { }
	@Override public void setBigDecimal(final int parameterIndex, final BigDecimal x) { }
	@Override public void setBinaryStream(final int parameterIndex, final InputStream x) { }
	@Override public void setBinaryStream(final int parameterIndex, final InputStream x, final int length) { }
	@Override public void setBinaryStream(final int parameterIndex, final InputStream x, final long length) { }
	@Override public void setBlob(final int parameterIndex, final Blob x) { }
	@Override public void setBlob(final int parameterIndex, final InputStream inputStream) { }
	@Override public void setBlob(final int parameterIndex, final InputStream inputStream, final long length) { }
	@Override public void setBoolean(final int parameterIndex, final boolean x) { }
	@Override public void setByte(final int parameterIndex, final byte x) { }
	@Override public void setBytes(final int parameterIndex, final byte[] x) { }
	@Override public void setCharacterStream(final int parameterIndex, final Reader reader) { }
	@Override public void setCharacterStream(final int parameterIndex, final Reader reader, final int length) { }
	@Override public void setCharacterStream(final int parameterIndex, final Reader reader, final long length) { }
	@Override public void setClob(final int parameterIndex, final Clob x) { }
	@Override public void setClob(final int parameterIndex, final Reader reader) { }
	@Override public void setClob(final int parameterIndex, final Reader reader, final long length) { }
	@Override public void setDate(final int parameterIndex, final Date x) { }
	@Override public void setDate(final int parameterIndex, final Date x, final Calendar cal) { }
	@Override public void setDouble(final int parameterIndex, final double x) { }
	@Override public void setFloat(final int parameterIndex, final float x) { }
	@Override public void setInt(final int parameterIndex, final int x) { }
	@Override public void setLong(final int parameterIndex, final long x) { }
	@Override public void setNCharacterStream(final int parameterIndex, final Reader value) { }
	@Override public void setNCharacterStream(final int parameterIndex, final Reader value, final long length) { }
	@Override public void setNClob(final int parameterIndex, final NClob value) { }
	@Override public void setNClob(final int parameterIndex, final Reader reader) { }
	@Override public void setNClob(final int parameterIndex, final Reader reader, final long length) { }
	@Override public void setNString(int parameterIndex, String value) { }
	@Override public void setNull(int parameterIndex, int sqlType) { }
	@Override public void setNull(int parameterIndex, int sqlType, String typeName) { }
	@Override public void setObject(int parameterIndex, Object x) { }
	@Override public void setObject(int parameterIndex, Object x, int targetSqlType) { }
	@Override public void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) { }
	@Override public void setRef(int parameterIndex, Ref x) { }
	@Override public void setRowId(int parameterIndex, RowId x) { }
	@Override public void setShort(int parameterIndex, short x) { }
	@Override public void setSQLXML(int parameterIndex, SQLXML xmlObject) { }
	@Override public void setString(int parameterIndex, String x) { }
	@Override public void setTime(int parameterIndex, Time x) { }
	@Override public void setTime(int parameterIndex, Time x, Calendar cal) { }
	@Override public void setTimestamp(int parameterIndex, Timestamp x) { }
	@Override public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) { }
	@Override public void setUnicodeStream(int parameterIndex, InputStream x, int length) { }
	@Override public void setURL(int parameterIndex, URL x) { }

	@Override public Array getArray(int parameterIndex) { return null; }
	@Override public Array getArray(String parameterName) { return null; }
	@Override public BigDecimal getBigDecimal(int parameterIndex) { return null; }
	@Override public BigDecimal getBigDecimal(int parameterIndex, int scale) { return null; }
	@Override public BigDecimal getBigDecimal(String parameterName) { return null; }
	@Override public Blob getBlob(int parameterIndex) { return null; }
	@Override public Blob getBlob(String parameterName) { return null; }
	@Override public boolean getBoolean(int parameterIndex) { return false; }
	@Override public boolean getBoolean(String parameterName) { return false; }
	@Override public byte getByte(int parameterIndex) { return 0; }
	@Override public byte getByte(String parameterName) { return 0; }
	@Override public byte[] getBytes(int parameterIndex) { return null; }
	@Override public byte[] getBytes(String parameterName) { return null; }
	@Override public Reader getCharacterStream(int parameterIndex) { return null; }
	@Override public Reader getCharacterStream(String parameterName) { return null; }
	@Override public Clob getClob(int parameterIndex) { return null; }
	@Override public Clob getClob(String parameterName) { return null; }
	@Override public Date getDate(int parameterIndex) { return null; }
	@Override public Date getDate(int parameterIndex, Calendar cal) { return null; }
	@Override public Date getDate(String parameterName) { return null; }
	@Override public Date getDate(String parameterName, Calendar cal) { return null; }
	@Override public double getDouble(int parameterIndex) { return 0; }
	@Override public double getDouble(String parameterName) { return 0; }
	@Override public float getFloat(int parameterIndex) { return 0; }
	@Override public float getFloat(String parameterName) { return 0; }
	@Override public int getInt(int parameterIndex) { return 0; }
	@Override public int getInt(String parameterName) { return 0; }
	@Override public long getLong(int parameterIndex) { return 0; }
	@Override public long getLong(String parameterName) { return 0; }
	@Override public Reader getNCharacterStream(int parameterIndex) { return null; }
	@Override public Reader getNCharacterStream(String parameterName) { return null; }
	@Override public NClob getNClob(int parameterIndex) { return null; }
	@Override public NClob getNClob(String parameterName) { return null; }
	@Override public String getNString(int parameterIndex) { return null; }
	@Override public String getNString(String parameterName) { return null; }
	@Override public Object getObject(int parameterIndex) { return null; }
	@Override public <T> T getObject(int parameterIndex, Class<T> type) { return null; }
	@Override public Object getObject(int parameterIndex, Map<String,Class<?>> map) { return null; }
	@Override public Object getObject(String parameterName) { return null; }
	@Override public <T> T getObject(String parameterName, Class<T> type) { return null; }
	@Override public Object getObject(String parameterName, Map<String,Class<?>> map) { return null; }
	@Override public Ref getRef(int parameterIndex) { return null; }
	@Override public Ref getRef(String parameterName) { return null; }
	@Override public RowId getRowId(int parameterIndex) { return null; }
	@Override public RowId getRowId(String parameterName) { return null; }
	@Override public short getShort(int parameterIndex) { return 0; }
	@Override public short getShort(String parameterName) { return 0; }
	@Override public SQLXML getSQLXML(int parameterIndex) { return null; }
	@Override public SQLXML getSQLXML(String parameterName) { return null; }
	@Override public String getString(int parameterIndex) { return null; }
	@Override public String getString(String parameterName) { return null; }
	@Override public Time getTime(int parameterIndex) { return null; }
	@Override public Time getTime(int parameterIndex, Calendar cal) { return null; }
	@Override public Time getTime(String parameterName) { return null; }
	@Override public Time getTime(String parameterName, Calendar cal) { return null; }
	@Override public Timestamp getTimestamp(int parameterIndex) { return null; }
	@Override public Timestamp getTimestamp(int parameterIndex, Calendar cal) { return null; }
	@Override public Timestamp getTimestamp(String parameterName) { return null; }
	@Override public Timestamp getTimestamp(String parameterName, Calendar cal) { return null; }
	@Override public URL getURL(int parameterIndex) { return null; }
	@Override public URL getURL(String parameterName) { return null; }
	@Override public void registerOutParameter(int parameterIndex, int sqlType) { }
	@Override public void registerOutParameter(int parameterIndex, int sqlType, int scale) { }
	@Override public void registerOutParameter(int parameterIndex, int sqlType, String typeName) { }
	@Override public void registerOutParameter(String parameterName, int sqlType) { }
	@Override public void registerOutParameter(String parameterName, int sqlType, int scale) { }
	@Override public void registerOutParameter(String parameterName, int sqlType, String typeName) { }
	@Override public void setAsciiStream(String parameterName, InputStream x) { }
	@Override public void setAsciiStream(String parameterName, InputStream x, int length) { }
	@Override public void setAsciiStream(String parameterName, InputStream x, long length) { }
	@Override public void setBigDecimal(String parameterName, BigDecimal x) { }
	@Override public void setBinaryStream(String parameterName, InputStream x) { }
	@Override public void setBinaryStream(String parameterName, InputStream x, int length) { }
	@Override public void setBinaryStream(String parameterName, InputStream x, long length) { }
	@Override public void setBlob(String parameterName, Blob x) { }
	@Override public void setBlob(String parameterName, InputStream inputStream) { }
	@Override public void setBlob(String parameterName, InputStream inputStream, long length) { }
	@Override public void setBoolean(String parameterName, boolean x) { }
	@Override public void setByte(String parameterName, byte x) { }
	@Override public void setBytes(String parameterName, byte[] x) { }
	@Override public void setCharacterStream(String parameterName, Reader reader) { }
	@Override public void setCharacterStream(String parameterName, Reader reader, int length) { }
	@Override public void setCharacterStream(String parameterName, Reader reader, long length) { }
	@Override public void setClob(String parameterName, Clob x) { }
	@Override public void setClob(String parameterName, Reader reader) { }
	@Override public void setClob(String parameterName, Reader reader, long length) { }
	@Override public void setDate(String parameterName, Date x) { }
	@Override public void setDate(String parameterName, Date x, Calendar cal) { }
	@Override public void setDouble(String parameterName, double x) { }
	@Override public void setFloat(String parameterName, float x) { }
	@Override public void setInt(String parameterName, int x) { }
	@Override public void setLong(String parameterName, long x) { }
	@Override public void setNCharacterStream(String parameterName, Reader value) { }
	@Override public void setNCharacterStream(String parameterName, Reader value, long length) { }
	@Override public void setNClob(String parameterName, NClob value) { }
	@Override public void setNClob(String parameterName, Reader reader) { }
	@Override public void setNClob(String parameterName, Reader reader, long length) { }
	@Override public void setNString(String parameterName, String value) { }
	@Override public void setNull(String parameterName, int sqlType) { }
	@Override public void setNull(String parameterName, int sqlType, String typeName) { }
	@Override public void setObject(String parameterName, Object x) { }
	@Override public void setObject(String parameterName, Object x, int targetSqlType) { }
	@Override public void setObject(String parameterName, Object x, int targetSqlType, int scale) { }
	@Override public void setRowId(String parameterName, RowId x) { }
	@Override public void setShort(String parameterName, short x) { }
	@Override public void setSQLXML(String parameterName, SQLXML xmlObject) { }
	@Override public void setString(String parameterName, String x) { }
	@Override public void setTime(String parameterName, Time x) { }
	@Override public void setTime(String parameterName, Time x, Calendar cal) { }
	@Override public void setTimestamp(String parameterName, Timestamp x) { }
	@Override public void setTimestamp(String parameterName, Timestamp x, Calendar cal) { }
	@Override public void setURL(String parameterName, URL val) { }
	@Override public boolean wasNull() { return false; }

	@Override public boolean isWrapperFor(final Class<?> iface) { return false; }
	@Override public <T> T unwrap(final Class<T> iface) throws SQLException { throw new SQLException(); }
}