home *** CD-ROM | disk | FTP | other *** search
- package sun.jdbc.odbc;
-
- import java.math.BigDecimal;
- import java.sql.CallableStatement;
- import java.sql.Date;
- import java.sql.SQLException;
- import java.sql.Time;
- import java.sql.Timestamp;
-
- public class JdbcOdbcCallableStatement extends JdbcOdbcPreparedStatement implements CallableStatement {
- private boolean lastParameterNull = false;
-
- public JdbcOdbcCallableStatement(JdbcOdbcConnectionInterface var1) {
- super(var1);
- }
-
- public void registerOutParameter(int var1, int var2) throws SQLException {
- this.registerOutParameter(var1, var2, 0);
- }
-
- public void registerOutParameter(int var1, int var2, int var3) throws SQLException {
- this.setSqlType(var1, var2);
- this.setOutputParameter(var1, true);
- int var4;
- switch (var2) {
- case -7:
- var4 = 1;
- break;
- case -6:
- var4 = 4;
- break;
- case -5:
- var4 = 20;
- break;
- case 2:
- case 3:
- var4 = 38;
- break;
- case 4:
- var4 = 11;
- break;
- case 5:
- var4 = 6;
- break;
- case 6:
- case 8:
- var4 = 22;
- break;
- case 7:
- var4 = 13;
- break;
- case 91:
- var4 = 10;
- break;
- case 92:
- var4 = 8;
- break;
- case 93:
- var4 = 19;
- if (var3 > 0) {
- var4 += var3 + 1;
- }
- break;
- default:
- var4 = ((JdbcOdbcStatement)this).getPrecision(var2);
- if (var4 <= 0 || var4 > JdbcOdbcLimits.DEFAULT_IN_PRECISION) {
- var4 = JdbcOdbcLimits.DEFAULT_IN_PRECISION;
- }
- }
-
- byte[] var5 = ((JdbcOdbcPreparedStatement)this).allocBindBuf(var1, var4 + 1);
- byte[] var6 = ((JdbcOdbcPreparedStatement)this).getLengthBuf(var1);
- var2 = OdbcDef.jdbcTypeToOdbc(var2);
- super.OdbcApi.SQLBindOutParameterString(super.hStmt, var1, var2, var3, var5, var6);
- }
-
- public boolean wasNull() throws SQLException {
- return this.lastParameterNull;
- }
-
- public String getString(int var1) throws SQLException {
- if (this.isNull(var1)) {
- return null;
- } else {
- this.getSqlType(var1);
- String var2 = new String(((JdbcOdbcPreparedStatement)this).getDataBuf(var1), 0);
- var2 = var2.trim();
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("String value for OUT parameter " + var1 + "=" + var2);
- }
-
- return var2;
- }
- }
-
- public boolean getBoolean(int var1) throws SQLException {
- if (this.isNull(var1)) {
- return false;
- } else {
- boolean var2 = false;
- if (this.getString(var1).equals("1")) {
- var2 = true;
- }
-
- return var2;
- }
- }
-
- public byte getByte(int var1) throws SQLException {
- return (byte)this.getInt(var1);
- }
-
- public short getShort(int var1) throws SQLException {
- return (short)this.getInt(var1);
- }
-
- public int getInt(int var1) throws SQLException {
- if (this.isNull(var1)) {
- return 0;
- } else {
- Integer var2 = new Integer(this.getString(var1));
- return var2;
- }
- }
-
- public long getLong(int var1) throws SQLException {
- if (this.isNull(var1)) {
- return 0L;
- } else {
- Integer var2 = new Integer(this.getString(var1));
- return var2.longValue();
- }
- }
-
- public float getFloat(int var1) throws SQLException {
- if (this.isNull(var1)) {
- return 0.0F;
- } else {
- Float var2 = new Float(this.getString(var1));
- return var2;
- }
- }
-
- public double getDouble(int var1) throws SQLException {
- if (this.isNull(var1)) {
- return (double)0.0F;
- } else {
- Double var2 = new Double(this.getString(var1));
- return var2;
- }
- }
-
- public BigDecimal getBigDecimal(int var1, int var2) throws SQLException {
- if (this.isNull(var1)) {
- return null;
- } else {
- BigDecimal var3 = new BigDecimal(this.getString(var1));
- return var3.setScale(var2, 6);
- }
- }
-
- public byte[] getBytes(int var1) throws SQLException {
- return this.isNull(var1) ? null : JdbcOdbcObject.hexStringToByteArray(this.getString(var1));
- }
-
- public Date getDate(int var1) throws SQLException {
- String var2 = this.getString(var1);
- return var2 == null ? null : Date.valueOf(var2);
- }
-
- public Time getTime(int var1) throws SQLException {
- String var2 = this.getString(var1);
- return var2 == null ? null : Time.valueOf(var2);
- }
-
- public Timestamp getTimestamp(int var1) throws SQLException {
- String var2 = this.getString(var1);
- if (var2 == null) {
- return null;
- } else {
- if (var2.length() == 10) {
- var2 = var2 + " 00:00:00";
- }
-
- return Timestamp.valueOf(var2);
- }
- }
-
- public Object getObject(int var1) throws SQLException {
- Object var2 = null;
- int var3 = this.getSqlType(var1);
- if (this.isNull(var1)) {
- return null;
- } else {
- switch (var3) {
- case -7:
- var2 = new Boolean(this.getBoolean(var1));
- break;
- case -6:
- var2 = new Integer(this.getByte(var1));
- break;
- case -5:
- var2 = new Long(this.getLong(var1));
- break;
- case -4:
- case -3:
- case -2:
- var2 = this.getBytes(var1);
- break;
- case -1:
- case 1:
- case 12:
- var2 = this.getString(var1);
- break;
- case 2:
- case 3:
- var2 = this.getBigDecimal(var1, JdbcOdbcLimits.DEFAULT_OUT_SCALE);
- break;
- case 4:
- var2 = new Integer(this.getInt(var1));
- break;
- case 5:
- var2 = new Integer(this.getShort(var1));
- break;
- case 6:
- case 7:
- var2 = new Float(this.getFloat(var1));
- break;
- case 8:
- var2 = new Double(this.getDouble(var1));
- break;
- case 91:
- var2 = this.getDate(var1);
- break;
- case 92:
- var2 = this.getTime(var1);
- break;
- case 93:
- var2 = this.getTimestamp(var1);
- }
-
- return var2;
- }
- }
-
- protected boolean isNull(int var1) throws SQLException {
- if (!this.isOutputParameter(var1)) {
- throw new SQLException("Parameter " + var1 + " is not an OUTPUT parameter");
- } else {
- boolean var2 = false;
- var2 = ((JdbcOdbcPreparedStatement)this).getParamLength(var1) == -1;
- if (JdbcOdbcObject.isTracing()) {
- JdbcOdbcObject.trace("Output Parameter " + var1 + " null: " + var2);
- }
-
- this.lastParameterNull = var2;
- return var2;
- }
- }
-
- protected void setSqlType(int var1, int var2) {
- if (var1 >= 1 && var1 <= super.numParams) {
- super.boundParams[var1 - 1].setSqlType(var2);
- }
-
- }
-
- protected int getSqlType(int var1) {
- int var2 = 1111;
- if (var1 >= 1 && var1 <= super.numParams) {
- var2 = super.boundParams[var1 - 1].getSqlType();
- }
-
- return var2;
- }
-
- protected void setOutputParameter(int var1, boolean var2) {
- if (var1 >= 1 && var1 <= super.numParams) {
- super.boundParams[var1 - 1].setOutputParameter(var2);
- }
-
- }
-
- protected boolean isOutputParameter(int var1) {
- boolean var2 = false;
- if (var1 >= 1 && var1 <= super.numParams) {
- var2 = super.boundParams[var1 - 1].isOutputParameter();
- }
-
- return var2;
- }
- }
-