User: dsundstrom
  Date: 02/01/15 14:14:04

  Modified:    src/main/org/jboss/ejb/plugins/cmp/jdbc
                        JDBCCreateEntityCommand.java
  Log:
  Changed to use merged CMR field and CMP field interface.
  
  Changed to use field lists instead of field arrays.
  
  Revision  Changes    Path
  1.12      +47 -62    
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCCreateEntityCommand.java
  
  Index: JDBCCreateEntityCommand.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCCreateEntityCommand.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- JDBCCreateEntityCommand.java      2002/01/05 12:08:50     1.11
  +++ JDBCCreateEntityCommand.java      2002/01/15 22:14:04     1.12
  @@ -12,12 +12,14 @@
   import java.sql.PreparedStatement;
   import java.sql.ResultSet;
   import java.util.ArrayList;
  +import java.util.Iterator;
  +import java.util.List;
   import javax.ejb.CreateException;
   import javax.ejb.DuplicateKeyException;
   import javax.sql.DataSource;
   
   import org.jboss.ejb.EntityEnterpriseContext;
  -import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge;
  +import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCFieldBridge;
   import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge;
   import org.jboss.logging.Logger;
   
  @@ -31,66 +33,60 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Marc Fleury</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Joe Shevland</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Justin Forder</a>
  - * @version $Revision: 1.11 $
  + * @version $Revision: 1.12 $
    */
   public class JDBCCreateEntityCommand {
      private JDBCStoreManager manager;
      private JDBCEntityBridge entity;
      private Logger log;
  -   private JDBCCMPFieldBridge[] insertFields;
  +   private List insertFields;
      private String entityExistsSQL;
      private String insertEntitySQL;
      private boolean createAllowed;
  -
  +   
      public JDBCCreateEntityCommand(JDBCStoreManager manager) {
         this.manager = manager;
         entity = manager.getEntityBridge();
   
         // Create the Log
         log = Logger.getLogger(
  -            this.getClass().getName() +
  -            "." +
  +            this.getClass().getName() + 
  +            "." + 
               manager.getMetaData().getName());
   
  -      boolean debug = log.isDebugEnabled();
  -
         // set create allowed
         createAllowed = true;
  -      JDBCCMPFieldBridge[] cmpFields = entity.getJDBCCMPFields();
  -      for(int i=0; i<cmpFields.length; i++) {
  -         if(cmpFields[i].isPrimaryKeyMember() && cmpFields[i].isReadOnly()) {
  +      List fields = entity.getFields();
  +      for(Iterator iter = fields.iterator(); iter.hasNext(); ) {
  +         JDBCFieldBridge field = (JDBCFieldBridge)iter.next();
  +         if(field.isPrimaryKeyMember() && field.isReadOnly()) {
               createAllowed = false;
               break;
            }
         }
  -
  +      
         if(createAllowed) {
            insertFields = getInsertFields();
            entityExistsSQL = createEntityExistsSQL();
            insertEntitySQL = createInsertEntitySQL();
  -         if (debug)
  -         {
  -            log.debug("Entity Exists SQL: " + entityExistsSQL);
  -            log.debug("Insert Entity SQL: " + entityExistsSQL);
  -         }
  -      }
  -      else if (debug)
  -      {
  +         log.debug("Entity Exists SQL: " + entityExistsSQL);
  +         log.debug("Insert Entity SQL: " + insertEntitySQL);
  +      } else {
            log.debug("Create will not be allowed.");
         }
      }
  -
  -   private JDBCCMPFieldBridge[] getInsertFields() {
  -      JDBCCMPFieldBridge[] cmpFields = entity.getJDBCCMPFields();
  -      ArrayList fields = new ArrayList(cmpFields.length);
  -
  -      for(int i=0; i<cmpFields.length; i++) {
  -         if(!cmpFields[i].isReadOnly()) {
  -            fields.add(cmpFields[i]);
  +  
  +   private List getInsertFields() {
  +      List fields = entity.getFields();
  +      List insertFields = new ArrayList(fields.size());
  +
  +      for(Iterator iter = fields.iterator(); iter.hasNext(); ) {
  +         JDBCFieldBridge field = (JDBCFieldBridge)iter.next();
  +         if(!field.isReadOnly()) {
  +            insertFields.add(field);
            } 
         }
  -      return (JDBCCMPFieldBridge[])fields.toArray(
  -            new JDBCCMPFieldBridge[fields.size()]);
  +      return insertFields;
      }
   
      private String createEntityExistsSQL() {
  @@ -98,7 +94,7 @@
         sql.append("SELECT COUNT(*)");
         sql.append(" FROM ").append(entity.getTableName());
         sql.append(" WHERE ");
  -      sql.append(SQLUtil.getWhereClause(entity.getJDBCPrimaryKeyFields()));
  +      sql.append(SQLUtil.getWhereClause(entity.getPrimaryKeyFields()));
         
         return sql.toString();
      }
  @@ -125,7 +121,9 @@
                  "primary key field is read only.");
         }
   
  -      Object pk = getPrimaryKey(ctx);
  +      Object pk = entity.extractPrimaryKeyFromInstance(ctx);
  +      log.debug("Create: pk="+pk);
  +
         if(entityExists(pk)) {
            throw new DuplicateKeyException("Entity with primary key " + pk + 
                  " already exists");
  @@ -137,20 +135,6 @@
         return pk;         
      }
   
  -   private Object getPrimaryKey(EntityEnterpriseContext ctx)
  -         throws CreateException {
  -
  -      try {
  -         Object pk = entity.extractPrimaryKeyFromInstance(ctx);
  -         if (log.isDebugEnabled())
  -            log.debug("Create: pk="+pk);
  -         return pk;
  -      } catch(Exception e) {
  -         log.error(e);
  -         throw new CreateException("Extract primary key from instance:" + e);
  -      }
  -   }
  -
      private boolean entityExists(Object pk)
            throws CreateException {
   
  @@ -162,10 +146,9 @@
            con = dataSource.getConnection();
            
            // create the statement
  -         if (log.isDebugEnabled())
  -            log.debug("Executing SQL: " + entityExistsSQL);
  +         log.debug("Executing SQL: " + entityExistsSQL);
            ps = con.prepareStatement(entityExistsSQL);
  -
  +         
            // set the parameters
            entity.setPrimaryKeyParameters(ps, 1, pk);
   
  @@ -175,44 +158,46 @@
               throw new CreateException("Error checking if entity exists: " +
                     "result set contains no rows");
            }
  -
  +      
            // did any rows mathch
            return rs.getInt(1) > 0;
         } catch(CreateException e) {
            throw e;
         } catch(Exception e) {
  -         log.error(e);
  +         log.error("Error checking if entity exists", e);
            throw new CreateException("Error checking if entity exists:" + e);
         } finally {
            JDBCUtil.safeClose(ps);
            JDBCUtil.safeClose(con);
         }
      }
  -
  +   
      private void insertEntity(EntityEnterpriseContext ctx)
            throws CreateException{
   
         Connection con = null;
         PreparedStatement ps = null;
         int rowsAffected  = 0;
  -      boolean debug = log.isDebugEnabled();
         try {
            // get the connection
            DataSource dataSource = entity.getDataSource();
            con = dataSource.getConnection();
  -
  +         
            // create the statement
  -         if (debug)
  -            log.debug("Executing SQL: " + insertEntitySQL);
  +         log.debug("Executing SQL: " + insertEntitySQL);
            ps = con.prepareStatement(insertEntitySQL);
  -
  +         
            // set the parameters
  -         entity.setInstanceParameters(ps, 1, ctx, insertFields);
  +         int index = 1;
  +         for(Iterator iter = insertFields.iterator(); iter.hasNext(); ) {
  +            JDBCFieldBridge field = (JDBCFieldBridge)iter.next();
  +            index = field.setInstanceParameters(ps, index, ctx);
  +         }
   
            // execute statement
            rowsAffected = ps.executeUpdate();
         } catch(Exception e) {
  -         log.error(e);
  +         log.error("Could not create entity", e);
            throw new CreateException("Could not create entity:" + e);
         } finally {
            JDBCUtil.safeClose(ps);
  @@ -225,12 +210,12 @@
                  "affected row: rowsAffected=" + rowsAffected +
                  "id=" + ctx.getId());
         }
  -      if (debug)
  -         log.debug("Create: Rows affected = " + rowsAffected);
  +      log.debug("Create: Rows affected = " + rowsAffected);
   
         // Mark the inserted fields as clean.
  -      for(int i=0; i<insertFields.length; i++) {
  -         insertFields[i].setClean(ctx);
  +      for(Iterator iter = insertFields.iterator(); iter.hasNext(); ) {
  +         JDBCFieldBridge field = (JDBCFieldBridge)iter.next();
  +         field.setClean(ctx);
         }
      }
   }
  
  
  

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

Reply via email to