jboynes     2004/04/13 11:38:29

  Modified:    modules/core/src/java/org/openejb/entity/cmp
                        CMPContainerBuilder.java
  Log:

  Add field transforms to command arguments
  Removes the need for ParamRemapper's and is a step toward command transforms
  
  Revision  Changes    Path
  1.9       +18 -9     
openejb/modules/core/src/java/org/openejb/entity/cmp/CMPContainerBuilder.java
  
  Index: CMPContainerBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/entity/cmp/CMPContainerBuilder.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- CMPContainerBuilder.java  12 Apr 2004 04:11:52 -0000      1.8
  +++ CMPContainerBuilder.java  13 Apr 2004 15:38:29 -0000      1.9
  @@ -98,7 +98,6 @@
   import org.tranql.ql.QueryBuilder;
   import org.tranql.ql.QueryException;
   import org.tranql.ql.QueryTransformer;
  -import org.tranql.query.ParamRemapper;
   import org.tranql.query.QueryCommand;
   import org.tranql.query.UpdateCommand;
   import org.tranql.schema.Attribute;
  @@ -232,9 +231,15 @@
           Query loadQuery = QueryBuilder.buildSelectById(ejb, false).getQuery();
           SQLQuery loadSQLQuery = (SQLQuery) queryTransformer.transform(loadQuery);
           InputBinding[] loadBindings = 
BindingFactory.getInputBindings(loadSQLQuery.getParamTypes());
  +
  +        // todo this should come from the query transform
  +        FieldTransform[] loadTransforms = new FieldTransform[loadBindings.length];
  +        for (int i=0; i < loadTransforms.length; i++) {
  +            loadTransforms[i] = new FieldAccessor(i);
  +        }
           // todo there should be an easier way to create the results bindings
           ResultBinding[] resultBindings = createResultsBindings(ejb);
  -        QueryCommand loadCommand = new JDBCQueryCommand(ds, 
loadSQLQuery.getSQLText(), loadBindings, resultBindings);
  +        QueryCommand loadCommand = new JDBCQueryCommand(ds, 
loadSQLQuery.getSQLText(), loadBindings, loadTransforms, resultBindings);
           // todo this is lame... should be the default slot mapping
           int[] slotMap = new int[resultBindings.length];
           for (int i = 0; i < slotMap.length; i++) {
  @@ -251,15 +256,20 @@
           SQLQuery createSQLQuery = (SQLQuery) 
queryTransformer.transform(createQuery);
           // todo shouldn't UpdateCommand take a query directly?
           InputBinding[] createBindings = 
BindingFactory.getInputBindings(createSQLQuery.getParamTypes());
  -        UpdateCommand createCommand = new JDBCUpdateCommand(ds, 
createSQLQuery.getSQLText(), createBindings);
  +
  +        // todo this should be obtained from the query
  +        FieldTransform[] createTransforms = new 
FieldTransform[createBindings.length];
  +        for (int i = 0; i < createTransforms.length; i++) {
  +            createTransforms[i] = new FieldAccessor(i);
  +        }
  +        UpdateCommand createCommand = new JDBCUpdateCommand(ds, 
createSQLQuery.getSQLText(), createBindings, createTransforms);
   
           // UPDATE
           Query updateQuery = QueryBuilder.buildUpdate(ejb).getQuery();
           SQLQuery updateSQLQuery = (SQLQuery) 
queryTransformer.transform(updateQuery);
           InputBinding[] updateBindings = 
BindingFactory.getInputBindings(updateSQLQuery.getParamTypes());
  -        UpdateCommand updateCommand = new JDBCUpdateCommand(ds, 
updateSQLQuery.getSQLText(), updateBindings);
   
  -        // todo shouldn't query builder do this transform?
  +        // todo this should be obtained from the query
           List attributes = ejb.getAttributes();
           List updateParamsList = new ArrayList(attributes.size() * 2);
           List pkParamsList = new ArrayList(1);
  @@ -274,13 +284,12 @@
           }
           updateParamsList.addAll(pkParamsList);
           FieldTransform[] updateTransforms = (FieldTransform[]) 
updateParamsList.toArray(new FieldTransform[updateParamsList.size()]);
  -        updateCommand = new ParamRemapper(updateCommand, updateTransforms);
  +        UpdateCommand updateCommand = new JDBCUpdateCommand(ds, 
updateSQLQuery.getSQLText(), updateBindings, updateTransforms);
   
           // DELETE
           Query removeQuery = QueryBuilder.buildDelete(ejb).getQuery();
           SQLQuery removeSQLQuery = (SQLQuery) 
queryTransformer.transform(removeQuery);
           InputBinding[] removeBindings = 
BindingFactory.getInputBindings(removeSQLQuery.getParamTypes());
  -        UpdateCommand removeCommand = new JDBCUpdateCommand(ds, 
removeSQLQuery.getSQLText(), removeBindings);
   
           // todo shouldn't query builder do this transform?
           List removeParamsList = new ArrayList(1);
  @@ -291,7 +300,7 @@
               }
           }
           FieldTransform[] removeTransforms = (FieldTransform[]) 
removeParamsList.toArray(new FieldTransform[removeParamsList.size()]);
  -        removeCommand = new ParamRemapper(removeCommand, removeTransforms);
  +        UpdateCommand removeCommand = new JDBCUpdateCommand(ds, 
removeSQLQuery.getSQLText(), removeBindings, removeTransforms);
   
           // defaults
           Object[] defaults = createDefaults(ejb);
  
  
  

Reply via email to