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/09/03 01:05:58 UTC
svn commit: r691420 - in
/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db:
DBColumn.java DBDatabase.java DBDatabaseDriver.java DBTable.java
DBView.java hsql/DBDatabaseDriverHSql.java oracle/DBDatabaseDriverOracle.java
Author: doebele
Date: Tue Sep 2 16:05:57 2008
New Revision: 691420
URL: http://svn.apache.org/viewvc?rev=691420&view=rev
Log:
EMPIREDB-6
Modified:
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/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/DBView.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/oracle/DBDatabaseDriverOracle.java
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=691420&r1=691419&r2=691420&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 Tue Sep 2 16:05:57 2008
@@ -50,6 +50,8 @@
protected final DBRowSet rowset;
protected final String name;
protected String comment;
+
+ private Boolean quoteName = null;
/**
* Constructs a DBColumn object and set the specified parameters to this object.
@@ -126,7 +128,10 @@
}
// Append the name
DBDatabaseDriver driver = getDatabase().getDriver();
- driver.appendElementName(buf, name);
+ if (quoteName==null)
+ quoteName = driver.detectQuoteName(name);
+ // Append the name
+ driver.appendElementName(buf, name, quoteName.booleanValue());
}
/**
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=691420&r1=691419&r2=691420&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 Tue Sep 2 16:05:57 2008
@@ -267,10 +267,12 @@
*
* @return the qualified object name
*/
+ @Deprecated
public String getQualifiedName(String name)
{
StringBuilder buf = new StringBuilder();
- appendQualifiedName(buf, name);
+ boolean quoteName = (driver!=null) ? driver.detectQuoteName(name) : false;
+ appendQualifiedName(buf, name, quoteName);
return buf.toString();
}
@@ -282,7 +284,7 @@
* @param buf the string buffer to which to append the qualified object name
* @param name the object's name
*/
- public void appendQualifiedName(StringBuilder buf, String name)
+ public void appendQualifiedName(StringBuilder buf, String name, boolean quoteName)
{
// Check driver
if (driver==null)
@@ -298,7 +300,7 @@
buf.append(".");
}
// Append the name
- driver.appendElementName(buf, name);
+ driver.appendElementName(buf, name, quoteName);
// Database Link
if (linkName!=null)
{ // Add Schema
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=691420&r1=691419&r2=691420&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 Tue Sep 2 16:05:57 2008
@@ -110,7 +110,7 @@
'/', '.', '-', ',', '+', '*', ')', '(',
'\'', '&', '%', '!', ' '
};
- private static final String[] generalSQLKeywords = new String[] { "count", "user", "on", "off",
+ private static final String[] generalSQLKeywords = new String[] { "user", "group",
"table", "column", "view", "index", "constraint",
"select", "udpate", "insert", "alter", "delete" };
protected final Set<String> reservedSQLKeywords;
@@ -233,12 +233,12 @@
public abstract boolean isSupported(DBDriverFeature type);
/**
- * Checks wether a table or column name needs to be quoted or not<BR/>
+ * Detects wether a table or column name needs to be quoted or not<BR/>
* By default all reserved SQL keywords as well as names
* containing a "-", "/", "+" or " " require quoting.<BR/>
* Overrides this function to add database specific keywords like "user" or "count"
*/
- protected boolean quoteElementName(String name)
+ protected boolean detectQuoteName(String name)
{
// Check for reserved names
if (reservedSQLKeywords.contains(name.toLowerCase()))
@@ -264,10 +264,9 @@
* @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)
+ public void appendElementName(StringBuilder sql, String name, boolean useQuotes)
{
// Check whether to use quotes or not
- boolean useQuotes = quoteElementName(name);
if (useQuotes)
sql.append(getSQLPhrase(DBDatabaseDriver.SQL_QUOTES_OPEN));
// Append Name
@@ -276,6 +275,16 @@
if (useQuotes)
sql.append(getSQLPhrase(DBDatabaseDriver.SQL_QUOTES_CLOSE));
}
+
+ /**
+ * 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 final void appendElementName(StringBuilder sql, String name)
+ {
+ appendElementName(sql, name, detectQuoteName(name));
+ }
/**
* 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=691420&r1=691419&r2=691420&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 Tue Sep 2 16:05:57 2008
@@ -42,6 +42,7 @@
private String alias;
private List<DBIndex> indexes = new ArrayList<DBIndex>();
private boolean cascadeDelete = false;
+ private Boolean quoteName = null;
/**
* Construct a new DBTable object set the specified parameters
@@ -280,8 +281,12 @@
{
// Append Name
if ((context & CTX_NAME|CTX_FULLNAME)!=0)
- { // Add Schema
- db.appendQualifiedName(buf, name);
+ { // Append the name
+ DBDatabaseDriver driver = getDatabase().getDriver();
+ if (quoteName==null)
+ quoteName = driver.detectQuoteName(name);
+ // append Qualified Name
+ db.appendQualifiedName(buf, name, quoteName);
}
// Append Alias
if ((context & CTX_ALIAS)!=0 && alias!=null)
Modified: incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBView.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBView.java?rev=691420&r1=691419&r2=691420&view=diff
==============================================================================
--- incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBView.java (original)
+++ incubator/empire-db/trunk/core/Empire-db/src/org/apache/empire/db/DBView.java Tue Sep 2 16:05:57 2008
@@ -165,6 +165,7 @@
private String name;
private String alias;
private boolean updateable; // true if the view is updateable
+ private Boolean quoteName = null;
/**
* Creates a view object for a given view in the database.
@@ -348,19 +349,20 @@
@Override
public void addSQL(StringBuilder buf, long context)
{
- if ((context & CTX_FULLNAME) != 0 && db != null)
- { // Add Schema
- db.appendQualifiedName(buf, name);
- }
- else
- { // Simple Name only
- buf.append(name);
+ // Append Name
+ if ((context & CTX_NAME|CTX_FULLNAME)!=0)
+ { // Append the name
+ DBDatabaseDriver driver = getDatabase().getDriver();
+ if (quoteName==null)
+ quoteName = driver.detectQuoteName(name);
+ // append Qualified Name
+ db.appendQualifiedName(buf, name, quoteName);
}
- // Add Alias
- if ((context & CTX_ALIAS) != 0 && alias != null)
- { // append alias
- buf.append(getRenameTablePhrase());
- buf.append(alias);
+ // Append Alias
+ if ((context & CTX_ALIAS)!=0 && alias!=null)
+ { // append alias
+ buf.append(getRenameTablePhrase());
+ buf.append(alias);
}
}
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=691420&r1=691419&r2=691420&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 Tue Sep 2 16:05:57 2008
@@ -225,7 +225,7 @@
StringBuilder sql = new StringBuilder(80);
sql.append("SELECT ");
sql.append("NEXT VALUE FOR ");
- db.appendQualifiedName(sql, seqName);
+ db.appendQualifiedName(sql, seqName, detectQuoteName(seqName));
sql.append(" FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES WHERE SEQUENCE_NAME='"+ seqName + "'");
Object val = db.querySingleValue(sql.toString(), conn);
@@ -379,7 +379,7 @@
sql.append(c.toString());
sql.append(" --\r\n");
sql.append("CREATE SEQUENCE ");
- db.appendQualifiedName(sql, seqName);
+ db.appendQualifiedName(sql, seqName, detectQuoteName(seqName));
sql.append(" START WITH 1");
// executeDLL
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=691420&r1=691419&r2=691420&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 Tue Sep 2 16:05:57 2008
@@ -284,7 +284,7 @@
{ // Use Oracle Sequences
StringBuilder sql = new StringBuilder(80);
sql.append("SELECT ");
- db.appendQualifiedName(sql, seqName);
+ db.appendQualifiedName(sql, seqName, detectQuoteName(seqName));
sql.append(".NEXTVAL FROM DUAL");
Object val = db.querySingleValue(sql.toString(), conn);
if (val == null)
@@ -461,7 +461,7 @@
sql.append(c.getFullName());
sql.append(" --\r\n");
sql.append("CREATE SEQUENCE ");
- db.appendQualifiedName(sql, seqName);
+ db.appendQualifiedName(sql, seqName, detectQuoteName(seqName));
sql.append(" INCREMENT BY 1 START WITH 1 MINVALUE 0 NOCYCLE NOCACHE NOORDER");
// executeDLL
return script.addStmt(sql);