All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cubrid.jdbc.driver.CUBRIDCallableStatement Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2008 Search Solution Corporation. All rights reserved by Search Solution. 
 *
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met: 
 *
 * - Redistributions of source code must retain the above copyright notice, 
 *   this list of conditions and the following disclaimer. 
 *
 * - Redistributions in binary form must reproduce the above copyright notice, 
 *   this list of conditions and the following disclaimer in the documentation 
 *   and/or other materials provided with the distribution. 
 *
 * - Neither the name of the  nor the names of its contributors 
 *   may be used to endorse or promote products derived from this software without 
 *   specific prior written permission. 
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
 * OF SUCH DAMAGE. 
 *
 */

package cubrid.jdbc.driver;

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

import cubrid.jdbc.jci.UErrorCode;
import cubrid.jdbc.jci.UStatement;

public class CUBRIDCallableStatement extends CUBRIDPreparedStatement implements
		CallableStatement {
	private boolean was_null;

	protected CUBRIDCallableStatement(CUBRIDConnection c, UStatement us) {
		super(c, us, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
				ResultSet.CLOSE_CURSORS_AT_COMMIT, Statement.NO_GENERATED_KEYS);
	}

	/*
	 * java.sql.CallableStatement interface
	 */

	public boolean wasNull() throws SQLException {
		checkIsOpen();
		return was_null;
	}

	public int getInt(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		int value;
		synchronized (u_stmt) {
			value = u_stmt.getInt(index);
			error = u_stmt.getRecentError();
		}

		checkGetXXXError();
		return value;
	}

	public String getString(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		Object obj;
		synchronized (u_stmt) {
			obj = u_stmt.getObject(index);
			error = u_stmt.getRecentError();
		}
		if (obj != null && obj instanceof Clob) {
			Clob clob = (Clob) obj;
			int length;
			if (clob.length() > (long) Integer.MAX_VALUE) {
				length = Integer.MAX_VALUE;
			} else {
				length = (int) clob.length();
			}
			return clob.getSubString(1, length);
		}

		String value;
		synchronized (u_stmt) {
			value = u_stmt.getString(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public boolean getBoolean(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		boolean value;
		synchronized (u_stmt) {
			value = u_stmt.getBoolean(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public byte getByte(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		byte value;
		synchronized (u_stmt) {
			value = u_stmt.getByte(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public short getShort(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		short value;
		synchronized (u_stmt) {
			value = u_stmt.getShort(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public long getLong(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		long value;
		synchronized (u_stmt) {
			value = u_stmt.getLong(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public float getFloat(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		float value;
		synchronized (u_stmt) {
			value = u_stmt.getFloat(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public double getDouble(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		double value;
		synchronized (u_stmt) {
			value = u_stmt.getDouble(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public byte[] getBytes(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		Object obj;
		synchronized (u_stmt) {
			obj = u_stmt.getObject(index);
			error = u_stmt.getRecentError();
		}
		if (obj != null && obj instanceof Blob) {
			Blob blob = (Blob) obj;
			int length;
			if (blob.length() > (long) Integer.MAX_VALUE) {
				length = Integer.MAX_VALUE;
			} else {
				length = (int) blob.length();
			}
			return blob.getBytes(1, length);
		}

		byte[] value;
		synchronized (u_stmt) {
			value = u_stmt.getBytes(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public Date getDate(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		Date value;
		synchronized (u_stmt) {
			value = u_stmt.getDate(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public Time getTime(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		Time value;
		synchronized (u_stmt) {
			value = u_stmt.getTime(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public Timestamp getTimestamp(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		Timestamp value;
		synchronized (u_stmt) {
			value = u_stmt.getTimestamp(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public Object getObject(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		Object value;
		synchronized (u_stmt) {
			value = u_stmt.getObject(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public BigDecimal getBigDecimal(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		BigDecimal value;
		synchronized (u_stmt) {
			value = u_stmt.getBigDecimal(index);
			error = u_stmt.getRecentError();
		}
		checkGetXXXError();
		return value;
	}

	public BigDecimal getBigDecimal(int index, int scale) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	public Ref getRef(int i) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	public Blob getBlob(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		Blob value;
		synchronized (u_stmt) {
			value = u_stmt.getBlob(index);
			error = u_stmt.getRecentError();
		}

		checkGetXXXError();
		return value;
	}

	public Clob getClob(int index) throws SQLException {
		checkIsOpen();
		beforeGetValue(index);

		Clob value;
		synchronized (u_stmt) {
			value = u_stmt.getClob(index);
			error = u_stmt.getRecentError();
		}

		checkGetXXXError();
		return value;
	}

	public Array getArray(int i) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	public Date getDate(int index, Calendar cal) throws SQLException {
		return (getDate(index));
	}

	public Time getTime(int index, Calendar cal) throws SQLException {
		return (getTime(index));
	}

	public Timestamp getTimestamp(int index, Calendar cal) throws SQLException {
		return (getTimestamp(index));
	}

	public URL getURL(int index) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	public void setURL(String pName, URL val) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setNull(String pName, int sqlType) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setBoolean(String pName, boolean x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setByte(String pName, byte x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setShort(String pName, short x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setInt(String pName, int x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setLong(String pName, long x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setFloat(String pName, float x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setDouble(String pName, double x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setBigDecimal(String pName, BigDecimal x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setString(String pName, String x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setBytes(String pName, byte[] x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setDate(String pName, Date x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setTime(String pName, Time x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setTimestamp(String pName, Timestamp x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setAsciiStream(String pName, InputStream x, int length)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setBinaryStream(String pName, InputStream x, int length)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setObject(String pName, Object x, int targetSqlType, int scale)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setObject(String pName, Object x, int targetSqlType)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setObject(String pName, Object x) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setCharacterStream(String pName, Reader reader, int length)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setDate(String pName, Date x, Calendar cal) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setTime(String pName, Time x, Calendar cal) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setTimestamp(String pName, Timestamp x, Calendar cal)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void setNull(String pName, int sqlType, String typeName)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public String getString(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public boolean getBoolean(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public byte getByte(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public short getShort(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public int getInt(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public long getLong(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public float getFloat(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public double getDouble(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public byte[] getBytes(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Date getDate(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Time getTime(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Timestamp getTimestamp(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Object getObject(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Object getObject(int i, Map> map) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Object getObject(String pName, Map> map) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public BigDecimal getBigDecimal(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Ref getRef(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Blob getBlob(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Clob getClob(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Array getArray(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Date getDate(String pName, Calendar cal) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Time getTime(String pName, Calendar cal) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public Timestamp getTimestamp(String pName, Calendar cal)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public URL getURL(String pName) throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void registerOutParameter(int index, int sqlType)
			throws SQLException {
		doRegisterOutParameter(index, sqlType);
	}

	public void registerOutParameter(int index, int sqlType, int scale)
			throws SQLException {
		doRegisterOutParameter(index, sqlType);
	}

	public void registerOutParameter(int index, int sqlType, String typeName)
			throws SQLException {
		doRegisterOutParameter(index, sqlType);
	}

	public void registerOutParameter(String pName, int sqlType)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void registerOutParameter(String pName, int sqlType, int scale)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void registerOutParameter(String pName, int sqlType, String typeName)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	public int[] executeBatch() throws SQLException {
		throw new UnsupportedOperationException();
	}

	public void addBatch() throws SQLException {
		throw new UnsupportedOperationException();
	}

	/*
	 * ======================================================================= |
	 * PRIVATE METHODS
	 * =======================================================================
	 */

	private void doRegisterOutParameter(int index, int sqlType) throws SQLException {
		checkIsOpen();
		synchronized (u_stmt) {
			u_stmt.registerOutParameter(index - 1, sqlType);
			error = u_stmt.getRecentError();
		}
		
		checkBindError();
	}

	private void beforeGetValue(int index) throws SQLException {
		if (index < 0 || index > u_stmt.getParameterCount()) {
			throw con.createCUBRIDException(CUBRIDJDBCErrorCode.invalid_index, null);
		}

		synchronized (u_stmt) {
			u_stmt.fetch();
			error = u_stmt.getRecentError();
		}

		switch (error.getErrorCode()) {
		case UErrorCode.ER_NO_ERROR:
			break;
		default:
			throw con.createCUBRIDException(error);
		}
	}

	void checkGetXXXError() throws SQLException {
		switch (error.getErrorCode()) {
		case UErrorCode.ER_NO_ERROR:
			was_null = false;
			break;
		case UErrorCode.ER_WAS_NULL:
			was_null = true;
			break;
		default:
			throw con.createCUBRIDException(error);
		}
	}

	/* JDK 1.6 */
	public Reader getCharacterStream(int parameterIndex) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public Reader getCharacterStream(String parameterName) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public Reader getNCharacterStream(int parameterIndex) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public Reader getNCharacterStream(String parameterName) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public NClob getNClob(int parameterIndex) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public NClob getNClob(String parameterName) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public String getNString(int parameterIndex) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public String getNString(String parameterName) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public RowId getRowId(int parameterIndex) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public RowId getRowId(String parameterName) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public SQLXML getSQLXML(int parameterIndex) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public SQLXML getSQLXML(String parameterName) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setAsciiStream(String parameterName, InputStream x)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setAsciiStream(String parameterName, InputStream x, long length)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setBinaryStream(String parameterName, InputStream x)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setBinaryStream(String parameterName, InputStream x, long length)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setBlob(String parameterName, Blob x) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setBlob(String parameterName, InputStream inputStream)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setBlob(String parameterName, InputStream inputStream,
			long length) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setCharacterStream(String parameterName, Reader reader)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setCharacterStream(String parameterName, Reader reader,
			long length) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setClob(String parameterName, Clob x) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setClob(String parameterName, Reader reader)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setClob(String parameterName, Reader reader, long length)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setNCharacterStream(String parameterName, Reader value)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setNCharacterStream(String parameterName, Reader value,
			long length) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setNClob(String parameterName, NClob value) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setNClob(String parameterName, Reader reader)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setNClob(String parameterName, Reader reader, long length)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setNString(String parameterName, String value)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setRowId(String parameterName, RowId x) throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.6 */
	public void setSQLXML(String parameterName, SQLXML xmlObject)
			throws SQLException {
		throw new java.lang.UnsupportedOperationException();
	}

	/* JDK 1.7 */
	public void closeOnCompletion() throws SQLException {
		throw new UnsupportedOperationException();
	}

	/* JDK 1.7 */
	public boolean isCloseOnCompletion() throws SQLException {
		throw new UnsupportedOperationException();
	}

	/* JDK 1.7 */
	public  T getObject(int parameterIndex, Class type)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

	/* JDK 1.7 */
	public  T getObject(String parameterName, Class type)
			throws SQLException {
		throw new UnsupportedOperationException();
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy