org.dbunit.util
Class SQLHelper

java.lang.Object
  extended by org.dbunit.util.SQLHelper

public class SQLHelper
extends java.lang.Object

Helper for SQL-related stuff.
TODO: testcases, also think about refactoring so that methods are not static anymore (for better extensibility)

Since:
Nov 5, 2005
Version:
$Revision: 1134 $
Author:
Felipe Leme (dbunit@felipeal.net)

Field Summary
static java.lang.String DB_PRODUCT_SYBASE
          The database product name reported by Sybase JDBC drivers.
 
Method Summary
static boolean areEqualIgnoreNull(java.lang.String value1, java.lang.String value2, boolean caseSensitive)
          Compares the given values and returns true if they are equal.
static void close(java.sql.ResultSet resultSet)
          Closes the given result set in a null-safe way
static void close(java.sql.ResultSet rs, java.sql.Statement stmt)
          Close a result set and a prepared statement, checking for null references.
static void close(java.sql.Statement stmt)
          Close a SQL statement, checking for null references.
static java.lang.String correctCase(java.lang.String databaseIdentifier, java.sql.Connection connection)
          Corrects the case of the given String according to the way in which the database stores metadata.
static java.lang.String correctCase(java.lang.String databaseIdentifier, java.sql.DatabaseMetaData databaseMetaData)
          Corrects the case of the given String according to the way in which the database stores metadata.
static Column createColumn(java.sql.ResultSet resultSet, IDataTypeFactory dataTypeFactory, boolean datatypeWarning)
          Utility method to create a Column object from a SQL ResultSet object.
static java.lang.String getDatabaseInfo(java.sql.DatabaseMetaData metaData)
          Returns the database and JDBC driver information as pretty formatted string
static java.lang.String getPrimaryKeyColumn(java.sql.Connection conn, java.lang.String table)
          Gets the primary column for a table.
static boolean isSybaseDb(java.sql.DatabaseMetaData metaData)
          Detects whether or not the given metadata describes the connection to a Sybase database or not.
static void logDebugIfValueChanged(java.lang.String oldValue, java.lang.String newValue, java.lang.String message, java.lang.Class source)
          Checks whether two given values are unequal and if so print a log message (level DEBUG)
static void logInfoIfValueChanged(java.lang.String oldValue, java.lang.String newValue, java.lang.String message, java.lang.Class source)
          Checks whether two given values are unequal and if so print a log message (level DEBUG)
static boolean matches(java.sql.ResultSet resultSet, java.lang.String schema, java.lang.String table, boolean caseSensitive)
          Deprecated. since 2.4.4 - use IMetadataHandler.matches(ResultSet, String, String, String, String, boolean)
static boolean matches(java.sql.ResultSet resultSet, java.lang.String catalog, java.lang.String schema, java.lang.String table, java.lang.String column, boolean caseSensitive)
          Deprecated. since 2.4.4 - use IMetadataHandler.matches(ResultSet, String, String, String, String, boolean)
static void printAllTables(java.sql.DatabaseMetaData metaData, java.io.PrintStream outputStream)
          Utility method for debugging to print all tables of the given metadata on the given stream
static void printDatabaseInfo(java.sql.DatabaseMetaData metaData, java.io.PrintStream outputStream)
          Prints the database and JDBC driver information to the given output stream
static boolean schemaExists(java.sql.Connection connection, java.lang.String schema)
          Returns true if the given schema exists for the given connection.
static boolean tableExists(java.sql.DatabaseMetaData metaData, java.lang.String schema, java.lang.String tableName)
          Deprecated. since 2.4.5 - use IMetadataHandler.tableExists(DatabaseMetaData, String, String)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DB_PRODUCT_SYBASE

public static final java.lang.String DB_PRODUCT_SYBASE
The database product name reported by Sybase JDBC drivers.

See Also:
Constant Field Values
Method Detail

getPrimaryKeyColumn

public static java.lang.String getPrimaryKeyColumn(java.sql.Connection conn,
                                                   java.lang.String table)
                                            throws java.sql.SQLException
Gets the primary column for a table.

