org.springframework.jdbc.support
Class SQLErrorCodeSQLExceptionTranslator

java.lang.Object
  extended byorg.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator
All Implemented Interfaces:
SQLExceptionTranslator

public class SQLErrorCodeSQLExceptionTranslator
extends Object
implements SQLExceptionTranslator

Implementation of SQLExceptionTranslator that uses specific vendor codes. More precise than SQL state implementation, but vendor-specific.

This class applies the following matching rules:

Author:
Rod Johnson, Thomas Risberg, Juergen Hoeller
See Also:
SQLErrorCodesFactory, SQLStateSQLExceptionTranslator

Field Summary
protected  Log logger
           
 
Constructor Summary
SQLErrorCodeSQLExceptionTranslator()
          Constructor for use as a JavaBean.
SQLErrorCodeSQLExceptionTranslator(DataSource dataSource)
          Create a SQL error code translator for the given DataSource.
SQLErrorCodeSQLExceptionTranslator(SQLErrorCodes sec)
          Create a SQLErrorCode translator given these error codes.
 
Method Summary
protected  DataAccessException createCustomException(String task, String sql, SQLException sqlEx, Class exceptionClass)
          Create a custom DataAccessException, based on a given exception class from a CustomSQLErrorCodesTranslation definition.
protected  DataAccessException customTranslate(String task, String sql, SQLException sqlEx)
          Subclasses can override this method to attempt a custom mapping from SQLException to DataAccessException.
 SQLExceptionTranslator getFallbackTranslator()
          Return the fallback exception translator.
 SQLErrorCodes getSqlErrorCodes()
          Return the error codes used by this translator.
 void setDataSource(DataSource dataSource)
          Set the DataSource for this translator.
 void setFallbackTranslator(SQLExceptionTranslator fallback)
          Override the default SQL state fallback translator.
 void setSqlErrorCodes(SQLErrorCodes sec)
          Set custom error codes to be used for translation.
 DataAccessException translate(String task, String sql, SQLException sqlEx)
          Translate the given SQL exception into a generic data access exception.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final Log logger
Constructor Detail

SQLErrorCodeSQLExceptionTranslator

public SQLErrorCodeSQLExceptionTranslator()
Constructor for use as a JavaBean. The SqlErrorCodes or DataSource property must be set.


SQLErrorCodeSQLExceptionTranslator

public SQLErrorCodeSQLExceptionTranslator(DataSource dataSource)
Create a SQL error code translator for the given DataSource. Invoking this constructor will cause a connection to be obtained from the DataSource to get the metadata.

Parameters:
dataSource - DataSource to use to find metadata and establish which error codes are usable
See Also:
SQLErrorCodesFactory

SQLErrorCodeSQLExceptionTranslator

public SQLErrorCodeSQLExceptionTranslator(SQLErrorCodes sec)
Create a SQLErrorCode translator given these error codes. Does not require a database metadata lookup to be performed using a connection.

Parameters:
sec - error codes
Method Detail

setDataSource

public void setDataSource(DataSource dataSource)
Set the DataSource for this translator.

Setting this property will cause a connection to be obtained from the DataSource to get the metadata.

Parameters:
dataSource - DataSource to use to find metadata and establish which error codes are usable
See Also:
SQLErrorCodesFactory

setSqlErrorCodes

public void setSqlErrorCodes(SQLErrorCodes sec)
Set custom error codes to be used for translation.

Parameters:
sec - custom error codes to use

getSqlErrorCodes

public SQLErrorCodes getSqlErrorCodes()
Return the error codes used by this translator. Usually determined via a DataSource.

See Also:
setDataSource(javax.sql.DataSource)

setFallbackTranslator

public void setFallbackTranslator(SQLExceptionTranslator fallback)
Override the default SQL state fallback translator.

Parameters:
fallback - custom fallback exception translator to use if error code translation fails
See Also:
SQLStateSQLExceptionTranslator

getFallbackTranslator

public SQLExceptionTranslator getFallbackTranslator()
Return the fallback exception translator.


translate

public DataAccessException translate(String task,
                                     String sql,
                                     SQLException sqlEx)
Description copied from interface: SQLExceptionTranslator
Translate the given SQL exception into a generic data access exception.

Specified by:
translate in interface SQLExceptionTranslator
Parameters:
task - readable text describing the task being attempted
sql - SQL query or update that caused the problem. May be null.
sqlEx - the offending SQLException
Returns:
the DataAccessException to throw

customTranslate

protected DataAccessException customTranslate(String task,
                                              String sql,
                                              SQLException sqlEx)
Subclasses can override this method to attempt a custom mapping from SQLException to DataAccessException.

Parameters:
task - readable text describing the task being attempted
sql - SQL query or update that caused the problem. May be null.
sqlEx - the offending SQLException
Returns:
null if no custom translation was possible, otherwise a DataAccessException resulting from custom translation. This exception should include the sqlEx parameter as a nested root cause. This implementation always returns null, meaning that the translator always falls back to the default error codes.

createCustomException

protected DataAccessException createCustomException(String task,
                                                    String sql,
                                                    SQLException sqlEx,
                                                    Class exceptionClass)
Create a custom DataAccessException, based on a given exception class from a CustomSQLErrorCodesTranslation definition.

Parameters:
task - readable text describing the task being attempted
sql - SQL query or update that caused the problem. May be null.
sqlEx - the offending SQLException
exceptionClass - the exception class to use, as defined in the CustomSQLErrorCodesTranslation definition
Returns:
null if the custom exception could not be created, otherwise the resulting DataAccessException. This exception should include the sqlEx parameter as a nested root cause.
See Also:
CustomSQLErrorCodesTranslation.setExceptionClass(java.lang.Class)


Copyright (C) 2003-2004 The Spring Framework Project.