## org.springframework.jdbc.support
Class SQLErrorCodesFactory

    java.lang.Object
      org.springframework.jdbc.support.SQLErrorCodesFactory

    public class SQLErrorCodesFactory

extends Object

Factory for creating `SQLErrorCodes` based on the "databaseProductName" taken from the `DatabaseMetaData`.

Returns `SQLErrorCodes` populated with vendor codes defined in a configuration file named "sql-error-codes.xml". Reads the default file in this package if not overridden by a file in the root of the class path (for example in the "/WEB-INF/classes" directory).

Author:
  Thomas Risberg, Rod Johnson, Juergen Hoeller
See Also:
  `DatabaseMetaData.getDatabaseProductName()`

Field Summary
`static String` `SQL_ERROR_CODE_DEFAULT_PATH` The name of default SQL error code files, loading from the class path.
`static String` `SQL_ERROR_CODE_OVERRIDE_PATH` The name of custom SQL error codes file, loading from the root of the class path (e.g.

Constructor Summary
`protected` `SQLErrorCodesFactory()` Create a new instance of the `SQLErrorCodesFactory` class.

Method Summary
`SQLErrorCodes` `getErrorCodes(DataSource dataSource)` Return `SQLErrorCodes` for the given `DataSource`, evaluating "databaseProductName" from the `DatabaseMetaData`, or an empty error codes instance if no `SQLErrorCodes` were found.
`SQLErrorCodes` `getErrorCodes(String dbName)` Return the `SQLErrorCodes` instance for the given database.
`static SQLErrorCodesFactory` `getInstance()` Return the singleton instance.
`protected Resource` `loadResource(String path)` Load the given resource from the class path.
`SQLErrorCodes` `registerDatabase(DataSource dataSource, String dbName)` Associate the specified database name with the given `DataSource`.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### SQL_ERROR_CODE_OVERRIDE_PATH

    public static final String SQL_ERROR_CODE_OVERRIDE_PATH

  The name of custom SQL error codes file, loading from the root of the class path (e.g. from the "/WEB-INF/classes" directory).

  See Also:
    Constant Field Values

### SQL_ERROR_CODE_DEFAULT_PATH

    public static final String SQL_ERROR_CODE_DEFAULT_PATH

  The name of default SQL error code files, loading from the class path.

  See Also:
    Constant Field Values

Constructor Detail

### SQLErrorCodesFactory

    protected SQLErrorCodesFactory()

  Create a new instance of the `SQLErrorCodesFactory` class.

  Not public to enforce Singleton design pattern. Would be private except to allow testing via overriding the `loadResource(String)` method.

  Do not subclass in application code.

  See Also:
    `loadResource(String)`

Method Detail

### getInstance

    public static SQLErrorCodesFactory getInstance()

  Return the singleton instance.

### loadResource

    protected Resource loadResource(String path)

  Load the given resource from the class path.

  Not to be overridden by application developers, who should obtain instances of this class from the static `getInstance()` method.

  Protected for testability.

  Parameters:
    `path` - resource path; either a custom path or one of either `SQL_ERROR_CODE_DEFAULT_PATH` or `SQL_ERROR_CODE_OVERRIDE_PATH`.
  Returns:
    the resource, or `null` if the resource wasn't found
  See Also:
    `getInstance()`

### getErrorCodes

    public SQLErrorCodes getErrorCodes(String dbName)

  Return the `SQLErrorCodes` instance for the given database.

  No need for a database metadata lookup.

  Parameters:
    `dbName` - the database name (must not be `null`)
  Returns:
    the `SQLErrorCodes` instance for the given database
  Throws:
    `IllegalArgumentException` - if the supplied database name is `null`

### getErrorCodes

    public SQLErrorCodes getErrorCodes(DataSource dataSource)

  Return `SQLErrorCodes` for the given `DataSource`, evaluating "databaseProductName" from the `DatabaseMetaData`, or an empty error codes instance if no `SQLErrorCodes` were found.

  Parameters:
    `dataSource` - the `DataSource` identifying the database
  Returns:
    the corresponding `SQLErrorCodes` object
  See Also:
    `DatabaseMetaData.getDatabaseProductName()`

### registerDatabase

    public SQLErrorCodes registerDatabase(DataSource dataSource,
                                          String dbName)

  Associate the specified database name with the given `DataSource`.

  Parameters:
    `dataSource` - the `DataSource` identifying the database
    `dbName` - the corresponding database name as stated in the error codes definition file (must not be `null`)
  Returns:
    the corresponding `SQLErrorCodes` object