Parameters:
conn - connection with the database
table - table name
Returns:
name of primary column for a table (assuming it's just 1 column).
Throws:
java.sql.SQLException - raised while getting the meta data

close

public static void close(java.sql.ResultSet rs,
                         java.sql.Statement stmt)
                  throws java.sql.SQLException
Close a result set and a prepared statement, checking for null references.

Parameters:
rs - result set to be closed
stmt - prepared statement to be closed
Throws:
java.sql.SQLException - exception raised in either close() method

close

public static void close(java.sql.Statement stmt)
                  throws java.sql.SQLException
Close a SQL statement, checking for null references.

Parameters:
stmt - statement to be closed
Throws:
java.sql.SQLException - exception raised while closing the statement

close

public static void close(java.sql.ResultSet resultSet)
                  throws java.sql.SQLException
Closes the given result set in a null-safe way

Parameters:
resultSet -
Throws:
java.sql.SQLException

schemaExists

public static boolean schemaExists(java.sql.Connection connection,
                                   java.lang.String schema)
                            throws java.sql.SQLException
Returns true if the given schema exists for the given connection.

Parameters:
connection - The connection to a database
schema - The schema to be searched
Returns:
Returns true if the given schema exists for the given connection.
Throws:
java.sql.SQLException
Since:
2.3.0

tableExists

public static boolean tableExists(java.sql.DatabaseMetaData metaData,
                                  java.lang.String schema,
                                  java.lang.String tableName)
                           throws java.sql.SQLException
Deprecated. since 2.4.5 - use IMetadataHandler.tableExists(DatabaseMetaData, String, String)

Checks if the given table exists.

Parameters:
metaData - The database meta data
schema - The schema in which the table should be searched. If null the schema is not used to narrow the table name.
tableName - The table name to be searched
Returns:
Returns true if the given table exists in the given schema. Else returns false.
Throws:
java.sql.SQLException
Since:
2.3.0

printAllTables

public static void printAllTables(java.sql.DatabaseMetaData metaData,
                                  java.io.PrintStream outputStream)
                           throws java.sql.SQLException
Utility method for debugging to print all tables of the given metadata on the given stream

Parameters:
metaData -
outputStream -
Throws:
java.sql.SQLException

getDatabaseInfo

public static java.lang.String getDatabaseInfo(java.sql.DatabaseMetaData metaData)
Returns the database and JDBC driver information as pretty formatted string

Parameters:
metaData - The JDBC database metadata needed to retrieve database information
Returns:
The database information as formatted string

printDatabaseInfo

public static void printDatabaseInfo(java.sql.DatabaseMetaData metaData,
                                     java.io.PrintStream outputStream)
                              throws java.sql.SQLException
Prints the database and JDBC driver information to the given output stream

Parameters:
metaData - The JDBC database metadata needed to retrieve database information
outputStream - The stream to which the information is printed
Throws:
java.sql.SQLException

isSybaseDb

public static boolean isSybaseDb(java.sql.DatabaseMetaData metaData)
                          throws java.sql.SQLException
Detects whether or not the given metadata describes the connection to a Sybase database or not.

Parameters:
metaData - The metadata to be checked whether it is a Sybase connection
Returns:
true if and only if the given metadata belongs to a Sybase database.
Throws:
java.sql.SQLException

createColumn

public static final Column createColumn(java.sql.ResultSet resultSet,
                                        IDataTypeFactory dataTypeFactory,
                                        boolean datatypeWarning)
                                 throws java.sql.SQLException,
                                        DataTypeException
Utility method to create a Column object from a SQL ResultSet object.

Parameters:
resultSet - A result set produced via DatabaseMetaData.getColumns(String, String, String, String)
dataTypeFactory - The factory used to lookup the DataType for this column
datatypeWarning - Whether or not a warning should be printed if the column could not be created because of an unknown datatype.
Returns:
The Column or null if the column could not be initialized because of an unknown datatype.
Throws:
java.sql.SQLException
DataTypeException
Since:
2.4.0

matches

public static boolean matches(java.sql.ResultSet resultSet,
                              java.lang.String schema,
                              java.lang.String table,
                              boolean caseSensitive)
                       throws java.sql.SQLException
Deprecated. since 2.4.4 - use IMetadataHandler.matches(ResultSet, String, String, String, String, boolean)

Checks if the given resultSet matches the given schema and table name. The comparison is case sensitive.

Parameters:
resultSet - A result set produced via DatabaseMetaData.getColumns(String, String, String, String)
schema - The name of the schema to check. If null it is ignored in the comparison
table - The name of the table to check. If null it is ignored in the comparison
caseSensitive - Whether or not the comparison should be case sensitive or not
Returns:
true if the column metadata of the given resultSet matches the given schema and table parameters.
Throws:
java.sql.SQLException
Since:
2.4.0

matches

public static boolean matches(java.sql.ResultSet resultSet,
                              java.lang.String catalog,
                              java.lang.String schema,
                              java.lang.String table,
                              java.lang.String column,
                              boolean caseSensitive)
                       throws java.sql.SQLException
Deprecated. since 2.4.4 - use IMetadataHandler.matches(ResultSet, String, String, String, String, boolean)

Checks if the given resultSet matches the given schema and table name. The comparison is case sensitive.

Parameters:
resultSet - A result set produced via DatabaseMetaData.getColumns(String, String, String, String)
catalog - The name of the catalog to check. If null it is ignored in the comparison
schema - The name of the schema to check. If null it is ignored in the comparison
table - The name of the table to check. If null it is ignored in the comparison
column - The name of the column to check. If null it is ignored in the comparison
caseSensitive - Whether or not the comparison should be case sensitive or not
Returns:
true if the column metadata of the given resultSet matches the given schema and table parameters.
Throws:
java.sql.SQLException
Since:
2.4.0

areEqualIgnoreNull

public static final boolean areEqualIgnoreNull(java.lang.String value1,
                                               java.lang.String value2,
                                               boolean caseSensitive)
Compares the given values and returns true if they are equal. If the first value is null or empty String it always returns true which is the way of ignoring nulls for this specific case.

Parameters:
value1 - The first value to compare. Is ignored if null or empty String
value2 - The second value to be compared
Returns:
true if both values are equal or if the first value is null or empty string.
Since:
2.4.4

correctCase

public static final java.lang.String correctCase(java.lang.String databaseIdentifier,
                                                 java.sql.Connection connection)
Corrects the case of the given String according to the way in which the database stores metadata.

Parameters:
databaseIdentifier - A database identifier such as a table name or a schema name for which the case should be corrected.
connection - The connection used to lookup the database metadata. This is needed to determine the way in which the database stores its metadata.
Returns:
The database identifier in the correct case for the RDBMS
Since:
2.4.4

correctCase

public static final java.lang.String correctCase(java.lang.String databaseIdentifier,
                                                 java.sql.DatabaseMetaData databaseMetaData)
Corrects the case of the given String according to the way in which the database stores metadata.

Parameters:
databaseIdentifier - A database identifier such as a table name or a schema name for which the case should be corrected.
databaseMetaData - The database metadata needed to determine the way in which the database stores its metadata.
Returns:
The database identifier in the correct case for the RDBMS
Since:
2.4.4

logInfoIfValueChanged

public static final void logInfoIfValueChanged(java.lang.String oldValue,
                                               java.lang.String newValue,
                                               java.lang.String message,
                                               java.lang.Class source)
Checks whether two given values are unequal and if so print a log message (level DEBUG)

Parameters:
oldValue - The old value of a property
newValue - The new value of a property
message - The message to be logged
source - The class which invokes this method - used for enriching the log message
Since:
2.4.4

logDebugIfValueChanged

public static final void logDebugIfValueChanged(java.lang.String oldValue,
                                                java.lang.String newValue,
                                                java.lang.String message,
                                                java.lang.Class source)
Checks whether two given values are unequal and if so print a log message (level DEBUG)

Parameters:
oldValue - The old value of a property
newValue - The new value of a property
message - The message to be logged
source - The class which invokes this method - used for enriching the log message
Since:
2.4.8


Copyright © 2002-2010. All Rights Reserved.