/* * This software is distributed under the terms of the FSF * Gnu Lesser General Public License (see lgpl.txt). * * This program is distributed WITHOUT ANY WARRANTY. See the * GNU General Public License for more details. */ package com.scooterframework.orm.sqldataexpress.object; import java.sql.ParameterMetaData; import java.sql.Types; import com.scooterframework.orm.sqldataexpress.exception.UnsupportedStoredProcedureModeException; import com.scooterframework.orm.sqldataexpress.util.SqlUtil; /** * Parameter class. * * @author (Fei) John Chen */ public class Parameter { public static final String MODE_UNKONWN = ParameterMetaData.parameterModeUnknown+"";//"0"; public static final String MODE_IN = ParameterMetaData.parameterModeIn+"";//"1"; public static final String MODE_INOUT = ParameterMetaData.parameterModeInOut+"";//"2"; public static final String MODE_OUT = ParameterMetaData.parameterModeOut+"";//"4"; public static final String MODE_RETURN = "5";//indicating this is a function's return public static final int UNKNOWN_SQL_DATA_TYPE = -9999; public static final String UNDEFINED = "UNDEFINED"; public static final String FUNCTION_RETURN = "functionReturn"; public Parameter() {} public Parameter(int index, String name, String mode, int sqlDataType, String sqlDataTypeName) { if (!MODE_IN.equals(mode) && !MODE_OUT.equals(mode) && !MODE_RETURN.equals(mode) ) throw new UnsupportedStoredProcedureModeException(); if (MODE_RETURN.equals(mode)) name = FUNCTION_RETURN; if (name == null || "".equals(name)) throw new IllegalArgumentException("Parameter name can not be null or empty."); this.index = index; this.name = name; this.mode = mode; this.sqlDataType = sqlDataType; this.sqlDataTypeName = sqlDataTypeName; bIsCursorType = false; //Note: java.sql.Types.OTHER = 1111; if (Types.OTHER == sqlDataType) bIsCursorType = true; } /** * returns index */ public int getIndex() { return index; } /** * sets index */ public void setIndex(int index) { this.index = index; } /** * returns name */ public String getName() { return name; } /** * sets name */ public void setName(String name) { this.name = name; } /** * returns catalog */ public String getCatalog() { return catalog; } /** * sets catalog */ public void setCatalog(String catalog) { this.catalog = catalog; } /** * returns schema */ public String getSchema() { return schema; } /** * sets schema */ public void setSchema(String schema) { this.schema = schema; } /** * returns mode */ public String getMode() { return mode; } /** * sets mode */ public void setMode(String mode) { this.mode = mode; } /** * returns sqlDataType */ public int getSqlDataType() { return sqlDataType; } /** * sets sqlDataType */ public void setSqlDataType(int sqlDataType) { this.sqlDataType = sqlDataType; } /** * returns sqlDataTypeName */ public String getSqlDataTypeName() { return sqlDataTypeName; } /** * sets sqlDataTypeName */ public void setSqlDataTypeName(String sqlDataTypeName) { this.sqlDataTypeName = sqlDataTypeName; if (UNKNOWN_SQL_DATA_TYPE == sqlDataType) { sqlDataType = SqlUtil.getSqlDataTypeFromDataTypeName(sqlDataTypeName); } } /** * checks if is cursor type */ public boolean isCursorType() { return bIsCursorType; } /** * returns javaClassName */ public String getJavaClassName() { if (javaClassName == null) { javaClassName = getJavaType(sqlDataType); } return javaClassName; } /** * sets javaClassName */ public void setJavaClassName(String javaClassName) { this.javaClassName = javaClassName; } /** * Retrieves the the Java class type of the type of SQL type passed in. * * @param sqlDataType sql data type * @return The Java class type name. */ public String getJavaType(int sqlDataType) { return SqlUtil.getJavaType(sqlDataType); } /** * returns vendor */ public String getVendor() { return vendor; } /** * sets vendor */ public void setVendor(String vendor) { this.vendor = vendor; } /** * Returns a string representation of the object. * @return String */ public String toString() { StringBuilder sb= new StringBuilder(); sb.append("index = " + index).append(", "); sb.append("catalog = " + catalog).append(", "); sb.append("schema = " + schema).append(", "); sb.append("name = " + name).append(", "); sb.append("mode = " + mode).append(", "); sb.append("sqlDataType = " + sqlDataType).append(", "); sb.append("sqlDataTypeName = " + sqlDataTypeName).append(", "); sb.append("javaClassName = " + javaClassName).append(", "); sb.append("bIsCursorType = " + bIsCursorType).append(", "); sb.append("vendor = " + vendor); return sb.toString(); } protected int index; protected String catalog = null; protected String schema = null; protected String name = null; protected String mode = null; protected int sqlDataType = UNKNOWN_SQL_DATA_TYPE; protected String sqlDataTypeName = null; protected String javaClassName = null; protected boolean bIsCursorType; protected String vendor; }