Class GenericCallMetaDataProvider
- All Implemented Interfaces:
CallMetaDataProvider
- Direct Known Subclasses:
Db2CallMetaDataProvider
,DerbyCallMetaDataProvider
,HanaCallMetaDataProvider
,OracleCallMetaDataProvider
,PostgresCallMetaDataProvider
,SqlServerCallMetaDataProvider
,SybaseCallMetaDataProvider
CallMetaDataProvider
interface.
This class can be extended to provide database specific behavior.
- Since:
- 2.5
- Author:
- Thomas Risberg, Juergen Hoeller, Sam Brannen, Stephane Nicoll
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
GenericCallMetaDataProvider
(DatabaseMetaData databaseMetaData) Constructor used to initialize with provided database meta-data. -
Method Summary
Modifier and TypeMethodDescriptionboolean
byPassReturnParameter
(String parameterName) Should we bypass the return parameter with the specified name?catalogNameToUse
(String catalogName) Provide any modification of the catalog name passed in to match the meta-data currently used.createDefaultInOutParameter
(String parameterName, CallParameterMetaData meta) Create a default in/out parameter based on the provided meta-data.createDefaultInParameter
(String parameterName, CallParameterMetaData meta) Create a default in parameter based on the provided meta-data.createDefaultOutParameter
(String parameterName, CallParameterMetaData meta) Create a default out parameter based on the provided meta-data.Get the call parameter meta-data that is currently used.int
Get theTypes
type for columns that return ResultSets as ref cursors if this feature is supported.Get the name of the current user.void
initializeWithMetaData
(DatabaseMetaData databaseMetaData) Initialize using the provided DatabaseMetData.void
initializeWithProcedureColumnMetaData
(DatabaseMetaData databaseMetaData, String catalogName, String schemaName, String procedureName) Initialize the database specific management of procedure column meta-data.boolean
Are we using the meta-data for the procedure columns?boolean
Does this database support returning ResultSets as ref cursors to be retrieved withCallableStatement.getObject(int)
for the specified column?boolean
Does this database support returning ResultSets that should be retrieved with the JDBC call:Statement.getResultSet()
?protected boolean
Does the database use lower case for identifiers?protected boolean
Does the database use upper case for identifiers?boolean
Does the database support the use of catalog name in procedure calls?boolean
Does the database support the use of schema name in procedure calls?metaDataCatalogNameToUse
(String catalogName) Provide any modification of the catalog name passed in to match the meta-data currently used.metaDataSchemaNameToUse
(String schemaName) Provide any modification of the schema name passed in to match the meta-data currently used.namedParameterBindingToUse
(String parameterName) Return the name of the named parameter to use for binding the given parameter name.parameterNameToUse
(String parameterName) Provide any modification of the column name passed in to match the meta-data currently used.procedureNameToUse
(String procedureName) Provide any modification of the procedure name passed in to match the meta-data currently used.schemaNameToUse
(String schemaName) Provide any modification of the schema name passed in to match the meta-data currently used.protected void
setStoresLowerCaseIdentifiers
(boolean storesLowerCaseIdentifiers) Specify whether the database uses lower case for identifiers.protected void
setStoresUpperCaseIdentifiers
(boolean storesUpperCaseIdentifiers) Specify whether the database uses upper case for identifiers.protected void
setSupportsCatalogsInProcedureCalls
(boolean supportsCatalogsInProcedureCalls) Specify whether the database supports the use of catalog name in procedure calls.protected void
setSupportsSchemasInProcedureCalls
(boolean supportsSchemasInProcedureCalls) Specify whether the database supports the use of schema name in procedure calls.
-
Field Details
-
logger
Logger available to subclasses.
-
-
Constructor Details
-
GenericCallMetaDataProvider
Constructor used to initialize with provided database meta-data.- Parameters:
databaseMetaData
- meta-data to be used- Throws:
SQLException
-
-
Method Details
-
initializeWithMetaData
Description copied from interface:CallMetaDataProvider
Initialize using the provided DatabaseMetData.- Specified by:
initializeWithMetaData
in interfaceCallMetaDataProvider
- Parameters:
databaseMetaData
- used to retrieve database specific information- Throws:
SQLException
- in case of initialization failure
-
initializeWithProcedureColumnMetaData
public void initializeWithProcedureColumnMetaData(DatabaseMetaData databaseMetaData, @Nullable String catalogName, @Nullable String schemaName, @Nullable String procedureName) throws SQLException Description copied from interface:CallMetaDataProvider
Initialize the database specific management of procedure column meta-data.This is only called for databases that are supported. This initialization can be turned off by specifying that column meta-data should not be used.
- Specified by:
initializeWithProcedureColumnMetaData
in interfaceCallMetaDataProvider
- Parameters:
databaseMetaData
- used to retrieve database specific informationcatalogName
- name of catalog to use (ornull
if none)schemaName
- name of schema name to use (ornull
if none)procedureName
- name of the stored procedure- Throws:
SQLException
- in case of initialization failure- See Also:
-
getCallParameterMetaData
Description copied from interface:CallMetaDataProvider
Get the call parameter meta-data that is currently used.- Specified by:
getCallParameterMetaData
in interfaceCallMetaDataProvider
- Returns:
- a List of
CallParameterMetaData
-
procedureNameToUse
Description copied from interface:CallMetaDataProvider
Provide any modification of the procedure name passed in to match the meta-data currently used.This could include altering the case.
- Specified by:
procedureNameToUse
in interfaceCallMetaDataProvider
-
catalogNameToUse
Description copied from interface:CallMetaDataProvider
Provide any modification of the catalog name passed in to match the meta-data currently used.This could include altering the case.
- Specified by:
catalogNameToUse
in interfaceCallMetaDataProvider
-
schemaNameToUse
Description copied from interface:CallMetaDataProvider
Provide any modification of the schema name passed in to match the meta-data currently used.This could include altering the case.
- Specified by:
schemaNameToUse
in interfaceCallMetaDataProvider
-
metaDataCatalogNameToUse
Description copied from interface:CallMetaDataProvider
Provide any modification of the catalog name passed in to match the meta-data currently used.The returned value will be used for meta-data lookups. This could include altering the case used or providing a base catalog if none is provided.
- Specified by:
metaDataCatalogNameToUse
in interfaceCallMetaDataProvider
-
metaDataSchemaNameToUse
Description copied from interface:CallMetaDataProvider
Provide any modification of the schema name passed in to match the meta-data currently used.The returned value will be used for meta-data lookups. This could include altering the case used or providing a base schema if none is provided.
- Specified by:
metaDataSchemaNameToUse
in interfaceCallMetaDataProvider
-
parameterNameToUse
Description copied from interface:CallMetaDataProvider
Provide any modification of the column name passed in to match the meta-data currently used.This could include altering the case.
- Specified by:
parameterNameToUse
in interfaceCallMetaDataProvider
- Parameters:
parameterName
- name of the parameter of column
-
namedParameterBindingToUse
Description copied from interface:CallMetaDataProvider
Return the name of the named parameter to use for binding the given parameter name.- Specified by:
namedParameterBindingToUse
in interfaceCallMetaDataProvider
- Parameters:
parameterName
- the name of the parameter to bind- Returns:
- the name of the named parameter to use for binding the given parameter name
-
createDefaultOutParameter
Description copied from interface:CallMetaDataProvider
Create a default out parameter based on the provided meta-data.This is used when no explicit parameter declaration has been made.
- Specified by:
createDefaultOutParameter
in interfaceCallMetaDataProvider
- Parameters:
parameterName
- the name of the parametermeta
- meta-data used for this call- Returns:
- the configured SqlOutParameter
-
createDefaultInOutParameter
Description copied from interface:CallMetaDataProvider
Create a default in/out parameter based on the provided meta-data.This is used when no explicit parameter declaration has been made.
- Specified by:
createDefaultInOutParameter
in interfaceCallMetaDataProvider
- Parameters:
parameterName
- the name of the parametermeta
- meta-data used for this call- Returns:
- the configured SqlInOutParameter
-
createDefaultInParameter
Description copied from interface:CallMetaDataProvider
Create a default in parameter based on the provided meta-data.This is used when no explicit parameter declaration has been made.
- Specified by:
createDefaultInParameter
in interfaceCallMetaDataProvider
- Parameters:
parameterName
- the name of the parametermeta
- meta-data used for this call- Returns:
- the configured SqlParameter
-
getUserName
Description copied from interface:CallMetaDataProvider
Get the name of the current user. Useful for meta-data lookups etc.- Specified by:
getUserName
in interfaceCallMetaDataProvider
- Returns:
- current user name from database connection
-
isProcedureColumnMetaDataUsed
public boolean isProcedureColumnMetaDataUsed()Description copied from interface:CallMetaDataProvider
Are we using the meta-data for the procedure columns?- Specified by:
isProcedureColumnMetaDataUsed
in interfaceCallMetaDataProvider
-
isReturnResultSetSupported
public boolean isReturnResultSetSupported()Description copied from interface:CallMetaDataProvider
Does this database support returning ResultSets that should be retrieved with the JDBC call:Statement.getResultSet()
?- Specified by:
isReturnResultSetSupported
in interfaceCallMetaDataProvider
-
isRefCursorSupported
public boolean isRefCursorSupported()Description copied from interface:CallMetaDataProvider
Does this database support returning ResultSets as ref cursors to be retrieved withCallableStatement.getObject(int)
for the specified column?- Specified by:
isRefCursorSupported
in interfaceCallMetaDataProvider
-
getRefCursorSqlType
public int getRefCursorSqlType()Description copied from interface:CallMetaDataProvider
Get theTypes
type for columns that return ResultSets as ref cursors if this feature is supported.- Specified by:
getRefCursorSqlType
in interfaceCallMetaDataProvider
-
byPassReturnParameter
Description copied from interface:CallMetaDataProvider
Should we bypass the return parameter with the specified name?This allows the database specific implementation to skip the processing for specific results returned by the database call.
- Specified by:
byPassReturnParameter
in interfaceCallMetaDataProvider
-
setSupportsCatalogsInProcedureCalls
protected void setSupportsCatalogsInProcedureCalls(boolean supportsCatalogsInProcedureCalls) Specify whether the database supports the use of catalog name in procedure calls. -
isSupportsCatalogsInProcedureCalls
public boolean isSupportsCatalogsInProcedureCalls()Does the database support the use of catalog name in procedure calls?- Specified by:
isSupportsCatalogsInProcedureCalls
in interfaceCallMetaDataProvider
-
setSupportsSchemasInProcedureCalls
protected void setSupportsSchemasInProcedureCalls(boolean supportsSchemasInProcedureCalls) Specify whether the database supports the use of schema name in procedure calls. -
isSupportsSchemasInProcedureCalls
public boolean isSupportsSchemasInProcedureCalls()Does the database support the use of schema name in procedure calls?- Specified by:
isSupportsSchemasInProcedureCalls
in interfaceCallMetaDataProvider
-
setStoresUpperCaseIdentifiers
protected void setStoresUpperCaseIdentifiers(boolean storesUpperCaseIdentifiers) Specify whether the database uses upper case for identifiers. -
isStoresUpperCaseIdentifiers
protected boolean isStoresUpperCaseIdentifiers()Does the database use upper case for identifiers? -
setStoresLowerCaseIdentifiers
protected void setStoresLowerCaseIdentifiers(boolean storesLowerCaseIdentifiers) Specify whether the database uses lower case for identifiers. -
isStoresLowerCaseIdentifiers
protected boolean isStoresLowerCaseIdentifiers()Does the database use lower case for identifiers?
-