This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch version3
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/version3 by this push:
new cd6b35a EMPIREDB-362 DBSqlPhrase enum
cd6b35a is described below
commit cd6b35ac29dc0c395ae90097ff1b0477f931aba4
Author: Rainer Döbele <[email protected]>
AuthorDate: Sun Jan 23 19:17:07 2022 +0100
EMPIREDB-362 DBSqlPhrase enum
---
.../main/java/org/apache/empire/db/DBColumn.java | 2 +-
.../java/org/apache/empire/db/DBColumnExpr.java | 60 +++++++--------
.../main/java/org/apache/empire/db/DBCommand.java | 4 +-
.../java/org/apache/empire/db/DBDDLGenerator.java | 2 +-
.../main/java/org/apache/empire/db/DBDatabase.java | 21 +++---
.../org/apache/empire/db/DBDatabaseDriver.java | 65 +----------------
.../java/org/apache/empire/db/DBDriverFeature.java | 2 -
.../main/java/org/apache/empire/db/DBRelation.java | 2 +-
.../main/java/org/apache/empire/db/DBRowSet.java | 2 +-
.../java/org/apache/empire/db/DBSqlPhrase.java | 85 ++++++++++++++++++++++
.../empire/db/driver/DBDatabaseDriverBase.java | 39 ++++------
.../db/driver/derby/DBDatabaseDriverDerby.java | 9 ++-
.../empire/db/driver/h2/DBDatabaseDriverH2.java | 9 ++-
.../db/driver/hsql/DBDatabaseDriverHSql.java | 9 ++-
.../db/driver/mysql/DBDatabaseDriverMySQL.java | 9 ++-
.../db/driver/oracle/DBDatabaseDriverOracle.java | 13 ++--
.../postgresql/DBDatabaseDriverPostgreSQL.java | 9 ++-
.../db/driver/sqlite/DBDatabaseDriverSQLite.java | 12 +--
.../db/driver/sqlserver/DBDatabaseDriverMSSQL.java | 13 ++--
.../apache/empire/db/expr/column/DBAliasExpr.java | 9 ++-
.../apache/empire/db/expr/column/DBConcatExpr.java | 10 +--
.../apache/empire/db/expr/column/DBDecodeExpr.java | 19 ++---
.../apache/empire/db/expr/column/DBFuncExpr.java | 7 +-
.../test/java/org/apache/empire/db/MockDriver.java | 2 +-
24 files changed, 218 insertions(+), 196 deletions(-)
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
index 5eb9909..089011e 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
@@ -251,7 +251,7 @@ public abstract class DBColumn extends DBColumnExpr
if (driver==null)
throw new DatabaseNotOpenException(getDatabase());
// Append the name
- driver.appendElementName(buf, name, quoteName);
+ driver.appendObjectName(buf, name, quoteName);
}
/**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
index 647ad13..13cf611 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
@@ -378,7 +378,7 @@ public abstract class DBColumnExpr extends DBExpr
public DBCompareColExpr like(String value, char escape)
{
DBValueExpr textExpr = new DBValueExpr(getDatabase(), value,
DataType.VARCHAR);
- DBFuncExpr escapeExpr = new DBFuncExpr(textExpr,
DBDatabaseDriver.SQL_FUNC_ESCAPE, new Object[] { String.valueOf(escape) },
getUpdateColumn(), false, DataType.VARCHAR );
+ DBFuncExpr escapeExpr = new DBFuncExpr(textExpr,
DBSqlPhrase.SQL_FUNC_ESCAPE, new Object[] { String.valueOf(escape) },
getUpdateColumn(), false, DataType.VARCHAR );
return cmp(DBCmpType.LIKE, escapeExpr);
}
@@ -658,12 +658,12 @@ public abstract class DBColumnExpr extends DBExpr
* @param dataType the resulting data Type
* @return the new DBCalcExpr object
*/
- protected DBColumnExpr getExprFromPhrase(int phrase, Object[] params,
DBColumn updateColumn, boolean isAggregate, DataType dataType)
+ protected DBColumnExpr getExprFromPhrase(DBSqlPhrase phrase, Object[]
params, DBColumn updateColumn, boolean isAggregate, DataType dataType)
{
return new DBFuncExpr(this, phrase, params, updateColumn, isAggregate,
dataType);
}
- protected DBColumnExpr getExprFromPhrase(int phrase, Object[] params,
DBColumn updateColumn, boolean isAggregate)
+ protected DBColumnExpr getExprFromPhrase(DBSqlPhrase phrase, Object[]
params, DBColumn updateColumn, boolean isAggregate)
{
return getExprFromPhrase(phrase, params, updateColumn, isAggregate,
getDataType());
}
@@ -687,7 +687,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr coalesce(Object nullValue)
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_COALESCE, new
Object[] { nullValue }, getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_COALESCE, new Object[] {
nullValue }, getUpdateColumn(), false);
}
/**
@@ -698,7 +698,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr modulo(Object divisor)
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_MODULO, new
Object[] { divisor }, getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_MODULO, new Object[] {
divisor }, getUpdateColumn(), false);
}
/**
@@ -724,7 +724,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr substring(DBExpr pos)
{ // Get Expression
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_SUBSTRING, new
Object[] { pos }, getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_SUBSTRING, new Object[]
{ pos }, getUpdateColumn(), false);
}
/**
@@ -749,7 +749,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr substring(DBExpr pos, DBExpr count)
{ // Get Expression
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_SUBSTRINGEX, new
Object[] { pos, count }, getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_SUBSTRINGEX, new
Object[] { pos, count }, getUpdateColumn(), false);
}
/**
@@ -801,7 +801,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr replace(Object match, Object replace)
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_REPLACE, new
Object[] { match, replace }, getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_REPLACE, new Object[] {
match, replace }, getUpdateColumn(), false);
}
/**
@@ -811,7 +811,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr reverse()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_REVERSE, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_REVERSE, null,
getUpdateColumn(), false);
}
/**
@@ -821,7 +821,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr trim()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_TRIM, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_TRIM, null,
getUpdateColumn(), false);
}
/**
@@ -831,7 +831,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr trimLeft()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_LTRIM, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_LTRIM, null,
getUpdateColumn(), false);
}
/**
@@ -841,7 +841,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr trimRight()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_RTRIM, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_RTRIM, null,
getUpdateColumn(), false);
}
/**
@@ -852,7 +852,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr upper()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_UPPER, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_UPPER, null,
getUpdateColumn(), false);
}
/**
@@ -863,7 +863,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr lower()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_LOWER, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_LOWER, null,
getUpdateColumn(), false);
}
/**
@@ -875,7 +875,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr format(String format)
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_FORMAT, new
Object[] { format }, getUpdateColumn(), false, DataType.VARCHAR);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_FORMAT, new Object[] {
format }, getUpdateColumn(), false, DataType.VARCHAR);
}
/**
@@ -885,7 +885,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr length()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_LENGTH, null,
getUpdateColumn(), false, DataType.INTEGER);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_LENGTH, null,
getUpdateColumn(), false, DataType.INTEGER);
}
/**
@@ -897,7 +897,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr indexOf(Object str)
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_STRINDEX, new
Object[] { str }, getUpdateColumn(), false, DataType.INTEGER);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_STRINDEX, new Object[] {
str }, getUpdateColumn(), false, DataType.INTEGER);
}
/**
@@ -910,7 +910,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr indexOf(Object str, DBExpr fromPos)
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_STRINDEXFROM, new
Object[] { str, fromPos }, getUpdateColumn(), false, DataType.INTEGER);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_STRINDEXFROM, new
Object[] { str, fromPos }, getUpdateColumn(), false, DataType.INTEGER);
}
/**
@@ -933,7 +933,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr abs()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_ABS, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_ABS, null,
getUpdateColumn(), false);
}
/**
@@ -943,7 +943,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr floor()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_FLOOR, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_FLOOR, null,
getUpdateColumn(), false);
}
/**
@@ -953,7 +953,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr ceiling()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_CEILING, null,
getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_CEILING, null,
getUpdateColumn(), false);
}
/**
@@ -965,7 +965,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr round(int decimals)
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_ROUND, new Object[]
{ new Integer(decimals) }, getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_ROUND, new Object[] {
new Integer(decimals) }, getUpdateColumn(), false);
}
/**
@@ -977,7 +977,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr trunc(int decimals)
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_TRUNC, new Object[]
{ new Integer(decimals) }, getUpdateColumn(), false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_TRUNC, new Object[] {
new Integer(decimals) }, getUpdateColumn(), false);
}
/**
@@ -988,7 +988,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr year()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_YEAR, null, null,
false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_YEAR, null, null, false);
}
/**
@@ -999,7 +999,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr month()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_MONTH, null, null,
false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_MONTH, null, null,
false);
}
/**
@@ -1010,7 +1010,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr day()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_DAY, null, null,
false);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_DAY, null, null, false);
}
/**
@@ -1021,7 +1021,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr sum()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_SUM, null, null,
true);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_SUM, null, null, true);
}
/**
@@ -1032,7 +1032,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr min()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_MIN, null, null,
true);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_MIN, null, null, true);
}
/**
@@ -1043,7 +1043,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr max()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_MAX, null, null,
true);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_MAX, null, null, true);
}
/**
@@ -1054,7 +1054,7 @@ public abstract class DBColumnExpr extends DBExpr
*/
public DBColumnExpr avg()
{
- return getExprFromPhrase(DBDatabaseDriver.SQL_FUNC_AVG, null, null,
true);
+ return getExprFromPhrase(DBSqlPhrase.SQL_FUNC_AVG, null, null, true);
}
/**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
index eb8395b..8dc1c5a 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
@@ -39,8 +39,8 @@ import org.apache.empire.db.expr.set.DBSetExpr;
import org.apache.empire.exceptions.InternalException;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.ItemNotFoundException;
-import org.apache.empire.exceptions.UnspecifiedErrorException;
import org.apache.empire.exceptions.ObjectNotValidException;
+import org.apache.empire.exceptions.UnspecifiedErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1385,7 +1385,7 @@ public abstract class DBCommand extends DBCommandExpr
}
if (sep==false)
{ // add pseudo table or omitt from
- String pseudoTable =
db.getDriver().getSQLPhrase(DBDatabaseDriver.SQL_PSEUDO_TABLE);
+ String pseudoTable =
db.getDriver().getSQLPhrase(DBSqlPhrase.SQL_PSEUDO_TABLE);
if (StringUtils.isNotEmpty(pseudoTable))
{ // add pseudo table
buf.append(pseudoTable);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
b/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
index 45a0f6d..69c7ae2 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
@@ -612,7 +612,7 @@ public abstract class DBDDLGenerator<T extends
DBDatabaseDriver>
protected void appendElementName(StringBuilder sql, String name)
{
- driver.appendElementName(sql, name, null);
+ driver.appendObjectName(sql, name, null);
}
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
index b465123..ff39288 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
@@ -40,6 +40,7 @@ import org.apache.empire.db.DBRelation.DBCascadeAction;
import org.apache.empire.db.exceptions.DatabaseNotOpenException;
import org.apache.empire.db.exceptions.FieldIllegalValueException;
import org.apache.empire.db.exceptions.FieldNotNullException;
+import org.apache.empire.db.exceptions.FieldValueException;
import org.apache.empire.db.exceptions.FieldValueOutOfRangeException;
import org.apache.empire.db.exceptions.FieldValueTooLongException;
import org.apache.empire.db.expr.column.DBCaseWhenExpr;
@@ -47,9 +48,9 @@ import org.apache.empire.db.expr.column.DBValueExpr;
import org.apache.empire.db.expr.compare.DBCompareExpr;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.ItemExistsException;
-import org.apache.empire.exceptions.UnspecifiedErrorException;
import org.apache.empire.exceptions.NotSupportedException;
import org.apache.empire.exceptions.PropertyReadOnlyException;
+import org.apache.empire.exceptions.UnspecifiedErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -490,6 +491,12 @@ public abstract class DBDatabase extends DBObject
*/
public void appendQualifiedName(StringBuilder buf, String name, Boolean
quoteName)
{
+ // Schema
+ if (schema != null)
+ { // Add Schema
+ buf.append(schema);
+ buf.append(".");
+ }
// Check driver
if (driver==null)
{ // No driver attached!
@@ -497,18 +504,12 @@ public abstract class DBDatabase extends DBObject
buf.append(name);
return;
}
- // Schema
- if (schema != null)
- { // Add Schema
- buf.append(schema);
- buf.append(".");
- }
// Append the name
- driver.appendElementName(buf, name, quoteName);
+ driver.appendObjectName(buf, name, quoteName);
// Database Link
if (linkName!=null)
- { // Add Schema
-
buf.append(driver.getSQLPhrase(DBDatabaseDriver.SQL_DATABASE_LINK));
+ { // Add Link
+ buf.append(driver.getSQLPhrase(DBSqlPhrase.SQL_DATABASE_LINK));
buf.append(linkName);
}
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
index 7e5bd57..5ee61f3 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
@@ -30,65 +30,6 @@ import org.apache.empire.data.DataType;
*/
public interface DBDatabaseDriver
{
- // sql-phrases
- public static final int SQL_NULL_VALUE = 1; // Oracle: null
- public static final int SQL_PARAMETER = 2; // Oracle: ?
- public static final int SQL_RENAME_TABLE = 3; // Oracle: AS
- public static final int SQL_RENAME_COLUMN = 4; // Oracle: AS
- public static final int SQL_DATABASE_LINK = 5; // Oracle: @
- public static final int SQL_QUOTES_OPEN = 6; // Oracle: "; MSSQL: [
- public static final int SQL_QUOTES_CLOSE = 7; // Oracle: "; MSSQL: ]
- public static final int SQL_CONCAT_EXPR = 8; // Oracle: ||
- public static final int SQL_PSEUDO_TABLE = 9; // Oracle: "DUAL"
- // data types
- public static final int SQL_BOOLEAN_TRUE = 10; // Oracle: "'Y'";
MSSQL: "1"
- public static final int SQL_BOOLEAN_FALSE = 11; // Oracle: "'N'";
MSSQL: "0"
- public static final int SQL_CURRENT_DATE = 20; // Oracle: "sysdate"
- public static final int SQL_DATE_PATTERN = 21; // "yyyy-MM-dd" //
SimpleDateFormat
- public static final int SQL_DATE_TEMPLATE = 22; // Oracle:
"TO_DATE('{0}', 'YYYY-MM-DD')"
- public static final int SQL_DATETIME_PATTERN = 23; // "yyyy-MM-dd
HH:mm:ss.SSS" // SimpleDateFormat
- public static final int SQL_DATETIME_TEMPLATE = 24; // Oracle:
"TO_DATE('{0}', 'YYYY-MM-DD HH24:MI:SS')"
- public static final int SQL_CURRENT_TIMESTAMP = 25; // Oracle:
"systimestamp"
- public static final int SQL_TIMESTAMP_PATTERN = 26; // "yyyy-MM-dd
HH:mm:ss.SSS" // SimpleDateFormat
- public static final int SQL_TIMESTAMP_TEMPLATE= 27; // Oracle:
"TO_TIMESTAMP('{0}', 'YYYY.MM.DD HH24:MI:SS.FF')";
- // functions
- public static final int SQL_FUNC_COALESCE = 100; // Oracle: nvl(?, {0})
- public static final int SQL_FUNC_SUBSTRING = 101; // Oracle:
substr(?,{0})
- public static final int SQL_FUNC_SUBSTRINGEX = 102; // Oracle:
substr(?,{0},{1})
- public static final int SQL_FUNC_REPLACE = 103; // Oracle:
replace(?,{0},{1})
- public static final int SQL_FUNC_REVERSE = 104; // Oracle: reverse(?)
- public static final int SQL_FUNC_STRINDEX = 105; // Oracle: instr(?,
{0})
- public static final int SQL_FUNC_STRINDEXFROM= 106; // Oracle: instr(?,
{0}, {1})
- public static final int SQL_FUNC_LENGTH = 107; // Oracle:
length(?,{0})
- public static final int SQL_FUNC_UPPER = 110; // Oracle: upper(?)
- public static final int SQL_FUNC_LOWER = 111; // Oracle: lower(?)
- public static final int SQL_FUNC_TRIM = 112; // Oracle: trim(?)
- public static final int SQL_FUNC_LTRIM = 113; // Oracle: ltrim(?)
- public static final int SQL_FUNC_RTRIM = 114; // Oracle: rtrim(?)
- public static final int SQL_FUNC_ESCAPE = 119; // Oracle: ? escape
'{0}'
- // Numeric
- public static final int SQL_FUNC_ABS = 120; // Oracle: abs(?,{0})
- public static final int SQL_FUNC_ROUND = 121; // Oracle: round(?,
{0})
- public static final int SQL_FUNC_TRUNC = 122; // Oracle: trunc(?,
{0})
- public static final int SQL_FUNC_FLOOR = 123; // Oracle: floor(?)
- public static final int SQL_FUNC_CEILING = 124; // Oracle: ceil(?)
- public static final int SQL_FUNC_MODULO = 125; // Oracle: mod(?)
- public static final int SQL_FUNC_FORMAT = 126; // Oracle: TO_CHAR(?)
- // Date
- public static final int SQL_FUNC_DAY = 132; // MSSQL: month(?)
- public static final int SQL_FUNC_MONTH = 133; // MSSQL: month(?)
- public static final int SQL_FUNC_YEAR = 134; // MSSQL: year (?)
- // Aggregation
- public static final int SQL_FUNC_SUM = 140; // Oracle: sum(?)
- public static final int SQL_FUNC_MAX = 142; // Oracle: max(?)
- public static final int SQL_FUNC_MIN = 143; // Oracle: min(?)
- public static final int SQL_FUNC_AVG = 144; // Oracle: avg(?)
- // Decode
- public static final int SQL_FUNC_DECODE = 150; // Oracle: "decode(?
{0})" SQL: "case ?{0} end"
- public static final int SQL_FUNC_DECODE_SEP = 151; // Oracle: ","
SQL: " "
- public static final int SQL_FUNC_DECODE_PART = 152; // Oracle: "{0}, {1}"
SQL: "when {0} then {1}"
- public static final int SQL_FUNC_DECODE_ELSE = 153; // Oracle: "{0}"
SQL: "else {0}"
-
/**
* Called when a database is opened
@@ -131,7 +72,7 @@ public interface DBDatabaseDriver
* @param name the name of the object (table, view or column)
* @param useQuotes use quotes or not. When null is passed then
detectQuoteName() is called
*/
- void appendElementName(StringBuilder sql, String name, Boolean useQuotes);
+ void appendObjectName(StringBuilder sql, String name, Boolean useQuotes);
/**
* Returns an sql phrase template for this database system.<br>
@@ -141,7 +82,7 @@ public interface DBDatabaseDriver
* @param phrase the identifier of the phrase
* @return the phrase template
*/
- String getSQLPhrase(int phrase);
+ String getSQLPhrase(DBSqlPhrase phrase);
/**
* Returns a data type convertion phrase template for this driver<br>
@@ -283,7 +224,7 @@ public interface DBDatabaseDriver
* @param enable true to enable the relation or false to disable
* @param script the script to which to add the DDL command(s)
*/
- void addEnableRelationStmt(DBRelation r, boolean enable, DBSQLScript
script);
+ void appendEnableRelationStmt(DBRelation r, boolean enable, DBSQLScript
script);
/**
* Extracts native error message of an sqlExeption.
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
b/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
index 0378118..833c220 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
@@ -20,8 +20,6 @@ package org.apache.empire.db;
/**
* This enum is used with the DBDatabaseDriver::isSupported method to query
database driver capabilities.
- *
- *
*/
public enum DBDriverFeature {
// Support Flags used by DBDatabaseDriver::isSupported()
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRelation.java
b/empire-db/src/main/java/org/apache/empire/db/DBRelation.java
index a3ce20a..0486067 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRelation.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRelation.java
@@ -225,7 +225,7 @@ public class DBRelation extends DBObject
throw new InvalidArgumentException("context", context);
// get Statement
DBSQLScript script = new DBSQLScript(context);
- context.getDriver().addEnableRelationStmt(this, enable, script);
+ context.getDriver().appendEnableRelationStmt(this, enable, script);
if (script.getCount()!=1)
throw new UnexpectedReturnValueException(script.getCount(),
"driver.addEnableRelationStatement");
return script.getStmt(0);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
index ec8b6ad..0d27422 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
@@ -465,7 +465,7 @@ public abstract class DBRowSet extends DBExpr
{
if (db==null || db.getDriver()==null)
return " ";
- return db.getDriver().getSQLPhrase(DBDatabaseDriver.SQL_RENAME_TABLE);
+ return db.getDriver().getSQLPhrase(DBSqlPhrase.SQL_RENAME_TABLE);
}
/**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java
b/empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java
new file mode 100644
index 0000000..4f2e245
--- /dev/null
+++ b/empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java
@@ -0,0 +1,85 @@
+package org.apache.empire.db;
+
+/**
+ * Enum for all SQL phrases that may be supplied by the driver
+ * @author rainer
+ */
+public enum DBSqlPhrase
+{
+ // sql-phrases
+ SQL_NULL ("null"),
+ SQL_PARAMETER ("?"),
+ SQL_RENAME_TABLE ("AS"),
+ SQL_RENAME_COLUMN ("AS"),
+ SQL_DATABASE_LINK ("@"), // Oracle
+ SQL_QUOTES_OPEN ("\""), // MSSQL: [
+ SQL_QUOTES_CLOSE ("\""), // MSSQL: ]
+ SQL_CONCAT_EXPR ("+"), // Oracle: "||"
+ SQL_PSEUDO_TABLE (""), // Oracle: "DUAL"
+
+ // data types
+ SQL_BOOLEAN_TRUE ("1"), // Oracle Y
+ SQL_BOOLEAN_FALSE ("0"), // Oracle N
+ SQL_CURRENT_DATE ("sysdate"), // Oracle
+ SQL_DATE_PATTERN ("yyyy-MM-dd"), // SimpleDateFormat
+ SQL_DATE_TEMPLATE ("TO_DATE('{0}', 'YYYY-MM-DD')"), // MSSql:
convert(date, '{0}', 111)
+ SQL_DATETIME_PATTERN ("yyyy-MM-dd HH:mm:ss.SSS"), //
SimpleDateFormat
+ SQL_DATETIME_TEMPLATE ("TO_DATE('{0}', 'YYYY-MM-DD HH24:MI:SS')"), //
Oracle
+ SQL_CURRENT_TIMESTAMP ("systimestamp"), // Oracle
+ SQL_TIMESTAMP_PATTERN ("yyyy-MM-dd HH:mm:ss.SSS"), //
SimpleDateFormat
+ SQL_TIMESTAMP_TEMPLATE ("TO_TIMESTAMP('{0}', 'YYYY.MM.DD
HH24:MI:SS.FF')"), // Oracle
+
+ // functions
+ SQL_FUNC_COALESCE ("coalesce(?, {0})"), // Oracle: nvl(?, {0})
+ SQL_FUNC_SUBSTRING ("substring(?,{0})"), // Oracle:
substr(?,{0})
+ SQL_FUNC_SUBSTRINGEX ("substring(?, {0}, {1})"), // Oracle:
substr(?,{0},{1})
+ SQL_FUNC_REPLACE ("replace(?, {0}, {1})"), // Oracle:
replace(?,{0},{1})
+ SQL_FUNC_REVERSE ("reverse(?)"), // Oracle: reverse(?)
+ SQL_FUNC_STRINDEX ("charindex({0}, ?)"), // Oracle: instr(?,
{0})
+ SQL_FUNC_STRINDEXFROM ("charindex({0}, ?, {1})"), // Oracle: instr(?,
{0}, {1})
+ SQL_FUNC_LENGTH ("length(?)"), // MSSql: len(?)
+ SQL_FUNC_UPPER ("upper(?)"),
+ SQL_FUNC_LOWER ("lower(?)"),
+ SQL_FUNC_TRIM ("trim(?)"),
+ SQL_FUNC_LTRIM ("ltrim(?)"),
+ SQL_FUNC_RTRIM ("rtrim(?)"),
+ SQL_FUNC_ESCAPE ("? escape '{0}'"),
+
+ // Numeric
+ SQL_FUNC_ABS ("abs(?)"),
+ SQL_FUNC_ROUND ("round(?, {0})"),
+ SQL_FUNC_TRUNC ("trunc(?, {0})"),
+ SQL_FUNC_FLOOR ("floor(?)"),
+ SQL_FUNC_CEILING ("ceiling(?)"), // Oracle: ceil(?)
+ SQL_FUNC_MODULO ("((?) % {0})"), // Oracle: mod(?)
+ SQL_FUNC_FORMAT ("format(?, {0:VARCHAR})"), // Oracle: TO_CHAR(?,
{0:VARCHAR})
+
+ // Date
+ SQL_FUNC_DAY ("day(?)"), // Oracle: extract(day
from ?)
+ SQL_FUNC_MONTH ("month(?)"), // Oracle:
extract(month from ?)
+ SQL_FUNC_YEAR ("year(?)"), // Oracle:
extract(year from ?)
+
+ // Aggregation
+ SQL_FUNC_SUM ("sum(?)"),
+ SQL_FUNC_MAX ("max(?)"),
+ SQL_FUNC_MIN ("min(?)"),
+ SQL_FUNC_AVG ("avg(?)"),
+
+ // Decode
+ SQL_FUNC_DECODE ("case ? {0} end"), // Oracle: decode(?
{0})
+ SQL_FUNC_DECODE_SEP (" "), // Oracle: ,
+ SQL_FUNC_DECODE_PART ("when {0} then {1}"), // Oracle: {0}, {1}
+ SQL_FUNC_DECODE_ELSE ("else {0}"); // Oracle: {0}
+
+ private String sqlDefault;
+
+ private DBSqlPhrase(String sqlDefault)
+ {
+ this.sqlDefault = sqlDefault;
+ }
+
+ public String getSqlDefault()
+ {
+ return sqlDefault;
+ }
+}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
b/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
index c17778d..3fcfa10 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
@@ -52,6 +52,7 @@ import org.apache.empire.db.DBExpr;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBRelation;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.exceptions.EmpireSQLException;
@@ -297,30 +298,19 @@ public abstract class DBDatabaseDriverBase implements
DBDatabaseDriver
* @param useQuotes use quotes or not
*/
@Override
- public void appendElementName(StringBuilder sql, String name, Boolean
useQuotes)
+ public void appendObjectName(StringBuilder sql, String name, Boolean
useQuotes)
{
if (useQuotes==null)
useQuotes = detectQuoteName(name);
// Check whether to use quotes or not
if (useQuotes)
- sql.append(getSQLPhrase(DBDatabaseDriver.SQL_QUOTES_OPEN));
+ sql.append(getSQLPhrase(DBSqlPhrase.SQL_QUOTES_OPEN));
// Append Name
sql.append(name);
// End Quotes
if (useQuotes)
- sql.append(getSQLPhrase(DBDatabaseDriver.SQL_QUOTES_CLOSE));
+ sql.append(getSQLPhrase(DBSqlPhrase.SQL_QUOTES_CLOSE));
}
-
- /**
- * Returns an sql phrase template for this database system.<br>
- * Templates for sql function expressions must contain a '?' character
which will be
- * replaced by the current column expression.<br>
- * If other parameters are necessary the template must contain
placeholders like {0}, {1} etc.
- * @param phrase the identifier of the phrase
- * @return the phrase template
- */
- @Override
- public abstract String getSQLPhrase(int phrase);
/**
* Returns the next value of a named sequence The numbers are used for
fields of type DBExpr.DT_AUTOINC.<BR>
@@ -775,30 +765,28 @@ public abstract class DBDatabaseDriverBase implements
DBDatabaseDriver
}
if (ObjectUtils.isEmpty(value))
{ // null
- return getSQLPhrase(SQL_NULL_VALUE);
+ return getSQLPhrase(DBSqlPhrase.SQL_NULL);
}
// set string buffer
switch (type)
{
case DATE:
- return getSQLDateTimeString(value, SQL_DATE_TEMPLATE,
SQL_DATE_PATTERN, SQL_CURRENT_DATE);
+ return getSQLDateTimeString(value,
DBSqlPhrase.SQL_DATE_TEMPLATE, DBSqlPhrase.SQL_DATE_PATTERN,
DBSqlPhrase.SQL_CURRENT_DATE);
case DATETIME:
// Only date (without time) provided?
if (!DBDatabase.SYSDATE.equals(value) && !(value instanceof
Date) && ObjectUtils.lengthOf(value)<=10)
- return getSQLDateTimeString(value, SQL_DATE_TEMPLATE,
SQL_DATE_PATTERN, SQL_CURRENT_TIMESTAMP);
+ return getSQLDateTimeString(value,
DBSqlPhrase.SQL_DATE_TEMPLATE, DBSqlPhrase.SQL_DATE_PATTERN,
DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
// Complete Date-Time Object with time
- return getSQLDateTimeString(value, SQL_DATETIME_TEMPLATE,
SQL_DATETIME_PATTERN, SQL_CURRENT_TIMESTAMP);
+ return getSQLDateTimeString(value,
DBSqlPhrase.SQL_DATETIME_TEMPLATE, DBSqlPhrase.SQL_DATETIME_PATTERN,
DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
case TIMESTAMP:
- return getSQLDateTimeString(value, SQL_TIMESTAMP_TEMPLATE,
SQL_TIMESTAMP_PATTERN, SQL_CURRENT_TIMESTAMP);
+ return getSQLDateTimeString(value,
DBSqlPhrase.SQL_TIMESTAMP_TEMPLATE, DBSqlPhrase.SQL_TIMESTAMP_PATTERN,
DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
case VARCHAR:
case CHAR:
case CLOB:
case UNIQUEID:
- { // Text value
return getSQLTextString(type, value);
- }
case BOOL:
- { // Get Boolean value
+ // Get Boolean value
boolean boolVal = false;
if (value instanceof Boolean)
{ boolVal = ((Boolean) value).booleanValue();
@@ -807,8 +795,7 @@ public abstract class DBDatabaseDriverBase implements
DBDatabaseDriver
{ // Boolean from String
boolVal = stringToBoolean(value.toString());
}
- return getSQLPhrase((boolVal) ? SQL_BOOLEAN_TRUE :
SQL_BOOLEAN_FALSE);
- }
+ return getSQLPhrase((boolVal) ? DBSqlPhrase.SQL_BOOLEAN_TRUE :
DBSqlPhrase.SQL_BOOLEAN_FALSE);
case INTEGER:
case DECIMAL:
case FLOAT:
@@ -864,7 +851,7 @@ public abstract class DBDatabaseDriverBase implements
DBDatabaseDriver
* @param sqlCurrentDate
* @return
*/
- protected String getSQLDateTimeString(Object value, int sqlTemplate, int
sqlPattern, int sqlCurrentDate)
+ protected String getSQLDateTimeString(Object value, DBSqlPhrase
sqlTemplate, DBSqlPhrase sqlPattern, DBSqlPhrase sqlCurrentDate)
{
// is it a sysdate expression
if (DBDatabase.SYSDATE.equals(value))
@@ -1000,7 +987,7 @@ public abstract class DBDatabaseDriverBase implements
DBDatabaseDriver
* @param script the script to which to add the DDL command(s)
*/
@Override
- public void addEnableRelationStmt(DBRelation r, boolean enable,
DBSQLScript script)
+ public void appendEnableRelationStmt(DBRelation r, boolean enable,
DBSQLScript script)
{
if (enable)
getDDLScript(DBCmdType.CREATE, r, script);
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
b/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
index 5701744..286c6e2 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
@@ -31,6 +31,7 @@ import org.apache.empire.db.DBDatabaseDriver;
import org.apache.empire.db.DBDriverFeature;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.driver.DBDatabaseDriverBase;
@@ -176,12 +177,12 @@ public class DBDatabaseDriverDerby extends
DBDatabaseDriverBase
* @return the phrase template
*/
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
switch (phrase)
{
// sql-phrases
- case SQL_NULL_VALUE: return "null";
+ case SQL_NULL: return "null";
case SQL_PARAMETER: return " ? ";
case SQL_RENAME_TABLE: return " ";
case SQL_RENAME_COLUMN: return " AS ";
@@ -239,8 +240,8 @@ public class DBDatabaseDriverDerby extends
DBDatabaseDriverBase
case SQL_FUNC_DECODE_ELSE: return "else {0}";
// Not defined
default:
- log.error("SQL phrase " + phrase + " is not defined!");
- return "";
+ // log.warn("SQL phrase " + phrase.name() + " is not
defined!");
+ return phrase.getSqlDefault();
}
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
b/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
index 2e38021..5f9e8b3 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
@@ -31,6 +31,7 @@ import org.apache.empire.db.DBDatabaseDriver;
import org.apache.empire.db.DBDriverFeature;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.driver.DBDatabaseDriverBase;
@@ -223,12 +224,12 @@ public class DBDatabaseDriverH2 extends
DBDatabaseDriverBase
* @return the phrase template
*/
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
switch (phrase)
{
// sql-phrases
- case SQL_NULL_VALUE: return "null";
+ case SQL_NULL: return "null";
case SQL_PARAMETER: return " ? ";
case SQL_RENAME_TABLE: return " ";
case SQL_RENAME_COLUMN: return " AS ";
@@ -286,8 +287,8 @@ public class DBDatabaseDriverH2 extends DBDatabaseDriverBase
case SQL_FUNC_DECODE_ELSE: return "else {0}";
// Not defined
default:
- log.error("SQL phrase " + phrase + " is not defined!");
- return "";
+ // log.warn("SQL phrase " + phrase.name() + " is not
defined!");
+ return phrase.getSqlDefault();
}
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
b/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
index 87e797f..9eea6de 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
@@ -32,6 +32,7 @@ import org.apache.empire.db.DBDatabaseDriver;
import org.apache.empire.db.DBDriverFeature;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.driver.DBDatabaseDriverBase;
import org.apache.empire.db.exceptions.QueryNoResultException;
@@ -117,12 +118,12 @@ public class DBDatabaseDriverHSql extends
DBDatabaseDriverBase
* @return the phrase template
*/
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
switch (phrase)
{
// sql-phrases
- case SQL_NULL_VALUE: return "null";
+ case SQL_NULL: return "null";
case SQL_PARAMETER: return " ? ";
case SQL_RENAME_TABLE: return " ";
case SQL_RENAME_COLUMN: return " AS ";
@@ -180,8 +181,8 @@ public class DBDatabaseDriverHSql extends
DBDatabaseDriverBase
case SQL_FUNC_DECODE_ELSE: return "else {0}";
// Not defined
default:
- log.error("SQL phrase " + phrase + " is not defined!");
- return "";
+ // log.warn("SQL phrase " + phrase.name() + " is not
defined!");
+ return phrase.getSqlDefault();
}
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
b/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
index b0fe4ec..e6b2394 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
@@ -35,6 +35,7 @@ import org.apache.empire.db.DBDatabaseDriver;
import org.apache.empire.db.DBDriverFeature;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.driver.DBDatabaseDriverBase;
@@ -984,12 +985,12 @@ public class DBDatabaseDriverMySQL extends
DBDatabaseDriverBase
* @return the phrase template
*/
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
switch (phrase)
{
// sql-phrases
- case SQL_NULL_VALUE: return "null";
+ case SQL_NULL: return "null";
case SQL_PARAMETER: return " ? ";
case SQL_RENAME_TABLE: return " ";
case SQL_RENAME_COLUMN: return " AS ";
@@ -1047,8 +1048,8 @@ public class DBDatabaseDriverMySQL extends
DBDatabaseDriverBase
case SQL_FUNC_DECODE_ELSE: return "else {0}";
// Not defined
default:
- log.error("SQL phrase " + String.valueOf(phrase) + " is not
defined!");
- return "";
+ // log.warn("SQL phrase " + phrase.name() + " is not
defined!");
+ return phrase.getSqlDefault();
}
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
b/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
index f155c40..8660339 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
@@ -40,6 +40,7 @@ import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBReader;
import org.apache.empire.db.DBRelation;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.DBView;
@@ -150,12 +151,12 @@ public class DBDatabaseDriverOracle extends
DBDatabaseDriverBase
* @return the phrase template
*/
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
switch (phrase)
{
// sql-phrases
- case SQL_NULL_VALUE: return "null";
+ case SQL_NULL: return "null";
case SQL_PARAMETER: return " ? ";
case SQL_RENAME_TABLE: return " ";
case SQL_RENAME_COLUMN: return " AS ";
@@ -214,8 +215,8 @@ public class DBDatabaseDriverOracle extends
DBDatabaseDriverBase
case SQL_FUNC_DECODE_ELSE: return "{0}";
// Not defined
default:
- log.error("SQL phrase " + phrase + " is not defined!");
- return "";
+ // log.warn("SQL phrase " + phrase.name() + " is not
defined!");
+ return phrase.getSqlDefault();
}
}
@@ -403,10 +404,10 @@ public class DBDatabaseDriverOracle extends
DBDatabaseDriverBase
}
/**
- * @see DBDatabaseDriver#addEnableRelationStmt(DBRelation, boolean,
DBSQLScript)
+ * @see DBDatabaseDriver#appendEnableRelationStmt(DBRelation, boolean,
DBSQLScript)
*/
@Override
- public void addEnableRelationStmt(DBRelation r, boolean enable,
DBSQLScript script)
+ public void appendEnableRelationStmt(DBRelation r, boolean enable,
DBSQLScript script)
{
// ALTER TABLE {table.name} {ENABLE|DISABLE} CONSTRAINT {relation.name}
StringBuilder b = new StringBuilder();
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
b/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
index 45c6a74..8ae0229 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
@@ -35,6 +35,7 @@ import org.apache.empire.db.DBDatabaseDriver;
import org.apache.empire.db.DBDriverFeature;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.driver.DBDatabaseDriverBase;
import org.apache.empire.db.exceptions.EmpireSQLException;
@@ -325,12 +326,12 @@ public class DBDatabaseDriverPostgreSQL extends
DBDatabaseDriverBase
* @return the phrase template
*/
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
switch (phrase)
{
// sql-phrases
- case SQL_NULL_VALUE: return "null";
+ case SQL_NULL: return "null";
case SQL_PARAMETER: return " ? ";
case SQL_RENAME_TABLE: return " ";
case SQL_RENAME_COLUMN: return " AS ";
@@ -388,8 +389,8 @@ public class DBDatabaseDriverPostgreSQL extends
DBDatabaseDriverBase
case SQL_FUNC_DECODE_ELSE: return "else {0}";
// Not defined
default:
- log.error("SQL phrase " + String.valueOf(phrase) + " is not
defined!");
- return "";
+ // log.warn("SQL phrase " + phrase.name() + " is not
defined!");
+ return phrase.getSqlDefault();
}
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
index d9f1afd..9ae7336 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
@@ -41,6 +41,7 @@ import org.apache.empire.db.DBDriverFeature;
import org.apache.empire.db.DBJoinType;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.driver.DBDatabaseDriverBase;
import org.apache.empire.db.expr.join.DBColumnJoinExpr;
@@ -303,13 +304,12 @@ public class DBDatabaseDriverSQLite extends
DBDatabaseDriverBase
* @return the phrase template
*/
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
switch (phrase)
{
-
// sql-phrases
- case SQL_NULL_VALUE: return "null";
+ case SQL_NULL: return "null";
case SQL_PARAMETER: return " ? ";
case SQL_RENAME_TABLE: return " ";
case SQL_RENAME_COLUMN: return " AS ";
@@ -367,8 +367,8 @@ public class DBDatabaseDriverSQLite extends
DBDatabaseDriverBase
case SQL_FUNC_DECODE_ELSE: return "else {0}";
// Not defined
default:
- log.error("SQL phrase " + String.valueOf(phrase) + " is not
defined!");
- return "";
+ // log.warn("SQL phrase " + phrase.name() + " is not
defined!");
+ return phrase.getSqlDefault();
}
}
@@ -421,7 +421,7 @@ public class DBDatabaseDriverSQLite extends
DBDatabaseDriverBase
if (dataType == DataType.DATETIME || dataType == DataType.TIMESTAMP)
{
// SQLite does not have a Date type, or any kind of type :(
- String datePattern = getSQLPhrase(SQL_DATETIME_PATTERN);
+ String datePattern =
getSQLPhrase(DBSqlPhrase.SQL_DATETIME_PATTERN);
DateFormat dateFormat = new SimpleDateFormat(datePattern);
try
{
diff --git
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
index 5eb8384..5a5de91 100644
---
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
+++
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
@@ -37,6 +37,7 @@ import org.apache.empire.db.DBExpr;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBRelation;
import org.apache.empire.db.DBSQLScript;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.driver.DBDatabaseDriverBase;
@@ -289,12 +290,12 @@ public class DBDatabaseDriverMSSQL extends
DBDatabaseDriverBase
* @return the phrase template
*/
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
switch (phrase)
{
// sql-phrases
- case SQL_NULL_VALUE: return "null";
+ case SQL_NULL: return "null";
case SQL_PARAMETER: return " ? ";
case SQL_RENAME_TABLE: return " ";
case SQL_RENAME_COLUMN: return " AS ";
@@ -355,8 +356,8 @@ public class DBDatabaseDriverMSSQL extends
DBDatabaseDriverBase
case SQL_FUNC_DECODE_ELSE: return "else {0}";
// Not defined
default:
- log.error("SQL phrase " + String.valueOf(phrase) + " is not
defined!");
- return "";
+ // log.warn("SQL phrase " + phrase.name() + " is not
defined!");
+ return phrase.getSqlDefault();
}
}
@@ -521,10 +522,10 @@ public class DBDatabaseDriverMSSQL extends
DBDatabaseDriverBase
}
/**
- * @see DBDatabaseDriver#addEnableRelationStmt(DBRelation, boolean,
DBSQLScript)
+ * @see DBDatabaseDriver#appendEnableRelationStmt(DBRelation, boolean,
DBSQLScript)
*/
@Override
- public void addEnableRelationStmt(DBRelation r, boolean enable,
DBSQLScript script)
+ public void appendEnableRelationStmt(DBRelation r, boolean enable,
DBSQLScript script)
{
// ALTER TABLE {table.name} {CHECK|NOCHECK} CONSTRAINT {relation.name}
StringBuilder b = new StringBuilder();
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
index f963cb0..b3a644f 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
@@ -18,6 +18,8 @@
*/
package org.apache.empire.db.expr.column;
+import java.util.Set;
+
// Java
import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.DataType;
@@ -25,10 +27,9 @@ import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBDatabaseDriver;
+import org.apache.empire.db.DBSqlPhrase;
import org.w3c.dom.Element;
-import java.util.Set;
-
// XML
@@ -168,11 +169,11 @@ public class DBAliasExpr extends DBColumnExpr
expr.addSQL(buf, context);
// Rename
DBDatabaseDriver driver = getDatabase().getDriver();
- String asExpr =
driver.getSQLPhrase(DBDatabaseDriver.SQL_RENAME_COLUMN);
+ String asExpr = driver.getSQLPhrase(DBSqlPhrase.SQL_RENAME_COLUMN);
if (asExpr!=null)
{
buf.append(asExpr);
- driver.appendElementName(buf, alias, null);
+ driver.appendObjectName(buf, alias, null);
}
}
else
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
index 0446966..c22f1a5 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
@@ -18,19 +18,19 @@
*/
package org.apache.empire.db.expr.column;
+import java.text.MessageFormat;
+import java.util.Set;
+
// Java
import org.apache.empire.data.DataType;
import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBDatabase;
-import org.apache.empire.db.DBDatabaseDriver;
import org.apache.empire.db.DBExpr;
+import org.apache.empire.db.DBSqlPhrase;
import org.apache.empire.xml.XMLUtil;
import org.w3c.dom.Element;
-import java.text.MessageFormat;
-import java.util.Set;
-
/**
* This class is used for performing string concatenation in SQL<br>
@@ -142,7 +142,7 @@ public class DBConcatExpr extends DBColumnExpr
@Override
public void addSQL(StringBuilder buf, long context)
{ // Zusammenbauen
- String template =
getDatabase().getDriver().getSQLPhrase(DBDatabaseDriver.SQL_CONCAT_EXPR);
+ String template =
getDatabase().getDriver().getSQLPhrase(DBSqlPhrase.SQL_CONCAT_EXPR);
context &= ~CTX_ALIAS; // No column aliases
// Find Separator
int sep = template.indexOf('?');
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
index b6cae59..6923426 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
@@ -18,16 +18,17 @@
*/
package org.apache.empire.db.expr.column;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.DataType;
import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBDatabaseDriver;
import org.apache.empire.db.DBExpr;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
+import org.apache.empire.db.DBSqlPhrase;
/**
* This class is used to decode a set of keys to the corresponding target
values.
@@ -92,25 +93,25 @@ public class DBDecodeExpr extends DBAbstractFuncExpr
Object key = i.next();
Object val = valueMap.get(key);
- String part =
driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE_PART);
+ String part =
driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE_PART);
part = StringUtils.replaceAll(part, "{0}",
getObjectValue(expr.getDataType(), key, DBExpr.CTX_DEFAULT, ""));
part = StringUtils.replaceAll(part, "{1}",
getObjectValue(this.getDataType(), val, DBExpr.CTX_DEFAULT, ""));
-
inner.append(driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE_SEP));
+ inner.append(driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE_SEP));
inner.append(part);
}
// Generate other
if (elseExpr != null)
{ // Else
- String other =
driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE_ELSE);
+ String other =
driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE_ELSE);
other = StringUtils.replaceAll(other, "{0}",
getObjectValue(getDataType(), elseExpr, DBExpr.CTX_DEFAULT, ""));
-
inner.append(driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE_SEP));
+ inner.append(driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE_SEP));
inner.append(other);
}
DBValueExpr param = new DBValueExpr(getDatabase(), inner,
DataType.UNKNOWN);
// Set Params
- String template =
driver.getSQLPhrase(DBDatabaseDriver.SQL_FUNC_DECODE);
+ String template = driver.getSQLPhrase(DBSqlPhrase.SQL_FUNC_DECODE);
super.addSQL(sql, template, new Object[] { param }, context);
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
index d335aa7..dd358fe 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
@@ -25,6 +25,7 @@ import org.apache.empire.data.DataType;
import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBExpr;
+import org.apache.empire.db.DBSqlPhrase;
/**
@@ -43,7 +44,7 @@ public class DBFuncExpr extends DBAbstractFuncExpr
{
// *Deprecated* private static final long serialVersionUID = 1L;
- protected final int phrase;
+ protected final DBSqlPhrase phrase;
protected final Object[] params;
protected String template;
@@ -61,7 +62,7 @@ public class DBFuncExpr extends DBAbstractFuncExpr
* @param isAggregate indicates whether the function is an aggregate
function (sum, min, max, avg, ...)
* @param dataType indicates the data type of the function result
*/
- public DBFuncExpr(DBColumnExpr expr, int phrase, Object[] params, DBColumn
updateColumn, boolean isAggregate, DataType dataType)
+ public DBFuncExpr(DBColumnExpr expr, DBSqlPhrase phrase, Object[] params,
DBColumn updateColumn, boolean isAggregate, DataType dataType)
{
super(expr, updateColumn, isAggregate, dataType);
// Set Phrase and Params
@@ -87,7 +88,7 @@ public class DBFuncExpr extends DBAbstractFuncExpr
{
super(expr, updateColumn, isAggregate, dataType);
// Set Phrase and Params
- this.phrase = 0;
+ this.phrase = null;
this.params = params;
this.template = template;
}
diff --git a/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
b/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
index bc6d881..d6b7ee2 100644
--- a/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
+++ b/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
@@ -59,7 +59,7 @@ public class MockDriver extends DBDatabaseDriverBase {
}
@Override
- public String getSQLPhrase(int phrase)
+ public String getSQLPhrase(DBSqlPhrase phrase)
{
return null;
}