You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2008/08/29 17:25:36 UTC
svn commit: r690298 - in /incubator/empire-db/trunk/core/Empire-db: ./
src/org/apache/empire/db/ src/org/apache/empire/db/hsql/
src/org/apache/empire/db/mysql/ src/org/apache/empire/db/oracle/
src/org/apache/empire/db/sqlserver/ src/org/apache/empire/xml/
Author: doebele
Date: Fri Aug 29 08:25:33 2008
New Revision: 690298
URL: http://svn.apache.org/viewvc?rev=690298&view=rev
Log:
EMPIREDB-6
Modified:
incubator/empire-db/trunk/core/Empire-db/CHANGELOG.txt
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumn.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumnExpr.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabase.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabaseDriver.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBTable.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java
incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/xml/XMLUtil.java
Modified: incubator/empire-db/trunk/core/Empire-db/CHANGELOG.txt
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/CHANGELOG.txt?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/CHANGELOG.txt (original)
+++ incubator/empire-db/trunk/core/Empire-db/CHANGELOG.txt Fri Aug 29 08:25:33 2008
@@ -2,6 +2,11 @@
Copyright 2008 The Apache Software Foundation
--------------
+Release 2.0.4:
+--------------
+EMPIREDB-6: Support for spaces and dashes in table, view and column names added.
+
+--------------
Release 2.0.3:
--------------
EMPIREDB-5: Added missing ASF headers. See JIRA for further information.
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumn.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumn.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumn.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumn.java Fri Aug 29 08:25:33 2008
@@ -51,8 +51,6 @@
protected final String name;
protected String comment;
- protected boolean useQuotes = false;
-
/**
* Constructs a DBColumn object and set the specified parameters to this object.
*
@@ -87,15 +85,6 @@
*/
public abstract boolean isReadOnly();
- /**
- * @return Returns true if the column will be surrounded by quotes.
- */
- public boolean isUseQuotes()
- {
- return useQuotes;
- }
-
-
public abstract boolean checkValue(Object value);
@Override
@@ -129,19 +118,15 @@
@Override
public void addSQL(StringBuilder buf, long context)
{
- // Use alias if no select
- if ((context & CTX_FULLNAME) != 0 && rowset != null)
- { // Fully Qualified Name
+ // Append rowset alias
+ if ((context & CTX_FULLNAME) != 0)
+ { // Fully Qualified Name
buf.append(rowset.getAlias());
buf.append(".");
}
- // Use Quotes
- if (useQuotes)
- buf.append("\"");
- buf.append(name);
- // Use Quotes
- if (useQuotes)
- buf.append("\"");
+ // Append the name
+ DBDatabaseDriver driver = getDatabaseDriver();
+ driver.appendElementName(buf, name);
}
/**
@@ -261,14 +246,5 @@
{
this.comment = comment;
}
-
- /**
- * If set to TRUE, the column will be surronded by quotation marks in the SQL.
- *
- * @param useQuotes flag to set quotes
- */
- public void setUseQuotes(boolean useQuotes)
- {
- this.useQuotes = useQuotes;
- }
+
}
\ No newline at end of file
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumnExpr.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumnExpr.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumnExpr.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBColumnExpr.java Fri Aug 29 08:25:33 2008
@@ -56,6 +56,16 @@
protected Attributes attributes = null;
protected Options options = null;
protected String beanPropertyName = null;
+
+ /**
+ * returns the Database driver or null if the Expression is not attached to an open database<BR/>
+ * This function is intended for convenience only.
+ */
+ protected final DBDatabaseDriver getDatabaseDriver()
+ {
+ DBDatabase db = getDatabase();
+ return (db!=null) ? db.getDriver() : null;
+ }
/**
* Returns the data type of this column expression.
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabase.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabase.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabase.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabase.java Fri Aug 29 08:25:33 2008
@@ -284,15 +284,23 @@
*/
public void appendQualifiedName(StringBuilder buf, String name)
{
+ // Check driver
+ if (driver==null)
+ { // No driver attached!
+ error(Errors.ObjectNotValid, name);
+ buf.append(name);
+ return;
+ }
// Schema
- if (schema != null && driver!=null)
+ if (schema != null)
{ // Add Schema
buf.append(schema);
buf.append(".");
}
- buf.append(name);
+ // Append the name
+ driver.appendElementName(buf, name);
// Database Link
- if (linkName!=null && driver!=null)
+ if (linkName!=null)
{ // Add Schema
buf.append(driver.getSQLPhrase(DBDatabaseDriver.SQL_DATABASE_LINK));
buf.append(linkName);
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabaseDriver.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabaseDriver.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabaseDriver.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBDatabaseDriver.java Fri Aug 29 08:25:33 2008
@@ -45,14 +45,16 @@
{
// sql-phrases
public static final int SQL_NULL_VALUE = 1; // Oracle: null
- public static final int SQL_RENAME_COLUMN = 2; // Oracle: AS
- public static final int SQL_PARAMETER = 3; // Oracle: ?
- public static final int SQL_CONCAT_EXPR = 4; // Oracle: ||
- public static final int SQL_RENAME_TABLE = 5; // Oracle: AS
- public static final int SQL_DATABASE_LINK = 6; // Oracle: @
+ 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: ||
// data types
- public static final int SQL_BOOLEAN_TRUE = 10; // Oracle: "'Y'" SQL: "1"
- public static final int SQL_BOOLEAN_FALSE = 11; // Oracle: "'N'" SQL: "0"
+ 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"
public static final int SQL_DATE_TEMPLATE = 22; // Oracle: "TO_DATE('{0}', 'YYYY-MM-DD')"
@@ -81,9 +83,9 @@
public static final int SQL_FUNC_FLOOR = 123; // Oracle: floor(?)
public static final int SQL_FUNC_CEILING = 124; // Oracle: ceil(?)
// Date
- public static final int SQL_FUNC_DAY = 132; // MS SQL month(?)
- public static final int SQL_FUNC_MONTH = 133; // MS SQL month(?)
- public static final int SQL_FUNC_YEAR = 134; // MS SQL year (?)
+ 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_COUNT = 141; // Oracle: count(?)
@@ -206,6 +208,37 @@
* @return true if the features is supported or false otherwise
*/
public abstract boolean isSupported(DBDriverFeature type);
+
+ /**
+ * Checks wether a table or column name needs to be quoted or not<BR/>
+ * By default names containing a "-", "+" or " " require quoting.<BR/>
+ * Overrides this function to add database specific keywords like "user" or "count"
+ */
+ protected boolean quoteElementName(String name)
+ {
+ // Check for any of the characters - + and space
+ return (name.indexOf(' ')>0)
+ || (name.indexOf('-')>0)
+ || (name.indexOf('+')>0);
+ }
+
+ /**
+ * Appends a table, view or column name to an SQL phrase.
+ * @param sql the StringBuilder containing the SQL phrase.
+ * @param name the name of the object (table, view or column)
+ */
+ public void appendElementName(StringBuilder sql, String name)
+ {
+ // Check whether to use quotes or not
+ boolean useQuotes = quoteElementName(name);
+ if (useQuotes)
+ sql.append(getSQLPhrase(DBDatabaseDriver.SQL_QUOTES_OPEN));
+ // Append Name
+ sql.append(name);
+ // End Quotes
+ if (useQuotes)
+ sql.append(getSQLPhrase(DBDatabaseDriver.SQL_QUOTES_CLOSE));
+ }
/**
* Returns an sql phrase template for this database system.<br>
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBTable.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBTable.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBTable.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBTable.java Fri Aug 29 08:25:33 2008
@@ -278,15 +278,12 @@
@Override
public void addSQL(StringBuilder buf, long context)
{
- if ((context & CTX_FULLNAME)!=0 && db!=null)
- { // Add Schema
- db.appendQualifiedName(buf, name);
+ // Append Name
+ if ((context & CTX_NAME|CTX_FULLNAME)!=0)
+ { // Add Schema
+ db.appendQualifiedName(buf, name);
}
- else
- { // Simple Name only
- buf.append(name);
- }
- // Tables and Views?
+ // Append Alias
if ((context & CTX_ALIAS)!=0 && alias!=null)
{ // append alias
buf.append(getRenameTablePhrase());
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java Fri Aug 29 08:25:33 2008
@@ -113,11 +113,13 @@
{
// sql-phrases
case SQL_NULL_VALUE: return "null";
- case SQL_RENAME_COLUMN: return " AS ";
case SQL_PARAMETER: return " ? ";
- case SQL_CONCAT_EXPR: return "concat(?, {0})"; // " + " leads to problems if operands are case when statements that return empty string
case SQL_RENAME_TABLE: return " ";
+ case SQL_RENAME_COLUMN: return " AS ";
case SQL_DATABASE_LINK: return "@";
+ case SQL_QUOTES_OPEN: return "\"";
+ case SQL_QUOTES_CLOSE: return "\"";
+ case SQL_CONCAT_EXPR: return "concat(?, {0})"; // " + " leads to problems if operands are case when statements that return empty string
// data types
case SQL_BOOLEAN_TRUE: return String.valueOf(Boolean.TRUE);
case SQL_BOOLEAN_FALSE: return String.valueOf(Boolean.FALSE);
@@ -395,7 +397,7 @@
sql.append(t.getName());
sql.append(" --\r\n");
sql.append("CREATE TABLE ");
- sql.append(t.getFullName());
+ t.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
boolean addSeparator = false;
Iterator<DBColumn> columns = t.getColumns().iterator();
@@ -412,7 +414,7 @@
if (pk != null)
{ // add the primary key
sql.append(",\r\n CONSTRAINT ");
- sql.append(pk.getName());
+ appendElementName(sql, pk.getName());
sql.append(" PRIMARY KEY (");
addSeparator = false;
// columns
@@ -420,7 +422,7 @@
for (int i = 0; i < keyColumns.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(keyColumns[i].getName());
+ keyColumns[i].addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
sql.append(")");
@@ -440,9 +442,9 @@
// Cretae Index
sql.setLength(0);
sql.append((idx.getType() == DBIndex.UNIQUE) ? "CREATE UNIQUE INDEX " : "CREATE INDEX ");
- sql.append(idx.getFullName());
+ appendElementName(sql, idx.getName());
sql.append(" ON ");
- sql.append(t.getFullName());
+ t.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
addSeparator = false;
@@ -451,7 +453,7 @@
for (int i = 0; i < idxColumns.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(idxColumns[i].getName());
+ idxColumns[i].addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
sql.append(")");
@@ -471,7 +473,8 @@
*/
private boolean appendColumnDesc(DBTableColumn c, StringBuilder sql)
{
- sql.append(c.getName());
+ // Append name
+ c.addSQL(sql, DBExpr.CTX_NAME);
sql.append(" ");
switch (c.getDataType())
{
@@ -566,9 +569,9 @@
sql.append(r.getName());
sql.append(" --\r\n");
sql.append("ALTER TABLE ");
- sql.append(sourceTable.getFullName());
+ sourceTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" ADD CONSTRAINT ");
- sql.append(r.getFullName());
+ appendElementName(sql, r.getName());
sql.append(" FOREIGN KEY (");
// Source Names
boolean addSeparator = false;
@@ -576,19 +579,19 @@
for (int i = 0; i < refs.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(refs[i].getSourceColumn().getName());
+ refs[i].getSourceColumn().addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
// References
sql.append(") REFERENCES ");
- sql.append(targetTable.getFullName());
+ targetTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
// Target Names
addSeparator = false;
for (int i = 0; i < refs.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(refs[i].getTargetColumn().getName());
+ refs[i].getTargetColumn().addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
// done
@@ -607,9 +610,9 @@
sql.append(r.getName());
sql.append(" --\r\n");
sql.append("ALTER TABLE ");
- sql.append(sourceTable.getFullName());
+ sourceTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" DROP CONSTRAINT ");
- sql.append(r.getName());
+ appendElementName(sql, r.getName());
// done
return script.addStmt(sql.toString());
}
@@ -630,7 +633,7 @@
{
StringBuilder sql = new StringBuilder();
sql.append("ALTER TABLE ");
- sql.append(col.getRowSet().getName());
+ col.getRowSet().addSQL(sql, DBExpr.CTX_FULLNAME);
switch(type)
{
case CREATE:
@@ -673,13 +676,14 @@
// Build String
StringBuilder sql = new StringBuilder();
sql.append( "CREATE VIEW ");
- sql.append( v.getName() );
+ v.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append( " (" );
boolean addSeparator = false;
for(DBColumn c : v.getColumns())
{
if (addSeparator)
sql.append(", ");
+ // Add Column name
c.addSQL(sql, DBExpr.CTX_NAME);
// next
addSeparator = true;
@@ -704,7 +708,7 @@
sql.append("DROP ");
sql.append(objType);
sql.append(" ");
- sql.append(name);
+ appendElementName(sql, name);
// Done
return script.addStmt(sql);
}
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java Fri Aug 29 08:25:33 2008
@@ -203,11 +203,13 @@
{
// sql-phrases
case SQL_NULL_VALUE: return "null";
- case SQL_RENAME_COLUMN: return " AS ";
case SQL_PARAMETER: return " ? ";
- case SQL_CONCAT_EXPR: return "concat(?, {0})";
case SQL_RENAME_TABLE: return " ";
+ case SQL_RENAME_COLUMN: return " AS ";
case SQL_DATABASE_LINK: return "@";
+ case SQL_QUOTES_OPEN: return "\"";
+ case SQL_QUOTES_CLOSE: return "\"";
+ case SQL_CONCAT_EXPR: return "concat(?, {0})";
// data types
case SQL_BOOLEAN_TRUE: return "1";
case SQL_BOOLEAN_FALSE: return "0";
@@ -445,7 +447,7 @@
sql.append(t.getName());
sql.append(" --\r\n");
sql.append("CREATE TABLE ");
- sql.append(t.getFullName());
+ t.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
boolean addSeparator = false;
Iterator<DBColumn> columns = t.getColumns().iterator();
@@ -468,7 +470,7 @@
for (int i = 0; i < keyColumns.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(keyColumns[i].getName());
+ keyColumns[i].addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
sql.append(")");
@@ -496,9 +498,9 @@
// Cretae Index
sql.setLength(0);
sql.append((idx.getType() == DBIndex.UNIQUE) ? "CREATE UNIQUE INDEX " : "CREATE INDEX ");
- sql.append(idx.getFullName());
+ appendElementName(sql, idx.getName());
sql.append(" ON ");
- sql.append(t.getFullName());
+ t.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
addSeparator = false;
@@ -507,7 +509,7 @@
for (int i = 0; i < idxColumns.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(idxColumns[i].getName());
+ idxColumns[i].addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
sql.append(")");
@@ -527,7 +529,8 @@
*/
private boolean appendColumnDesc(DBTableColumn c, StringBuilder sql)
{
- sql.append(c.getName());
+ // Append name
+ c.addSQL(sql, DBExpr.CTX_NAME);
sql.append(" ");
switch (c.getDataType())
{
@@ -633,9 +636,9 @@
sql.append(r.getName());
sql.append(" --\r\n");
sql.append("ALTER TABLE ");
- sql.append(sourceTable.getFullName());
+ sourceTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" ADD CONSTRAINT ");
- sql.append(r.getFullName());
+ appendElementName(sql, r.getName());
sql.append(" FOREIGN KEY (");
// Source Names
boolean addSeparator = false;
@@ -643,19 +646,19 @@
for (int i = 0; i < refs.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(refs[i].getSourceColumn().getName());
+ refs[i].getSourceColumn().addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
// References
sql.append(") REFERENCES ");
- sql.append(targetTable.getFullName());
+ targetTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
// Target Names
addSeparator = false;
for (int i = 0; i < refs.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(refs[i].getTargetColumn().getName());
+ refs[i].getTargetColumn().addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
// done
@@ -677,7 +680,7 @@
{
StringBuilder sql = new StringBuilder();
sql.append("ALTER TABLE ");
- sql.append(col.getRowSet().getName());
+ col.getRowSet().addSQL(sql, DBExpr.CTX_FULLNAME);
switch(type)
{
case CREATE:
@@ -720,14 +723,15 @@
// Build String
StringBuilder sql = new StringBuilder();
sql.append( "CREATE VIEW ");
- sql.append( v.getName() );
+ v.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append( " (" );
boolean addSeparator = false;
for(DBColumn c : v.getColumns())
{
if (addSeparator)
sql.append(", ");
- sql.append(c.getName());
+ // Add Column name
+ c.addSQL(sql, DBExpr.CTX_NAME);
// next
addSeparator = true;
}
@@ -751,7 +755,7 @@
sql.append("DROP ");
sql.append(objType);
sql.append(" ");
- sql.append(name);
+ appendElementName(sql, name);
return script.addStmt(sql);
}
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java Fri Aug 29 08:25:33 2008
@@ -125,11 +125,13 @@
{
// sql-phrases
case SQL_NULL_VALUE: return "null";
- case SQL_RENAME_COLUMN: return " AS ";
case SQL_PARAMETER: return " ? ";
- case SQL_CONCAT_EXPR: return " || ";
case SQL_RENAME_TABLE: return " ";
+ case SQL_RENAME_COLUMN: return " AS ";
case SQL_DATABASE_LINK: return "@";
+ case SQL_QUOTES_OPEN: return "\"";
+ case SQL_QUOTES_CLOSE: return "\"";
+ case SQL_CONCAT_EXPR: return " || ";
// data types
case SQL_BOOLEAN_TRUE: return (booleanType==BooleanType.CHAR) ? "'Y'" : "1";
case SQL_BOOLEAN_FALSE: return (booleanType==BooleanType.CHAR) ? "'N'" : "0";
@@ -477,7 +479,7 @@
sql.append(t.getName());
sql.append(" --\r\n");
sql.append("CREATE TABLE ");
- sql.append(t.getFullName());
+ t.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
boolean addSeparator = false;
Iterator<DBColumn> columns = t.getColumns().iterator();
@@ -494,7 +496,7 @@
if (pk != null)
{ // add the primary key
sql.append(",\r\n CONSTRAINT ");
- sql.append(pk.getName());
+ appendElementName(sql, pk.getName());
sql.append(" PRIMARY KEY (");
addSeparator = false;
// columns
@@ -502,7 +504,7 @@
for (int i = 0; i < keyColumns.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(keyColumns[i].getName());
+ keyColumns[i].addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
sql.append(")");
@@ -523,9 +525,9 @@
// Cretae Index
sql.setLength(0);
sql.append((idx.getType() == DBIndex.UNIQUE) ? "CREATE UNIQUE INDEX " : "CREATE INDEX ");
- sql.append(idx.getFullName());
+ appendElementName(sql, idx.getName());
sql.append(" ON ");
- sql.append(t.getFullName());
+ t.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
addSeparator = false;
@@ -534,7 +536,7 @@
for (int i = 0; i < idxColumns.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(idxColumns[i].getName());
+ idxColumns[i].addSQL(sql, DBExpr.CTX_NAME);
sql.append("");
addSeparator = true;
}
@@ -544,14 +546,14 @@
return false;
}
// add Comments
- createComment(db, "TABLE", t.getFullName(), t.getComment(), script);
+ createComment(db, "TABLE", t, t.getComment(), script);
columns = t.getColumns().iterator();
while (columns.hasNext())
{
DBColumn c = columns.next();
String com = c.getComment();
if (com != null)
- createComment(db, "COLUMN", c.getFullName(), com, script);
+ createComment(db, "COLUMN", c, com, script);
}
// done
return success();
@@ -565,7 +567,8 @@
*/
private boolean appendColumnDesc(DBTableColumn c, StringBuilder sql)
{
- sql.append(c.getName());
+ // Append name
+ c.addSQL(sql, DBExpr.CTX_NAME);
sql.append(" ");
switch (c.getDataType())
{
@@ -659,9 +662,9 @@
sql.append(r.getName());
sql.append(" --\r\n");
sql.append("ALTER TABLE ");
- sql.append(sourceTable.getFullName());
+ sourceTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" ADD CONSTRAINT ");
- sql.append(r.getFullName());
+ appendElementName(sql, r.getName());
sql.append(" FOREIGN KEY (");
// Source Names
boolean addSeparator = false;
@@ -669,19 +672,19 @@
for (int i = 0; i < refs.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(refs[i].getSourceColumn().getName());
+ refs[i].getSourceColumn().addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
// References
sql.append(") REFERENCES ");
- sql.append(targetTable.getFullName());
+ targetTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
// Target Names
addSeparator = false;
for (int i = 0; i < refs.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(refs[i].getTargetColumn().getName());
+ refs[i].getTargetColumn().addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
// done
@@ -701,7 +704,7 @@
{
StringBuilder sql = new StringBuilder();
sql.append("ALTER TABLE ");
- sql.append(col.getRowSet().getName());
+ col.getRowSet().addSQL(sql, DBExpr.CTX_FULLNAME);
switch(type)
{
case CREATE:
@@ -744,14 +747,15 @@
// Build String
StringBuilder sql = new StringBuilder();
sql.append( "CREATE OR REPLACE VIEW ");
- sql.append( v.getName() );
+ v.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append( " (" );
boolean addSeparator = false;
for(DBColumn c : v.getColumns())
{
if (addSeparator)
sql.append(", ");
- sql.append(c.getName());
+ // Add Column name
+ c.addSQL(sql, DBExpr.CTX_NAME);
// next
addSeparator = true;
}
@@ -766,7 +770,7 @@
*
* @return true if the comment has been created successfully
*/
- private boolean createComment(DBDatabase db, String type, String objName, String comment, DBSQLScript script)
+ private boolean createComment(DBDatabase db, String type, DBExpr expr, String comment, DBSQLScript script)
{
if (comment==null || comment.length()==0)
return true;
@@ -774,7 +778,13 @@
sql.append("COMMENT ON ");
sql.append(type);
sql.append(" ");
- sql.append(objName);
+ if (expr instanceof DBColumn)
+ {
+ DBColumn c = (DBColumn)expr;
+ c.getRowSet().addSQL(sql, DBExpr.CTX_NAME);
+ sql.append(".");
+ }
+ expr.addSQL(sql, DBExpr.CTX_NAME);
sql.append(" IS '");
sql.append(comment);
sql.append("'");
@@ -796,7 +806,7 @@
sql.append("DROP ");
sql.append(objType);
sql.append(" ");
- sql.append(name);
+ appendElementName(sql, name);
return script.addStmt(sql);
}
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java Fri Aug 29 08:25:33 2008
@@ -188,11 +188,13 @@
{
// sql-phrases
case SQL_NULL_VALUE: return "null";
- case SQL_RENAME_COLUMN: return " AS ";
case SQL_PARAMETER: return " ? ";
- case SQL_CONCAT_EXPR: return " + ";
case SQL_RENAME_TABLE: return " ";
+ case SQL_RENAME_COLUMN: return " AS ";
case SQL_DATABASE_LINK: return "@";
+ case SQL_QUOTES_OPEN: return "[";
+ case SQL_QUOTES_CLOSE: return "]";
+ case SQL_CONCAT_EXPR: return " + ";
// data types
case SQL_BOOLEAN_TRUE: return "1";
case SQL_BOOLEAN_FALSE: return "0";
@@ -422,9 +424,9 @@
sql.append("-- creating table ");
sql.append(t.getName());
sql.append(" --\r\n");
- sql.append("CREATE TABLE [");
- sql.append(t.getFullName());
- sql.append("] (");
+ sql.append("CREATE TABLE ");
+ t.addSQL(sql, DBExpr.CTX_FULLNAME);
+ sql.append(" (");
boolean addSeparator = false;
Iterator<DBColumn> columns = t.getColumns().iterator();
while (columns.hasNext())
@@ -440,7 +442,7 @@
if (pk != null)
{ // add the primary key
sql.append(",\r\n CONSTRAINT ");
- sql.append(pk.getName());
+ appendElementName(sql, pk.getName());
sql.append(" PRIMARY KEY (");
addSeparator = false;
// columns
@@ -448,7 +450,7 @@
for (int i = 0; i < keyColumns.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(keyColumns[i].getName());
+ keyColumns[i].addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
sql.append(")");
@@ -468,9 +470,9 @@
// Cretae Index
sql.setLength(0);
sql.append((idx.getType() == DBIndex.UNIQUE) ? "CREATE UNIQUE INDEX " : "CREATE INDEX ");
- sql.append(idx.getFullName());
+ appendElementName(sql, idx.getName());
sql.append(" ON ");
- sql.append(t.getFullName());
+ t.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
addSeparator = false;
@@ -479,7 +481,7 @@
for (int i = 0; i < idxColumns.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(idxColumns[i].getName());
+ idxColumns[i].addSQL(sql, DBExpr.CTX_NAME);
sql.append("");
addSeparator = true;
}
@@ -500,7 +502,8 @@
*/
private boolean appendColumnDesc(DBTableColumn c, StringBuilder sql)
{
- sql.append(c.getName());
+ // Append name
+ c.addSQL(sql, DBExpr.CTX_NAME);
sql.append(" ");
switch (c.getDataType())
{
@@ -593,9 +596,9 @@
sql.append(r.getName());
sql.append(" --\r\n");
sql.append("ALTER TABLE ");
- sql.append(sourceTable.getFullName());
+ sourceTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" ADD CONSTRAINT ");
- sql.append(r.getFullName());
+ appendElementName(sql, r.getName());
sql.append(" FOREIGN KEY (");
// Source Names
boolean addSeparator = false;
@@ -603,19 +606,19 @@
for (int i = 0; i < refs.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(refs[i].getSourceColumn().getName());
+ refs[i].getSourceColumn().addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
// References
sql.append(") REFERENCES ");
- sql.append(targetTable.getFullName());
+ targetTable.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append(" (");
// Target Names
addSeparator = false;
for (int i = 0; i < refs.length; i++)
{
sql.append((addSeparator) ? ", " : "");
- sql.append(refs[i].getTargetColumn().getName());
+ refs[i].getTargetColumn().addSQL(sql, DBExpr.CTX_NAME);
addSeparator = true;
}
// done
@@ -637,7 +640,7 @@
{
StringBuilder sql = new StringBuilder();
sql.append("ALTER TABLE ");
- sql.append(col.getRowSet().getName());
+ col.getRowSet().addSQL(sql, DBExpr.CTX_FULLNAME);
switch(type)
{
case CREATE:
@@ -680,14 +683,15 @@
// Build String
StringBuilder sql = new StringBuilder();
sql.append( "CREATE VIEW ");
- sql.append( v.getName() );
+ v.addSQL(sql, DBExpr.CTX_FULLNAME);
sql.append( " (" );
boolean addSeparator = false;
for(DBColumn c : v.getColumns())
{
if (addSeparator)
sql.append(", ");
- sql.append(c.getName());
+ // Add Column name
+ c.addSQL(sql, DBExpr.CTX_NAME);
// next
addSeparator = true;
}
@@ -711,7 +715,7 @@
sql.append("DROP ");
sql.append(objType);
sql.append(" ");
- sql.append(name);
+ appendElementName(sql, name);
return script.addStmt(sql);
}
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/xml/XMLUtil.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/xml/XMLUtil.java?rev=690298&r1=690297&r2=690298&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/xml/XMLUtil.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/xml/XMLUtil.java Fri Aug 29 08:25:33 2008
@@ -366,6 +366,10 @@
{
if (parent == null)
return null; // Fehler
+ // Name must not contain spaces
+ if (name.indexOf(' ')>=0)
+ name = name.replace(' ', '_');
+ // Create Element
Element child = parent.getOwnerDocument().createElement(name);
if (value != null)
setElementText(child, value);