org.apache.derby.impl.sql
Class GenericParameterValueSet

java.lang.Object
  extended byorg.apache.derby.impl.sql.GenericParameterValueSet
All Implemented Interfaces:
ParameterValueSet

final class GenericParameterValueSet
extends java.lang.Object
implements ParameterValueSet

Implementation of ParameterValueSet

Author:
Jeff Lichtman
See Also:
ParameterValueSet

Field Summary
(package private)  ClassInspector ci
           
private  boolean hasReturnOutputParam
           
private  GenericParameter[] parms
           
 
Constructor Summary
(package private) GenericParameterValueSet(ClassInspector ci, int numParms, boolean hasReturnOutputParam)
          Constructor for a GenericParameterValueSet
private GenericParameterValueSet(int numParms, GenericParameterValueSet pvs)
           
 
Method Summary
 boolean allAreSet()
          Tells whether all the parameters are set and ready for execution.
 boolean checkNoDeclaredOutputParameters()
          Check that there are not output parameters defined by the parameter set.
private  void checkPosition(int position)
          Check the position number for a parameter and throw an exception if it is out of range.
 void clearParameters()
          Sets all parameters to an uninitialized state.
 ParameterValueSet getClone()
          Clone the ParameterValueSet and its contents.
(package private)  GenericParameter getGenericParameter(int position)
           
 java.lang.Object getObject(int parameterIndex)
          Get the value of a parameter as a Java object.
 DataValueDescriptor getParameter(int position)
          Returns the parameter value at the given position.
 int getParameterCount()
          Returns the number of parameters in this set.
 DataValueDescriptor getParameterForGet(int position)
           
 DataValueDescriptor getParameterForSet(int position)
          Returns the parameter at the given position in order to set it.
 short getParameterMode(int parameterIndex)
          Return the mode of the parameter according to JDBC 3.0 ParameterMetaData
 int getParameterNumber(GenericParameter theParam)
          Return the parameter number (in jdbc lingo, i.e. 1 based) for the given parameter.
 int getPrecision(int parameterIndex)
          Return the precision of the given parameter index in this pvs.
 int getScale(int parameterIndex)
          Return the scale of the given parameter index in this pvs.
 boolean hasReturnOutputParameter()
          Is there a return output parameter in this pvs.
 void registerOutParameter(int parameterIndex, int sqlType, int scale)
          Mark the parameter as an output parameter.
 void setParameterAsObject(int position, java.lang.Object value)
          Set the value of this parameter to the passed in Object.
 void setParameterMode(int position, int mode)
          Set the mode of the parameter, called when setting up static method calls and stored procedures.
 void setReturnValue(java.lang.Object value)
          Set the value of the return parameter as a Java object.
 void setStorableDataValue(DataValueDescriptor sdv, int position, int jdbcTypeId, java.lang.String className)
          Set a parameter position to a DataValueDescriptor.
 java.lang.String toString()
           
 void transferDataValues(ParameterValueSet pvstarget)
          Set the parameter values of the pvstarget to equal those set in this PVS.
 void validate()
          Validate the parameters.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

parms

private final GenericParameter[] parms

ci

final ClassInspector ci

hasReturnOutputParam

private final boolean hasReturnOutputParam
Constructor Detail

GenericParameterValueSet

GenericParameterValueSet(ClassInspector ci,
                         int numParms,
                         boolean hasReturnOutputParam)
Constructor for a GenericParameterValueSet

Parameters:
numParms - The number of parameters in the new ParameterValueSet
hasReturnOutputParam - if we have a ? = call syntax. Note that this is NOT the same thing as an output parameter -- return output parameters are special cases of output parameters.

GenericParameterValueSet

private GenericParameterValueSet(int numParms,
                                 GenericParameterValueSet pvs)
Method Detail

setParameterMode

public void setParameterMode(int position,
                             int mode)
Description copied from interface: ParameterValueSet
Set the mode of the parameter, called when setting up static method calls and stored procedures. Otherwise the parameter type will default to an IN parameter.

