org.objectweb.jorm.mapper.rdb.adapter.api

Interface RdbAdapter

All Superinterfaces:
PreparedStatementAdapter, ResultsetAdapter, SequenceAdapter, TypeAdapter, ValueAsSQLStringAdapter
Known Subinterfaces:
RdbAdapter
Known Implementing Classes:
BasicRdbAdapter, CloudscapeAdapter, Db2Adapter, FirebirdAdapter, HsqlAdapter, MckoiAdapter, MysqlAdapter, Oracle8Adapter, OracleAdapter, PostgresAdapter, ProgressAdapter, SapdbAdapter, SqlserverAdapter, SybaseAdapter

public interface RdbAdapter
extends TypeAdapter, ResultsetAdapter, PreparedStatementAdapter, ValueAsSQLStringAdapter, SequenceAdapter

This interface permits to adapte the use of a JDBC driver and the SQL type for the non conformance of a Database.

Author:
S.Chassande-Barrioz

Field Summary

static int
NOSIZE

Fields inherited from interface org.objectweb.jorm.mapper.rdb.adapter.api.TypeAdapter

TYPECODE_BIGDECIMAL, TYPECODE_BIGINTEGER, TYPECODE_BOOLEAN, TYPECODE_BYTE, TYPECODE_BYTEARRAY, TYPECODE_CHAR, TYPECODE_CHARARRAY, TYPECODE_DATE, TYPECODE_DOUBLE, TYPECODE_FLOAT, TYPECODE_INT, TYPECODE_LONG, TYPECODE_OBJBOOLEAN, TYPECODE_OBJBYTE, TYPECODE_OBJCHAR, TYPECODE_OBJDOUBLE, TYPECODE_OBJFLOAT, TYPECODE_OBJINT, TYPECODE_OBJLONG, TYPECODE_OBJSHORT, TYPECODE_SERIALIZED, TYPECODE_SHORT, TYPECODE_STRING, TYPE_NAMES

Method Summary

void
escapeFunctionClose(StringBuffer function)
Modifies the end of a function expression for the escape syntax.
void
escapeFunctionOpen(StringBuffer function)
Modifies the start of a function expression for the escape syntax.
boolean
existTable(Connection connection, String tableName)
checks the table existence
boolean
existView(Connection connection, String viewName)
checks the view existence
int
fetchResultSetSize(ResultSet rs)
This method calculates the size of a result set window.
String
getColumnAliasExpr(String aliasName)
Returns a column alias expression.
String
getConcatExpression(String op1, String op2)
String
getFirstLocateExpression(String substring, String instring)
Returns the expression for searching the position of the first occurrence of a substring in a string.
String
getIndexedLocateExpression(String inputString, String substring, String fromIndex)
Returns the expression for searching the position of the first occurrence of a substring in a string starting from a given index.
String
getLengthOperator()
String
getName()
String
getQuery(String selectClause, List jts, String whereclause, int rangeFrom, int rangeSize)
Builds a query with join and table alias.
String
getSubqueryAlias()
In the case the subquery needs to be aliased (Postgres), returns a string to be appended to the subquery.
String
handleOrderBy(String query)
boolean
supportBatchPreparedStatement()
Indicates if the driver supports the batch of PreparedStatement
void
writeColumnAlias(String alias, StringBuffer sb)
Append a column alias to an SQL expression.
void
writeTableAlias(String alias, StringBuffer sb)
Append a table alias to an SQL expression.

Methods inherited from interface org.objectweb.jorm.mapper.rdb.adapter.api.PreparedStatementAdapter

setBigDecimal, setBigInteger, setBoolean, setByte, setByteArray, setChar, setCharArray, setDate, setDouble, setFloat, setInt, setLong, setNull, setOboolean, setObyte, setOchar, setOdouble, setOfloat, setOint, setOlong, setOshort, setSerialized, setShort, setString

Methods inherited from interface org.objectweb.jorm.mapper.rdb.adapter.api.ResultsetAdapter

getBigDecimal, getBigInteger, getBoolean, getByte, getByteArray, getChar, getCharArray, getDate, getDate, getDouble, getFloat, getInt, getLong, getOboolean, getObyte, getOchar, getOdouble, getOfloat, getOint, getOlong, getOshort, getSerialized, getShort, getString

Methods inherited from interface org.objectweb.jorm.mapper.rdb.adapter.api.SequenceAdapter

existSequence, getCreateSequence, getCreateSequence, getNextValInSequence

Methods inherited from interface org.objectweb.jorm.mapper.rdb.adapter.api.TypeAdapter

getSqlType, getSqlTypeCode, getSqlTypeCode

Methods inherited from interface org.objectweb.jorm.mapper.rdb.adapter.api.ValueAsSQLStringAdapter

getValueAsSQLString, getValueAsSQLString, getValueAsSQLString, getValueAsSQLString, getValueAsSQLString, getValueAsSQLString, getValueAsSQLString, getValueAsSQLString, getValueAsSQLString

Field Details

