org.springframework.jdbc.core.metadata

Class GenericCallMetaDataProvider

  • java.lang.Object
    • org.springframework.jdbc.core.metadata.GenericCallMetaDataProvider
    • Field Summary

      Fields 
      Modifier and Type Field and Description
      protected static Log logger
      Logger available to subclasses.
    • Constructor Summary

      Constructors 
      Modifier Constructor and Description
      protected GenericCallMetaDataProvider(java.sql.DatabaseMetaData databaseMetaData)
      Constructor used to initialize with provided database meta-data.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      boolean byPassReturnParameter(java.lang.String parameterName)
      Should we bypass the return parameter with the specified name.
      java.lang.String catalogNameToUse(java.lang.String catalogName)
      Provide any modification of the catalog name passed in to match the meta-data currently used.
      SqlParameter createDefaultInOutParameter(java.lang.String parameterName, CallParameterMetaData meta)
      Create a default inout parameter based on the provided meta-data.
      SqlParameter createDefaultInParameter(java.lang.String parameterName, CallParameterMetaData meta)
      Create a default in parameter based on the provided meta-data.
      SqlParameter createDefaultOutParameter(java.lang.String parameterName, CallParameterMetaData meta)
      Create a default out parameter based on the provided meta-data.
      java.util.List<CallParameterMetaData> getCallParameterMetaData()
      Get the call parameter meta-data that is currently used.
      int getRefCursorSqlType()
      Get the Types type for columns that return ResultSets as ref cursors if this feature is supported.
      java.lang.String getUserName()
      Get the name of the current user.
      void initializeWithMetaData(java.sql.DatabaseMetaData databaseMetaData)
      Initialize using the provided DatabaseMetData.
      void initializeWithProcedureColumnMetaData(java.sql.DatabaseMetaData databaseMetaData, java.lang.String catalogName, java.lang.String schemaName, java.lang.String procedureName)
      Initialize the database specific management of procedure column meta-data.
      boolean isProcedureColumnMetaDataUsed()
      Are we using the meta-data for the procedure columns?
      boolean isRefCursorSupported()
      Does this database support returning ResultSets as ref cursors to be retrieved with CallableStatement.getObject(int) for the specified column.
      boolean isReturnResultSetSupported()
      Does this database support returning ResultSets that should be retrieved with the JDBC call: Statement.getResultSet()?
      protected boolean isStoresLowerCaseIdentifiers()
      Does the database use lower case for identifiers?
      protected boolean isStoresUpperCaseIdentifiers()
      Does the database use upper case for identifiers?
      boolean isSupportsCatalogsInProcedureCalls()
      Does the database support the use of catalog name in procedure calls?
      boolean isSupportsSchemasInProcedureCalls()
      Does the database support the use of schema name in procedure calls?
      java.lang.String metaDataCatalogNameToUse(java.lang.String catalogName)
      Provide any modification of the catalog name passed in to match the meta-data currently used.
      java.lang.String metaDataSchemaNameToUse(java.lang.String schemaName)
      Provide any modification of the schema name passed in to match the meta-data currently used.
      java.lang.String parameterNameToUse(java.lang.String parameterName)
      Provide any modification of the column name passed in to match the meta-data currently used.
      java.lang.String procedureNameToUse(java.lang.String procedureName)
      Provide any modification of the procedure name passed in to match the meta-data currently used.
      java.lang.String schemaNameToUse(java.lang.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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • logger

        protected static final Log logger
        Logger available to subclasses.
    • Constructor Detail

      • GenericCallMetaDataProvider

        protected GenericCallMetaDataProvider(java.sql.DatabaseMetaData databaseMetaData)
                                       throws java.sql.SQLException
        Constructor used to initialize with provided database meta-data.
        Parameters:
        databaseMetaData - meta-data to be used
        Throws:
        java.sql.SQLException
    • Method Detail

      • initializeWithMetaData

        public void initializeWithMetaData(java.sql.DatabaseMetaData databaseMetaData)
                                    throws java.sql.SQLException
        Description copied from interface: CallMetaDataProvider
        Initialize using the provided DatabaseMetData.
        Specified by:
        initializeWithMetaData in interface CallMetaDataProvider
        Parameters:
        databaseMetaData - used to retrieve database specific information
        Throws:
        java.sql.SQLException - in case of initialization failure
      • initializeWithProcedureColumnMetaData

        public void initializeWithProcedureColumnMetaData(java.sql.DatabaseMetaData databaseMetaData,
                                                          @Nullable
                                                          java.lang.String catalogName,
                                                          @Nullable
                                                          java.lang.String schemaName,
                                                          @Nullable
                                                          java.lang.String procedureName)
                                                   throws java.sql.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 interface CallMetaDataProvider
        Parameters:
        databaseMetaData - used to retrieve database specific information
        catalogName - name of catalog to use (or null if none)
        schemaName - name of schema name to use (or null if none)
        procedureName - name of the stored procedure
        Throws:
        java.sql.SQLException - in case of initialization failure
        See Also:
        SimpleJdbcCall.withoutProcedureColumnMetaDataAccess()
      • metaDataCatalogNameToUse

        @Nullable
        public java.lang.String metaDataCatalogNameToUse(@Nullable
                                                                   java.lang.String catalogName)
        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 interface CallMetaDataProvider
      • metaDataSchemaNameToUse

        @Nullable
        public java.lang.String metaDataSchemaNameToUse(@Nullable
                                                                  java.lang.String schemaName)
        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 interface CallMetaDataProvider
      • parameterNameToUse

        @Nullable
        public java.lang.String parameterNameToUse(@Nullable
                                                             java.lang.String parameterName)
        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 interface CallMetaDataProvider
        Parameters:
        parameterName - name of the parameter of column
      • byPassReturnParameter

        public boolean byPassReturnParameter(java.lang.String parameterName)
        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 interface CallMetaDataProvider
      • createDefaultOutParameter

        public SqlParameter createDefaultOutParameter(java.lang.String parameterName,
                                                      CallParameterMetaData meta)
        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 interface CallMetaDataProvider
        Parameters:
        parameterName - the name of the parameter
        meta - meta-data used for this call
        Returns:
        the configured SqlOutParameter
      • createDefaultInOutParameter

        public SqlParameter createDefaultInOutParameter(java.lang.String parameterName,
                                                        CallParameterMetaData meta)
        Description copied from interface: CallMetaDataProvider
        Create a default inout parameter based on the provided meta-data. This is used when no explicit parameter declaration has been made.
        Specified by:
        createDefaultInOutParameter in interface CallMetaDataProvider
        Parameters:
        parameterName - the name of the parameter
        meta - meta-data used for this call
        Returns:
        the configured SqlInOutParameter
      • createDefaultInParameter

        public SqlParameter createDefaultInParameter(java.lang.String parameterName,
                                                     CallParameterMetaData meta)
        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 interface CallMetaDataProvider
        Parameters:
        parameterName - the name of the parameter
        meta - meta-data used for this call
        Returns:
        the configured SqlParameter
      • getUserName

        public java.lang.String getUserName()
        Description copied from interface: CallMetaDataProvider
        Get the name of the current user. Useful for meta-data lookups etc.
        Specified by:
        getUserName in interface CallMetaDataProvider
        Returns:
        current user name from database connection
      • isRefCursorSupported

        public boolean isRefCursorSupported()
        Description copied from interface: CallMetaDataProvider
        Does this database support returning ResultSets as ref cursors to be retrieved with CallableStatement.getObject(int) for the specified column.
        Specified by:
        isRefCursorSupported in interface CallMetaDataProvider
      • setSupportsCatalogsInProcedureCalls

        protected void setSupportsCatalogsInProcedureCalls(boolean supportsCatalogsInProcedureCalls)
        Specify whether the database supports the use of catalog name in procedure calls.
      • setSupportsSchemasInProcedureCalls

        protected void setSupportsSchemasInProcedureCalls(boolean supportsSchemasInProcedureCalls)
        Specify whether the database supports the use of schema name in procedure calls.
      • 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?