private OrmException translateException(final String task, final String sql, final Exception ex) { if (ex instanceof OrmException) { return (OrmException) ex; } if (ex instanceof SQLException) { return SpringBasedSQLStateSQLExceptionTranslator.doTranslate(task, sql, (SQLException) ex); } return new OrmSqlException(ex); }
public static OrmSqlException doTranslate(final String task, final String sql, final SQLException ex) { String sqlState = getSqlState(ex); if ((sqlState != null) && (sqlState.length() >= 2)) { String classCode = sqlState.substring(0, 2); if (BAD_SQL_GRAMMAR_CODES.contains(classCode)) { return new OrmSqlBadGrammarException(buildMessage(task, sql, ex), ex); } else if (DATA_INTEGRITY_VIOLATION_CODES.contains(classCode)) { return new OrmSqlDataIntegrityViolationException(buildMessage(task, sql, ex), ex); } else if (DATA_ACCESS_RESOURCE_FAILURE_CODES.contains(classCode)) { return new OrmSqlDataAccessResourceFailureException(buildMessage(task, sql, ex), ex); } else if (TRANSIENT_DATA_ACCESS_RESOURCE_CODES.contains(classCode)) { return new OrmSqlTransientDataAccessResourceException(buildMessage(task, sql, ex), ex); } else if (CONCURRENCY_FAILURE_CODES.contains(classCode)) { return new OrmSqlConcurrencyFailureException(buildMessage(task, sql, ex), ex); } } return new OrmSqlException(buildMessage(task, sql, ex), ex); }