User: dsundstrom
  Date: 01/12/30 11:11:38

  Modified:    src/main/org/jboss/ejb/plugins/cmp/jdbc
                        JDBCStartCommand.java
  Log:
  Added support for primary key and foreign key templates.
  
  Revision  Changes    Path
  1.13      +50 -3     
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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- JDBCStartCommand.java     2001/12/27 17:34:33     1.12
  +++ JDBCStartCommand.java     2001/12/30 19:11:37     1.13
  @@ -24,6 +24,7 @@
   import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge;
   import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCEntityMetaData;
   import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationMetaData;
  +import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCFunctionMappingMetaData;
   import org.jboss.logging.Logger;
   
   /**
  @@ -35,7 +36,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.12 $
  + * @version $Revision: 1.13 $
    */
   public class JDBCStartCommand {
   
  @@ -210,12 +211,24 @@
   
            // add a pk constraint
            if(entityMetaData.hasPrimaryKeyConstraint())  {
  +/*
               sql.append(", CONSTRAINT pk").append(entityMetaData.getTableName());
               
               sql.append(" PRIMARY KEY (");
                  sql.append(SQLUtil.getColumnNamesClause(
                           entity.getJDBCPrimaryKeyFields()));
               sql.append(")");
  +*/
  +            JDBCFunctionMappingMetaData pkConstraint = 
  +               manager.getMetaData().getTypeMapping().getPkConstraintTemplate();
  +            if(pkConstraint == null) {
  +               throw new IllegalStateException("Primary key constriant is " +
  +                     "not allowed for this type of datastore");
  +            }
  +            String[] args = new String[] {
  +               "pk_"+entityMetaData.getTableName(),
  +               SQLUtil.getColumnNamesClause(entity.getJDBCPrimaryKeyFields())};
  +            sql.append(", ").append(pkConstraint.getFunctionSql(args));
            }
   
         sql.append(")");
  @@ -241,6 +254,7 @@
   
            // add a pk constraint
            if(cmrField.getRelationMetaData().hasPrimaryKeyConstraint())  {
  +/*
               sql.append(", CONSTRAINT pk").append(
                     cmrField.getRelationMetaData().getTableName());
               
  @@ -251,6 +265,21 @@
                  sql.append(SQLUtil.getColumnNamesClause(
                        cmrField.getRelatedCMRField().getTableKeyFields()));
               sql.append(")");
  +*/
  +            JDBCFunctionMappingMetaData pkConstraint = 
  +               manager.getMetaData().getTypeMapping().getPkConstraintTemplate();
  +            if(pkConstraint == null) {
  +               throw new IllegalStateException("Primary key constriant is " +
  +                     "not allowed for this type of datastore");
  +            }
  +            String[] args = new String[] {
  +               "pk_"+cmrField.getRelationMetaData().getTableName(),
  +               SQLUtil.getColumnNamesClause(cmrField.getTableKeyFields()) +
  +                     ", " +
  +                     SQLUtil.getColumnNamesClause(
  +                           cmrField.getRelatedCMRField().getTableKeyFields())};
  +
  +            sql.append(", ").append(pkConstraint.getFunctionSql(args));
            }   
         sql.append(")");
         
  @@ -264,6 +293,7 @@
               addForeignKeyConstraint(
                     cmrField.getRelationMetaData().getDataSource(),
                     cmrField.getRelationMetaData().getTableName(),
  +                  cmrField.getFieldName(),
                     cmrField.getTableKeyFields(),
                     cmrField.getEntity().getTableName(),
                     cmrField.getEntity().getJDBCPrimaryKeyFields());
  @@ -272,6 +302,7 @@
               addForeignKeyConstraint(
                     cmrField.getEntity().getDataSource(),
                     cmrField.getEntity().getTableName(),
  +                  cmrField.getFieldName(),
                     cmrField.getForeignKeyFields(),
                     cmrField.getRelatedEntity().getTableName(),
                     cmrField.getRelatedEntity().getJDBCPrimaryKeyFields());
  @@ -287,6 +318,7 @@
      private void addForeignKeyConstraint(
            DataSource dataSource,
            String tableName,
  +         String cmrFieldName,
            JDBCCMPFieldBridge[] fields,
            String referencesTableName,
            JDBCCMPFieldBridge[] referencesFields) {
  @@ -297,6 +329,21 @@
            return;
         }
   
  +      JDBCFunctionMappingMetaData fkConstraint = 
  +            manager.getMetaData().getTypeMapping().getFkConstraintTemplate();
  +      if(fkConstraint == null) {
  +         throw new IllegalStateException("Foreign key constriant is not " +
  +               "allowed for this type of datastore");
  +      }
  +      String[] args = new String[] {
  +         tableName, 
  +         "fk_"+tableName+"_"+cmrFieldName,
  +         SQLUtil.getColumnNamesClause(fields),
  +         referencesTableName,
  +         SQLUtil.getColumnNamesClause(referencesFields)};
  +      String sql = fkConstraint.getFunctionSql(args);
  +
  +/*
         StringBuffer sql = new StringBuffer(100);
   
         sql.append("ALTER TABLE ").append(tableName);
  @@ -311,7 +358,7 @@
         sql.append("(");
            sql.append(SQLUtil.getColumnNamesClause(referencesFields));
         sql.append(")");
  -
  +*/
         Connection con = null;
         Statement statement = null;
         try {
  @@ -326,7 +373,7 @@
            
            // execute sql
            log.debug("Executing SQL: " + sql);
  -         statement.executeUpdate(sql.toString());
  +         statement.executeUpdate(sql);
   
            // commit the transaction
            manager.getContainer().getTransactionManager().commit();
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to