User: dsundstrom
Date: 02/04/10 08:18:44
Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc
JDBCDeclaredSQLQuery.java
JDBCDeleteRelationsCommand.java
JDBCEJBQLCompiler.java
JDBCInsertRelationsCommand.java
JDBCLoadRelationCommand.java JDBCStartCommand.java
JDBCStopCommand.java SQLUtil.java
Log:
Fixed bug [ 533686 ] JDBCStartCommand.tableExists() Oracle.
Table names are now passed through SQLUtil.fixTableName(...). Currently,
this only fixes the case based on the DatabaseMetaData, but in the future
this is the place where the length will be fixed and reserved words will
be detected.
Revision Changes Path
1.6 +4 -3
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDeclaredSQLQuery.java
Index: JDBCDeclaredSQLQuery.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDeclaredSQLQuery.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JDBCDeclaredSQLQuery.java 3 Mar 2002 20:02:28 -0000 1.5
+++ JDBCDeclaredSQLQuery.java 10 Apr 2002 15:18:43 -0000 1.6
@@ -31,7 +31,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
* @author <a href="[EMAIL PROTECTED]">danch (Dan Christopherson</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class JDBCDeclaredSQLQuery extends JDBCAbstractQueryCommand {
@@ -135,7 +135,7 @@
if(getSelectField() == null) {
// we are selecting a full entity
- String table = getSelectEntity().getMetaData().getTableName();
+ String table = getSelectEntity().getTableName();
// get a list of all fields to be loaded
List loadFields = new ArrayList();
@@ -158,7 +158,8 @@
// we are just selecting one field
JDBCCMPFieldBridge selectField = getSelectField();
- String table = selectField.getMetaData().getEntity().getTableName();
+ String table =
+ getSelectField().getManager().getEntityBridge().getTableName();
if(alias != null && alias.trim().length()>0) {
sql.append(SQLUtil.getColumnNamesClause(selectField, alias));
sql.append(" FROM ");
1.9 +5 -6
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDeleteRelationsCommand.java
Index: JDBCDeleteRelationsCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDeleteRelationsCommand.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- JDBCDeleteRelationsCommand.java 15 Jan 2002 22:18:36 -0000 1.8
+++ JDBCDeleteRelationsCommand.java 10 Apr 2002 15:18:43 -0000 1.9
@@ -22,7 +22,7 @@
* Deletes relations from a relation table.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.8 $
+ * @version $Revision: 1.9 $
*/
public class JDBCDeleteRelationsCommand {
private JDBCStoreManager manager;
@@ -53,11 +53,10 @@
Connection con = null;
PreparedStatement ps = null;
- JDBCRelationMetaData relationMetaData =
- relationData.getLeftCMRField().getRelationMetaData();
+ JDBCCMRFieldBridge cmrField = relationData.getLeftCMRField();
try {
// get the connection
- DataSource dataSource = relationMetaData.getDataSource();
+ DataSource dataSource = cmrField.getDataSource();
con = dataSource.getConnection();
// create the statement
@@ -72,7 +71,7 @@
log.debug("Create: Rows affected = " + rowsAffected);
} catch(Exception e) {
throw new EJBException("Could not delete relations from " +
- relationMetaData.getTableName(), e);
+ cmrField.getTableName(), e);
} finally {
JDBCUtil.safeClose(ps);
JDBCUtil.safeClose(con);
@@ -85,7 +84,7 @@
StringBuffer sql = new StringBuffer();
sql.append("DELETE FROM ");
- sql.append(left.getRelationMetaData().getTableName());
+ sql.append(left.getTableName());
sql.append(" WHERE ");
Iterator pairs = relationData.removedRelations.iterator();
1.4 +6 -6
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCEJBQLCompiler.java
Index: JDBCEJBQLCompiler.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCEJBQLCompiler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDBCEJBQLCompiler.java 12 Mar 2002 23:17:19 -0000 1.3
+++ JDBCEJBQLCompiler.java 10 Apr 2002 15:18:43 -0000 1.4
@@ -84,7 +84,7 @@
* Compiles EJB-QL and JBossQL into SQL.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class JDBCEJBQLCompiler extends BasicVisitor {
@@ -441,7 +441,7 @@
cmrField.getTableKeyFields(), relationTableAlias));
buf.append(" FROM ");
- buf.append(cmrField.getRelationMetaData().getTableName());
+ buf.append(cmrField.getTableName());
buf.append(" ");
buf.append(relationTableAlias);
@@ -570,7 +570,7 @@
if(cmrField.getRelationMetaData().isTableMappingStyle()) {
String relationTableAlias = getRelationTableAlias(path.getPath(i));
buf.append(", ");
- buf.append(cmrField.getRelationMetaData().getTableName());
+ buf.append(cmrField.getTableName());
buf.append(" ");
buf.append(relationTableAlias);
}
@@ -612,7 +612,7 @@
String relationTableAlias = getRelationTableAlias(path.getPath());
buf.append(" LEFT JOIN ");
- buf.append(cmrField.getRelationMetaData().getTableName());
+ buf.append(cmrField.getTableName());
buf.append(" ");
buf.append(relationTableAlias);
@@ -732,7 +732,7 @@
if(cmrField.getRelationMetaData().isTableMappingStyle()) {
String relationTableAlias = getRelationTableAlias(path.getPath());
buf.append(", ");
- buf.append(cmrField.getRelationMetaData().getTableName());
+ buf.append(cmrField.getTableName());
buf.append(" ");
buf.append(relationTableAlias);
}
@@ -930,7 +930,7 @@
relationTableAlias));
buf.append(" FROM ");
- buf.append(toCMRField.getRelationMetaData().getTableName());
+ buf.append(toCMRField.getTableName());
buf.append(" ");
buf.append(relationTableAlias);
1.11 +5 -6
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCInsertRelationsCommand.java
Index: JDBCInsertRelationsCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCInsertRelationsCommand.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- JDBCInsertRelationsCommand.java 15 Jan 2002 22:22:10 -0000 1.10
+++ JDBCInsertRelationsCommand.java 10 Apr 2002 15:18:43 -0000 1.11
@@ -23,7 +23,7 @@
* Inserts relations into a relation table.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.10 $
+ * @version $Revision: 1.11 $
*/
public class JDBCInsertRelationsCommand {
protected JDBCStoreManager manager;
@@ -49,11 +49,10 @@
Connection con = null;
PreparedStatement ps = null;
- JDBCRelationMetaData relationMetaData =
- relationData.getLeftCMRField().getRelationMetaData();
+ JDBCCMRFieldBridge cmrField = relationData.getLeftCMRField();
try {
// get the connection
- DataSource dataSource = relationMetaData.getDataSource();
+ DataSource dataSource = cmrField.getDataSource();
con = dataSource.getConnection();
// get the sql
@@ -76,7 +75,7 @@
}
} catch(Exception e) {
throw new EJBException("Could insert relations into " +
- relationMetaData.getTableName(), e);
+ cmrField.getTableName(), e);
} finally {
JDBCUtil.safeClose(ps);
JDBCUtil.safeClose(con);
@@ -89,7 +88,7 @@
StringBuffer sql = new StringBuffer();
sql.append("INSERT INTO ").append(
- left.getRelationMetaData().getTableName());
+ left.getTableName());
sql.append(" (");
sql.append(SQLUtil.getColumnNamesClause(left.getTableKeyFields()));
1.16 +3 -3
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadRelationCommand.java
Index: JDBCLoadRelationCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadRelationCommand.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- JDBCLoadRelationCommand.java 26 Feb 2002 23:51:03 -0000 1.15
+++ JDBCLoadRelationCommand.java 10 Apr 2002 15:18:43 -0000 1.16
@@ -33,7 +33,7 @@
* Loads relations for a particular entity from a relation table.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.15 $
+ * @version $Revision: 1.16 $
*/
public class JDBCLoadRelationCommand {
private final JDBCStoreManager manager;
@@ -71,7 +71,7 @@
PreparedStatement ps = null;
try {
// get the connection
- con = cmrField.getRelationMetaData().getDataSource().getConnection();
+ con = cmrField.getDataSource().getConnection();
// create the statement
log.debug("Executing SQL: " + sql);
@@ -334,7 +334,7 @@
private String getRelationTable(JDBCCMRFieldBridge cmrField) {
if(cmrField.getRelationMetaData().isTableMappingStyle()) {
// relation table
- return cmrField.getRelationMetaData().getTableName();
+ return cmrField.getTableName();
} else if(cmrField.getRelatedCMRField().hasForeignKey()) {
// related has foreign key
return cmrField.getRelatedJDBCEntity().getTableName();
1.24 +8 -8
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java
Index: JDBCStartCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- JDBCStartCommand.java 9 Apr 2002 20:41:24 -0000 1.23
+++ JDBCStartCommand.java 10 Apr 2002 15:18:43 -0000 1.24
@@ -40,7 +40,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
- * @version $Revision: 1.23 $
+ * @version $Revision: 1.24 $
*/
public class JDBCStartCommand {
@@ -105,11 +105,11 @@
if(relationMetaData.getCreateTable()) {
createTable(
relationMetaData.getDataSource(),
- relationMetaData.getTableName(),
+ cmrField.getTableName(),
getRelationCreateTableSQL(cmrField));
} else {
log.debug("Relation table not create as requested: " +
- relationMetaData.getTableName());
+ cmrField.getTableName());
}
}
relationMetaData.setTableExists(true);
@@ -208,7 +208,7 @@
private String getEntityCreateTableSQL() {
StringBuffer sql = new StringBuffer();
- sql.append("CREATE TABLE ").append(entityMetaData.getTableName());
+ sql.append("CREATE TABLE ").append(entity.getTableName());
sql.append(" (");
// add fields
@@ -223,7 +223,7 @@
"not allowed for this type of datastore");
}
String[] args = new String[] {
- "pk_"+entityMetaData.getTableName(),
+ "pk_"+entity.getTableName(),
SQLUtil.getColumnNamesClause(entity.getPrimaryKeyFields())};
sql.append(", ").append(pkConstraint.getFunctionSql(args));
}
@@ -240,7 +240,7 @@
StringBuffer sql = new StringBuffer();
sql.append("CREATE TABLE ").append(
- cmrField.getRelationMetaData().getTableName());
+ cmrField.getTableName());
sql.append(" (");
// add field declaration
@@ -255,7 +255,7 @@
"not allowed for this type of datastore");
}
String[] args = new String[] {
- "pk_"+cmrField.getRelationMetaData().getTableName(),
+ "pk_"+cmrField.getTableName(),
SQLUtil.getColumnNamesClause(fields)};
sql.append(", ").append(pkConstraint.getFunctionSql(args));
}
@@ -271,7 +271,7 @@
if(cmrField.getRelationMetaData().isTableMappingStyle()) {
addForeignKeyConstraint(
cmrField.getRelationMetaData().getDataSource(),
- cmrField.getRelationMetaData().getTableName(),
+ cmrField.getTableName(),
cmrField.getFieldName(),
cmrField.getTableKeyFields(),
cmrField.getEntity().getTableName(),
1.12 +3 -3
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStopCommand.java
Index: JDBCStopCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStopCommand.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- JDBCStopCommand.java 9 Apr 2002 01:20:45 -0000 1.11
+++ JDBCStopCommand.java 10 Apr 2002 15:18:43 -0000 1.12
@@ -29,7 +29,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
- * @version $Revision: 1.11 $
+ * @version $Revision: 1.12 $
*/
public class JDBCStopCommand {
@@ -53,7 +53,7 @@
public void execute() {
if(entityMetaData.getRemoveTable()) {
log.debug("Dropping table for entity " + entity.getEntityName());
- dropTable(entity.getDataSource(), entityMetaData.getTableName());
+ dropTable(entity.getDataSource(), entity.getTableName());
}
// drop relation tables
@@ -69,7 +69,7 @@
if(relationMetaData.getRemoveTable()) {
dropTable(
relationMetaData.getDataSource(),
- relationMetaData.getTableName());
+ cmrField.getTableName());
}
relationMetaData.setTableExists(false);
}
1.8 +34 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/SQLUtil.java
Index: SQLUtil.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/SQLUtil.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SQLUtil.java 27 Feb 2002 00:07:59 -0000 1.7
+++ SQLUtil.java 10 Apr 2002 15:18:43 -0000 1.8
@@ -7,11 +7,16 @@
package org.jboss.ejb.plugins.cmp.jdbc;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import javax.sql.DataSource;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import org.jboss.deployment.DeploymentException;
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge;
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge;
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge;
@@ -21,9 +26,37 @@
* SQLUtil helps with building sql statements.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.7 $
+ * @version $Revision: 1.8 $
*/
public class SQLUtil {
+ public static String fixTableName(String tableName, DataSource dataSource)
+ throws DeploymentException {
+
+ Connection con = null;
+ try {
+ con = dataSource.getConnection();
+
+ // TODO: fix length
+
+ // TODO: check for SQL reserved word
+
+ // fix case
+ DatabaseMetaData dmd = con.getMetaData();
+ if(dmd.storesLowerCaseIdentifiers()) {
+ tableName = tableName.toLowerCase();
+ } else if(dmd.storesUpperCaseIdentifiers()) {
+ tableName = tableName.toUpperCase();
+ }
+ return tableName;
+ } catch(SQLException e) {
+ // This should not happen. A J2EE compatiable JDBC driver is
+ // required fully support metadata.
+ throw new DeploymentException("Error while fixing table name", e);
+ } finally {
+ JDBCUtil.safeClose(con);
+ }
+ }
+
// =======================================================================
// Create Table Columns Clause
// columnName0 sqlType0
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development