Specified by:
setParameterMode in interface ParameterValueSet

clearParameters

public void clearParameters()
Description copied from interface: ParameterValueSet
Sets all parameters to an uninitialized state. An exception will be thrown if the caller tries to execute a PreparedStatement when one or more parameters is uninitialized (i.e. has not had setParameterValue() called on it.

Specified by:
clearParameters in interface ParameterValueSet
Returns:
Nothing
See Also:
ParameterValueSet.clearParameters()

getParameterCount

public int getParameterCount()
Returns the number of parameters in this set.

Specified by:
getParameterCount in interface ParameterValueSet
Returns:
The number of parameters in this set.

getParameter

public DataValueDescriptor getParameter(int position)
                                 throws StandardException
Returns the parameter value at the given position.

Specified by:
getParameter in interface ParameterValueSet
Returns:
The parameter at the given position.
Throws:
StandardException - Thrown on error

getParameterForSet

public DataValueDescriptor getParameterForSet(int position)
                                       throws StandardException
Description copied from interface: ParameterValueSet
Returns the parameter at the given position in order to set it. Setting via an unknown object type must use setParameterAsObject() to ensure correct typing.

Specified by:
getParameterForSet in interface ParameterValueSet
Returns:
The parameter at the given position.
Throws:
StandardException - Thrown on error

getParameterForGet

public DataValueDescriptor getParameterForGet(int position)
                                       throws StandardException
Specified by:
getParameterForGet in interface ParameterValueSet
Throws:
StandardException

setParameterAsObject

public void setParameterAsObject(int position,
                                 java.lang.Object value)
                          throws StandardException
Description copied from interface: ParameterValueSet
Set the value of this parameter to the passed in Object.

Specified by:
setParameterAsObject in interface ParameterValueSet
Returns:
The parameter at the given position.
Throws:
StandardException - Thrown on error

allAreSet

public boolean allAreSet()
Description copied from interface: ParameterValueSet
Tells whether all the parameters are set and ready for execution. OUT and Cloudscape static method INOUT parameters are not required to be set.

Specified by:
allAreSet in interface ParameterValueSet
Returns:
true if all parameters are set, false if at least one parameter is not set.
See Also:
ParameterValueSet.allAreSet()

transferDataValues

public void transferDataValues(ParameterValueSet pvstarget)
                        throws StandardException
Description copied from interface: ParameterValueSet
Set the parameter values of the pvstarget to equal those set in this PVS. Used to transfer saved SPS parameters to the actual prepared statement parameters once associated parameters have been established. Assumes pvstarget is the same length as this.

Specified by:
transferDataValues in interface ParameterValueSet
Parameters:
pvstarget - ParameterValueSet which will recieve the values
Throws:
StandardException - values not compatible
See Also:
ParameterValueSet.transferDataValues(org.apache.derby.iapi.sql.ParameterValueSet)

setStorableDataValue

public void setStorableDataValue(DataValueDescriptor sdv,
                                 int position,
                                 int jdbcTypeId,
                                 java.lang.String className)
Description copied from interface: ParameterValueSet
Set a parameter position to a DataValueDescriptor. NOTE: This method assumes the caller will not pass a position that's out of range. The implementation may have an assertion that the position is in range.

Specified by:
setStorableDataValue in interface ParameterValueSet
Parameters:
sdv - The DataValueDescriptor to set
position - The parameter position to set it at
jdbcTypeId - The corresponding JDBC types from java.sql.Types
className - The declared class name for the type.
See Also:
ParameterValueSet.setStorableDataValue(org.apache.derby.iapi.types.DataValueDescriptor, int, int, java.lang.String)

getGenericParameter

GenericParameter getGenericParameter(int position)

toString

public java.lang.String toString()

checkPosition

private void checkPosition(int position)
                    throws StandardException
Check the position number for a parameter and throw an exception if it is out of range.

Parameters:
position - The position number to check
Returns:
Nothing
Throws:
StandardException - Thrown if position number is out of range.

getClone

public ParameterValueSet getClone()
Description copied from interface: ParameterValueSet
Clone the ParameterValueSet and its contents.

Specified by:
getClone in interface ParameterValueSet
Returns:
ParameterValueSet A clone of the ParameterValueSet and its contents.

registerOutParameter

public void registerOutParameter(int parameterIndex,
                                 int sqlType,
                                 int scale)
                          throws StandardException
Mark the parameter as an output parameter.

Specified by:
registerOutParameter in interface ParameterValueSet
Parameters:
parameterIndex - The ordinal parameterIndex of a parameter to set to the given value.
sqlType - A type from java.sql.Types
scale - the scale to use. -1 means ignore scale
Throws:
StandardException - on error

getObject

public java.lang.Object getObject(int parameterIndex)
                           throws StandardException
Get the value of a parameter as a Java object.

This method returns a Java object whose type coresponds to the SQL type that was registered for this parameter using registerOutParameter.

Note that this method may be used to read datatabase-specific, abstract data types. This is done by specifying a targetSqlType of java.sql.types.OTHER, which allows the driver to return a database-specific Java type.

Specified by:
getObject in interface ParameterValueSet
Parameters:
parameterIndex - The first parameter is 1, the second is 2, ...
Returns:
A java.lang.Object holding the OUT parameter value.
Throws:
StandardException - if a database-access error occurs.
See Also:
Types

validate

public void validate()
              throws StandardException
Validate the parameters. This is done for situations where we cannot validate everything in the setXXX() calls. In particular, before we do an execute() on a CallableStatement, we need to go through the parameters and make sure that all parameters are set up properly. The motivator for this is that setXXX() can be called either before or after registerOutputParamter(), we cannot be sure we have the types correct until we get to execute().

Specified by:
validate in interface ParameterValueSet
Throws:
StandardException - if the parameters aren't valid

getParameterNumber

public int getParameterNumber(GenericParameter theParam)
Return the parameter number (in jdbc lingo, i.e. 1 based) for the given parameter. Linear search.

Returns:
the parameter number, or 0 if not found

checkNoDeclaredOutputParameters

public boolean checkNoDeclaredOutputParameters()
Check that there are not output parameters defined by the parameter set. If there are unknown parameter types they are forced to input types. i.e. Cloudscape static method calls with parameters that are array.

Specified by:
checkNoDeclaredOutputParameters in interface ParameterValueSet
Returns:
true if a declared Java Procedure INOUT or OUT parameter is in the set, false otherwise.

getParameterMode

public short getParameterMode(int parameterIndex)
Return the mode of the parameter according to JDBC 3.0 ParameterMetaData

Specified by:
getParameterMode in interface ParameterValueSet
Parameters:
parameterIndex - the first parameter is 1, the second is 2, ...

hasReturnOutputParameter

public boolean hasReturnOutputParameter()
Is there a return output parameter in this pvs. A return parameter is from a CALL statement of the following syntax: ? = CALL myMethod()

Specified by:
hasReturnOutputParameter in interface ParameterValueSet
Returns:
true if it has a return parameter

setReturnValue

public void setReturnValue(java.lang.Object value)
                    throws StandardException
Set the value of the return parameter as a Java object.

Specified by:
setReturnValue in interface ParameterValueSet
Parameters:
value - the return value
Throws:
StandardException - if a database-access error occurs.

getScale

public int getScale(int parameterIndex)
Return the scale of the given parameter index in this pvs.

Specified by:
getScale in interface ParameterValueSet
Parameters:
parameterIndex - the first parameter is 1, the second is 2, ...
Returns:
scale

getPrecision

public int getPrecision(int parameterIndex)
Return the precision of the given parameter index in this pvs.

Specified by:
getPrecision in interface ParameterValueSet
Parameters:
parameterIndex - the first parameter is 1, the second is 2, ...
Returns:
precision

Built on Mon 2007-06-04 09:58:47+0400, from revision ???

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.