NOSIZE

public static final int NOSIZE

Field Value:
-1

Method Details

escapeFunctionClose

public void escapeFunctionClose(StringBuffer function)
Modifies the end of a function expression for the escape syntax.

The JDBC standard syntax is "fn{function}".

Parameters:
function - the function expression to be escaped


escapeFunctionOpen

public void escapeFunctionOpen(StringBuffer function)
Modifies the start of a function expression for the escape syntax.

The JDBC standard syntax is "fn{function}".

Parameters:
function - the function expression to be escaped


existTable

public boolean existTable(Connection connection,
                          String tableName)
            throws SQLException
checks the table existence

Parameters:
connection - is the JDBC connection to use
tableName - is the name of the table

Returns:
true if the table exists, otherwise false.


existView

public boolean existView(Connection connection,
                         String viewName)
            throws SQLException
checks the view existence

Parameters:
connection - is the JDBC connection to use
viewName - is the name of the view

Returns:
true if the view exists, otherwise false.


fetchResultSetSize

public int fetchResultSetSize(ResultSet rs)
            throws SQLException
This method calculates the size of a result set window. If this feature is not supported by a database or its jdbc driver, this method returns -1.

Parameters:
rs - the result set which the size must be returned


getColumnAliasExpr

public String getColumnAliasExpr(String aliasName)
Returns a column alias expression. To be used when constructing the string expression of a select clause. For example, most database recognize the syntax 'select A as ALIAS_FOR_A, B as ALIAS_FOR_B ... ' whereas Orabcle accepts the following syntax : 'select A "ALIAS_FOR_A", B "ALIAS_FOR_B" '

Parameters:
aliasName - the column alias


getConcatExpression

public String getConcatExpression(String op1,
                                  String op2)

Returns:
the use of the concat operator between two strings


getFirstLocateExpression

public String getFirstLocateExpression(String substring,
                                       String instring)
            throws RdbAdapterException
Returns the expression for searching the position of the first occurrence of a substring in a string.

Three main syntaxes are found: position(substr in str), locate(substr, srt) and instr(str, substr).

Parameters:
substring - The substring searched
instring - The string in which to search the substring

Returns:
The corresponding relational expression.


getIndexedLocateExpression

public String getIndexedLocateExpression(String inputString,
                                         String substring,
                                         String fromIndex)
            throws RdbAdapterException
Returns the expression for searching the position of the first occurrence of a substring in a string starting from a given index.

Two main syntaxes are found: instr() and locate()

Parameters:
inputString - The string in which to search the substring
substring - The substring searched
fromIndex - The index from which to start searching

Returns:
The corresponding relational expression.


getLengthOperator

public String getLengthOperator()
            throws RdbAdapterException

Returns:
the name of the length operator


getName

public String getName()

Returns:
The name of the RdbAdapter. This name is used in the factory to register the RdbAdapter instance. In addition it is supposes that the adapter is a part of the class name of the rdb adapter in respect to the following pattern: org.objectweb.jorm.mapper.rdb.XxxxAdapter where Xxxx is the adapter name with the upper first letter.


getQuery

public String getQuery(String selectClause,
                       List jts,
                       String whereclause,
                       int rangeFrom,
                       int rangeSize)
Builds a query with join and table alias. The implementation must use writeTableAlias(String StringBuffer) method.

Parameters:
selectClause - is a string representation of the select clause
jts - is the tables with their join
whereclause - is a string representation of the where clause
rangeFrom - is the rank of the first row to be returned in case of a range limit, starting at 0
rangeSize - is the number of rows to be returned in case of a range limit. The convention is that Integer.MAX_VALUE means no range limit.


getSubqueryAlias

public String getSubqueryAlias()
In the case the subquery needs to be aliased (Postgres), returns a string to be appended to the subquery.

Returns:
the String to be appended to the subquery


handleOrderBy

public String handleOrderBy(String query)


supportBatchPreparedStatement

public boolean supportBatchPreparedStatement()
Indicates if the driver supports the batch of PreparedStatement


writeColumnAlias

public void writeColumnAlias(String alias,
                             StringBuffer sb)
Append a column alias to an SQL expression. To be used when constructing the string expression of a select clause. For example, most database recognize the syntax 'select A as ALIAS_FOR_A, B as ALIAS_FOR_B ... ' whereas Orabcle accepts the following syntax : 'select A "ALIAS_FOR_A", B "ALIAS_FOR_B" '

Parameters:
alias - the column alias
sb - The StringBuffer into which to write the alias.


writeTableAlias

public void writeTableAlias(String alias,
                            StringBuffer sb)
Append a table alias to an SQL expression. To be used when constructing the string expression of a from clause. For example, most database recognize the syntax 'select ... from R as ALIAS_FOR_R, S as ALIAS_FOR_S ... ' whereas Orabcle accepts the following syntax : 'select ... from R ALIAS_FOR_R, S ALIAS_FOR_S ... '

Parameters:
alias - The table alias
sb - The StringBuffer into which to write the alias.