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

Reply via email to