The attached patch removes support for named parameters from the DAS
implementation. Earlier changes only removed the interface methods.
Index: src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java      
(revision 420563)
+++ src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java      
(working copy)
@@ -119,7 +119,7 @@
 
         // Provide updatecommand programmatically via config
         ConfigHelper helper = new ConfigHelper();
-        helper.addUpdateStatement("update CUSTOMER set LASTNAME = :LASTNAME 
where ID = :ID", "CUSTOMER");         
+        helper.addUpdateStatement("update CUSTOMER set LASTNAME = ? where ID = 
?", "CUSTOMER", "LASTNAME ID");         
         
        DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection());
        
Index: src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java    
(revision 420563)
+++ src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java    
(working copy)
@@ -56,8 +56,8 @@
 
         // Provide updatecommand programmatically via config
         ConfigHelper helper = new ConfigHelper();
-        helper.addUpdateStatement("update CUSTOMER set LASTNAME = :LASTNAME, 
ADDRESS = :ADDRESS where ID = :ID",
-                "CUSTOMER");
+        helper.addUpdateStatement("update CUSTOMER set LASTNAME = ?, ADDRESS = 
? where ID = ?",
+                "CUSTOMER", "LASTNAME ADDRESS ID");
 
         DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection());
         // Read customer 1
Index: src/test/resources/CustOrdersConnectionProps.xml
===================================================================
--- src/test/resources/CustOrdersConnectionProps.xml    (revision 420564)
+++ src/test/resources/CustOrdersConnectionProps.xml    (working copy)
@@ -25,7 +25,7 @@
     </Command>
     
     <Command name="customer and orders"
-        SQL="select * from CUSTOMER left join ANORDER on CUSTOMER.ID = 
ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID"
+        SQL="select * from CUSTOMER left join ANORDER on CUSTOMER.ID = 
ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"
         kind="Select">
         <Parameter name=":ID"/>
     </Command>
@@ -37,9 +37,9 @@
     </Command>
     
     <Command name="update customer"
-        SQL="update CUSTOMER set LASTNAME = 'Pavick' where ID = :ID"
+        SQL="update CUSTOMER set LASTNAME = 'Pavick' where ID = ?"
         kind="Update">
-        <Parameter name=":ID"/>
+        <Parameter name="ID"/>
     </Command>      
     
     <Table tableName="CUSTOMER">
Index: src/test/resources/basicCustomerMappingWithCUD.xml
===================================================================
--- src/test/resources/basicCustomerMappingWithCUD.xml  (revision 420564)
+++ src/test/resources/basicCustomerMappingWithCUD.xml  (working copy)
@@ -16,12 +16,10 @@
  -->
 <Config 
xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
 
-  <Table tableName="CUSTOMER"
-         
-         create="insert into customer values (:ID, :LASTNAME, :ADDRESS)"
-         update="update customer set lastname = :LASTNAME, address = :ADDRESS 
where ID = :ID"
-      delete="delete from customer where ID = :ID">
-
+  <Table tableName="CUSTOMER">                  
+         <create sql="insert into customer values (?, ?, ?)" parameters="ID 
LASTNAME ADDRESS"/>
+         <update sql="update customer set lastname = ?, address = ? where ID = 
?" parameters="LASTNAME ADDRESS ID"/>
+      <delete sql="delete from customer where ID = ?" parameters="ID"/>
   </Table>
        
 </Config>
Index: src/test/resources/basicStaticCustomer.xml
===================================================================
--- src/test/resources/basicStaticCustomer.xml  (revision 420564)
+++ src/test/resources/basicStaticCustomer.xml  (working copy)
@@ -18,8 +18,8 @@
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
 dataObjectModel="org.apache.tuscany.das.rdb.test.customer.Customer">
   
-  <Table tableName="CUSTOMER" typeName="Customer">
-    <Column columnName="ID" primaryKey="true"/>
+ <Table tableName="CUSTOMER" typeName="Customer">
+   <Column columnName="ID" primaryKey="true"/>
     <Column columnName="LASTNAME"/>
     <Column columnName="ADDRESS"/> 
   </Table>
Index: src/test/resources/basicCustomerMappingWithInvalidCUD.xml
===================================================================
--- src/test/resources/basicCustomerMappingWithInvalidCUD.xml   (revision 
420564)
+++ src/test/resources/basicCustomerMappingWithInvalidCUD.xml   (working copy)
@@ -16,10 +16,11 @@
  -->
 <Config 
xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
 
-  <Table tableName="CUSTOMER"
-         create="insert into customer blah values (:ID, :LASTNAME, :ADDRESS)"
-         update="update customer blah set lastname = :LASTNAME, address = 
:ADDRESS where ID = :ID"
-      delete="delete from customer blah where ID = :ID">
+  <Table tableName="CUSTOMER">
+         <create sql="insert into customer blah values (?, ?, ?)" 
parameters="ID LASTNAME ADDRESS"/>
+         <update sql="update customer blah set lastname = ?, address = ? where 
ID = ?" parameters="LASTNAME ADDRESS ID"/>
+      <delete sql="delete from customer blah where ID = ?" parameters="ID"/>
+     
     <Column columnName="ID" primaryKey="true"/>
     <Column columnName="LASTNAME"/>
     <Column columnName="ADDRESS"/> 
Index: src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java        
(revision 419503)
+++ src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java        
(working copy)
@@ -116,7 +116,7 @@
                                                createObjectWithSubtree(root, 
refObject
                                                        
.getContainmentProperty(), refObject);
                                        
-                                               refObject = (DataObject) 
registry.get(refObject.getType().getName(), 
Collections.singletonList(getPrimaryKey(refObject)));
+                                               refObject = 
registry.get(refObject.getType().getName(), 
Collections.singletonList(getPrimaryKey(refObject)));
                                                if (ref.isMany()) {
                                                        newObject.getList(
                                                                
newObject.getType().getProperty(ref.getName()))
Index: src/main/java/org/apache/tuscany/das/rdb/impl/Parameters.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/Parameters.java       
(revision 420189)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/Parameters.java       
(working copy)
@@ -17,7 +17,6 @@
 package org.apache.tuscany.das.rdb.impl;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 
@@ -31,20 +30,14 @@
 
        private ArrayList inParams = new ArrayList();
 
-       private ArrayList outParams = new ArrayList();
+       private ArrayList outParams = new ArrayList();  
 
-       private HashMap parametersByName = new HashMap();
-
        private static boolean debug = false;
 
        public Parameters() {
                super();
        }
 
-       public ParameterImpl get(String name) {
-               return (ParameterImpl) parametersByName.get(name);
-       }
-
        public ParameterImpl get(int index) {
                return (ParameterImpl) parameters.get(index);
        }
@@ -64,23 +57,13 @@
                                || (param.getDirection() == 
ParameterImpl.IN_OUT))
                        outParams.add(param);
 
-               this.parameters.add(param);
-               parametersByName.put(param.getName(), param);
+               this.parameters.add(param);             
        }
 
        public void add(ParameterImpl param) {
                addParameter(param);
        }
 
-       public ParameterImpl findOrCreateParameterNamed(String name) {
-               ParameterImpl param = get(name);
-               if (param == null) {
-                       param = new ParameterImpl(name);
-                       addParameter(param);
-               }
-               return param;
-       }
-
        public ParameterImpl findOrCreateParameterWithIndex(int index, int 
direction,
                        Type sdoType) {
                Iterator i = parameters.iterator();
@@ -112,26 +95,6 @@
                param.setValue(value);
        }
 
-       public void setParameter(String name, Object value) {
-               if (name == null)
-                       throw new RuntimeException("Null parameter name not 
allowed");
-               ParameterImpl param = findOrCreateParameterNamed(name);
-               param.setValue(value);
-       }
-
-       public void setParameterWithType(String name, Type sdoType) {
-               if (name == null)
-                       throw new RuntimeException("Null parameter name not 
allowed");
-               ParameterImpl p = findOrCreateParameterNamed(name);
-               p.setType(sdoType);
-       }
-
-    public void setParameterWithType(int index, Type sdoType) {
-        if (index == 0)
-            throw new RuntimeException("Null parameter index not allowed");
-        ParameterImpl p = findOrCreateParameterWithIndex(index);
-        p.setType(sdoType);
-    }
     
     public ParameterImpl parameterWithIndex(int index) {
                Iterator i = parameters.iterator();
Index: src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java        
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java        
(working copy)
@@ -28,7 +28,7 @@
 // TODO - Can use some refactoring. Much code is duplicated in "execute" 
methods
 public class Statement {
 
-    protected final QueryString queryString;
+    protected final String queryString;
 
     protected ConnectionImpl jdbcConnection;
 
@@ -39,7 +39,7 @@
     private boolean isPaging = false;
 
     public Statement(String sqlString) {
-        this.queryString = new QueryString(sqlString);
+        this.queryString = sqlString; //new QueryString(sqlString);
     }
 
     public ResultSet executeQuery(Parameters parameters) throws SQLException {
@@ -58,8 +58,8 @@
             Iterator inParams = parameters.inParams().iterator();
             while (inParams.hasNext()) {
                 ParameterImpl param = (ParameterImpl) inParams.next();
-                if (param.getIndex() == 0)
-                    
param.setIndex(queryString.getParameterIndex(param.getName()));
+//                if (param.getIndex() == 0)
+//                    
param.setIndex(queryString.getParameterIndex(param.getName()));
                 cs.setObject(param.getIndex(), param.getValue());
             }
 
@@ -67,8 +67,8 @@
             Iterator outParams = parameters.outParams().iterator();
             while (outParams.hasNext()) {
                 ParameterImpl param = (ParameterImpl) outParams.next();
-                if (param.getIndex() == 0)
-                    
param.setIndex(queryString.getParameterIndex(param.getName()));
+//                if (param.getIndex() == 0)
+//                    
param.setIndex(queryString.getParameterIndex(param.getName()));
                 DebugUtil.debugln(getClass(), debug, "Registering parameter " 
+ param.getName());
                 cs.registerOutParameter(param.getIndex(), 
SDODataTypeHelper.sqlTypeFor(param.getType()));
             }
@@ -99,8 +99,8 @@
         Iterator inParams = parameters.inParams().iterator();
         while (inParams.hasNext()) {
             ParameterImpl param = (ParameterImpl) inParams.next();
-            if (param.getIndex() == 0)
-                param.setIndex(queryString.getParameterIndex(param.getName()));
+//            if (param.getIndex() == 0)
+//                
param.setIndex(queryString.getParameterIndex(param.getName()));
             cs.setObject(param.getIndex(), param.getValue());
         }
 
@@ -108,8 +108,8 @@
         Iterator outParams = parameters.outParams().iterator();
         while (outParams.hasNext()) {
             ParameterImpl param = (ParameterImpl) outParams.next();
-            if (param.getIndex() == 0)
-                param.setIndex(queryString.getParameterIndex(param.getName()));
+//            if (param.getIndex() == 0)
+//                
param.setIndex(queryString.getParameterIndex(param.getName()));
             DebugUtil.debugln(getClass(), debug, "Registering parameter " + 
param.getName());
             cs.registerOutParameter(param.getIndex(), 
SDODataTypeHelper.sqlTypeFor(param.getType()));
         }
@@ -129,14 +129,14 @@
      * has been specified and try setObject otherwise.
      */
     public int executeUpdate(Parameters parameters) throws SQLException {
-        DebugUtil.debugln(getClass(), debug, "Executing statement " + 
queryString.getPreparedString());
+        DebugUtil.debugln(getClass(), debug, "Executing statement " + 
queryString);
         PreparedStatement ps = getPreparedStatement();
         Iterator i = parameters.inParams().iterator();
         while (i.hasNext()) {
             ParameterImpl param = (ParameterImpl) i.next();
 
-            if (param.getIndex() == 0)
-                param.setIndex(queryString.getParameterIndex(param.getName()));
+//            if (param.getIndex() == 0)
+//                
param.setIndex(queryString.getParameterIndex(param.getName()));
             Object value = param.getValue();
             DebugUtil.debugln(getClass(), debug, "Setting parameter " + 
param.getIndex() + " to " + value);
             if (value == null) {
@@ -156,8 +156,8 @@
         Iterator i = parameters.inParams().iterator();
         while (i.hasNext()) {
             ParameterImpl param = (ParameterImpl) i.next();
-            if (param.getIndex() == 0)
-                param.setIndex(queryString.getParameterIndex(param.getName()));
+//            if (param.getIndex() == 0)
+//                
param.setIndex(queryString.getParameterIndex(param.getName()));
             ps.setObject(param.getIndex(), param.getValue());
         }
         return ps;
Index: src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java        
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java        
(working copy)
@@ -18,6 +18,8 @@
 
 import java.sql.SQLException;
 
+import org.apache.tuscany.das.rdb.config.Create;
+
 public class InsertCommandImpl extends WriteCommandImpl {
 
        private int generatedKey;
@@ -28,6 +30,11 @@
                super(sqlString);
        }
 
+       public InsertCommandImpl(Create create) {
+               super(create.getSql());
+               addParameters(create.getParameters());
+       }
+
        protected boolean isInsert() {
                return true;
        }
@@ -40,17 +47,6 @@
                throw new RuntimeException("No generated key is available");
        }
 
-       public Object getParameterValue(String name) {
-
-               if (name.equals("generated_key"))
-                       if (hasGeneratedKey)
-                               return new Integer(generatedKey);
-                       else
-                               throw new RuntimeException("No generated key 
available");
-               
-               return super.getParameterValue(name);
-       }
-
        protected void subtypeProcessing() throws SQLException {
                loadGeneratedKey();
        }
Index: src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java      
(revision 420211)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java      
(working copy)
@@ -24,7 +24,6 @@
 import org.apache.tuscany.das.rdb.Command;
 
 import commonj.sdo.DataObject;
-import commonj.sdo.Type;
 import commonj.sdo.helper.XSDHelper;
 
 public abstract class CommandImpl extends BaseCommandImpl implements Command {
@@ -59,26 +58,10 @@
 
        public abstract DataObject executeQuery();
 
-       public void setParameterValue(String name, Object value) {
-               parameters.setParameter(name, value);
-       }
-
        public void setParameter(int index, Object value) {
                parameters.setParameter(index, value);
        }
 
-       public void setParameterType(String name, Type dataType) {
-               parameters.setParameterWithType(name, dataType);
-       }
-
-       public void setParameterType(int index, Type dataType) {
-               parameters.setParameterWithType(index, dataType);
-       }
-
-       protected void addParameter(String name, Type sdoType) {
-               parameters.setParameterWithType(name, sdoType);
-       }
-
        public void addParameter(ParameterImpl param) {
                parameters.add(param);
        }
@@ -88,15 +71,6 @@
                return parameters.parameterList();
        }
 
-       public Object getParameterValue(String name) {
-               ParameterImpl p = parameters.get(name);
-               if (p == null)
-                       throw new RuntimeException("Parameter with name " + name
-                                       + " not found");
-
-               return p;
-       }
-
        public Object getParameter(int index) {
                return parameters.parameterWithIndex(index).getValue();
        }
Index: src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java        
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java        
(working copy)
@@ -16,10 +16,17 @@
  */
 package org.apache.tuscany.das.rdb.impl;
 
+import org.apache.tuscany.das.rdb.config.Update;
+
 public class UpdateCommandImpl extends WriteCommandImpl {
 
        public UpdateCommandImpl(String sqlString) {
                super(sqlString);
        }
+       
+       public UpdateCommandImpl(Update update) {
+               super(update.getSql());
+               addParameters(update.getParameters());
+       }
 
 }
Index: src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java 
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java 
(working copy)
@@ -19,6 +19,7 @@
 import java.sql.SQLException;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.StringTokenizer;
 
 import org.apache.tuscany.das.rdb.config.Config;
 
@@ -70,8 +71,8 @@
        public String toString() {
                
                StringBuffer buffer = new StringBuffer();
-               buffer.append("\nSQL: " + 
statement.queryString.getUnmodifiedString());
-               buffer.append("\nModified SQL: " + 
statement.queryString.getPreparedString());
+               buffer.append("\nSQL: " + statement.queryString);
+               
                return buffer.toString();
        }
 
@@ -79,6 +80,15 @@
                        throw new RuntimeException("No generated key is 
available");
        }
 
+       public void addParameters(String parameters) {
+               StringTokenizer tokenizer = new StringTokenizer(parameters);
+               for (int idx=1; tokenizer.hasMoreTokens(); idx++) {
+                       ParameterImpl p = new ParameterImpl();
+                       p.setName(tokenizer.nextToken());               
+                       p.setIndex(idx);
+                       addParameter(p);
+               }
+       }
        public void addParameters(Collection updateParameters) {
                Iterator i = updateParameters.iterator();
                while ( i.hasNext()) {
Index: src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java    
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java    
(working copy)
@@ -16,16 +16,18 @@
 */
 package org.apache.tuscany.das.rdb.impl;
 
-import java.util.Iterator;
-
+import org.apache.tuscany.das.rdb.config.Create;
+import org.apache.tuscany.das.rdb.config.Delete;
 import org.apache.tuscany.das.rdb.config.Table;
+import org.apache.tuscany.das.rdb.config.Update;
 import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper;
 import org.apache.tuscany.das.rdb.config.wrapper.TableWrapper;
-import org.apache.tuscany.das.rdb.generator.impl.CudGenerator;
+import org.apache.tuscany.das.rdb.generator.impl.DeleteGenerator;
+import org.apache.tuscany.das.rdb.generator.impl.InsertGenerator;
+import org.apache.tuscany.das.rdb.generator.impl.UpdateGenerator;
 import org.apache.tuscany.das.rdb.util.DebugUtil;
 
 import commonj.sdo.DataObject;
-import commonj.sdo.Property;
 import commonj.sdo.Type;
 
 public class ChangeFactory {
@@ -40,8 +42,6 @@
 
        private static final boolean debug = false;
 
-       private CudGenerator cudGenerator;
-
        private final MappingWrapper mapping;
 
        private final ConnectionImpl connection; 
@@ -68,12 +68,6 @@
        public void setDeleteCommand(DeleteCommandImpl cmd) {
                deleteCommand = cmd;
        }
-
-       private CudGenerator getCudGenerator() {
-               if (this.cudGenerator == null) 
-                       this.cudGenerator = new CudGenerator();
-               return this.cudGenerator;
-       }
        
        ChangeOperation createUpdateOperation(DataObject changedObject, String 
propagatedID) {
                return new UpdateOperation(getUpdateCommand(changedObject), 
changedObject, propagatedID);
@@ -109,17 +103,12 @@
                                }
                        }
 
-       
-                       String createStatement = table.getCreate();
-                       if ( createStatement == null ) {
-                               createCommand = 
getCudGenerator().getInsertCommand(mapping, changedObject, table);
+                       Create create = table.getCreate();
+               
+                       if ( create == null ) {
+                               createCommand = 
InsertGenerator.instance.getInsertCommand(mapping, changedObject, table);
                        } else {
-                               createCommand = new 
InsertCommandImpl(createStatement);
-                               Iterator i = 
getCudGenerator().getCreateParameters(mapping, changedObject, table).iterator();
-                               while (i.hasNext()) {
-                                       Property p = (Property)i.next();        
                        
-                                       createCommand.addParameter(p.getName(), 
p.getType());
-                               }
+                               createCommand = new InsertCommandImpl(create);  
                                        
                        }
                        createCommand.setConnection(connection);
                        createCommand.configWrapper = mapping;
@@ -141,15 +130,12 @@
                                }
                        }
                        
-                       String deleteStatement = table.getDelete();
-                       if ( deleteStatement == null ) {
-                               deleteCommand = 
getCudGenerator().getDeleteCommand(table);
+                       Delete delete = table.getDelete();
+                       
+                       if ( delete == null ) {
+                               deleteCommand = 
DeleteGenerator.instance.getDeleteCommand(table);
                        } else {
-                               deleteCommand = new 
DeleteCommandImpl(deleteStatement);                 
-                               Iterator i = 
getCudGenerator().getDeleteParameters(table).iterator();
-                               while (i.hasNext()) {
-                                       
deleteCommand.addParameter((String)i.next(), SDODataTypes.OBJECT);
-                               }
+                               deleteCommand = new DeleteCommandImpl(delete);  
                                        
                        }
                        deleteCommand.setConnection(connection);
                }
@@ -169,18 +155,17 @@
                                        throw new RuntimeException("Table " + 
changedObject.getType().getName() + " was changed in the DataGraph but is not 
present in the Config");
                                }
                        }
-                       String updateStatement = table.getUpdate();
-                       if ( updateStatement == null ) {
-                               updateCommand = 
getCudGenerator().getUpdateCommand(mapping, changedObject,table);
+                       
+                       Update update = table.getUpdate();
+                       
+                       if ( update == null ) {
+                               updateCommand = 
UpdateGenerator.instance.getUpdateCommand(mapping, changedObject,table);
                        } else {
                                TableWrapper t = new TableWrapper(table);
                                if ( t.getCollisionColumn() != null )
-                                       updateCommand = new 
OptimisticWriteCommandImpl(updateStatement);
+                                       updateCommand = new 
OptimisticWriteCommandImpl(update);
                                else
-                                       updateCommand = new 
UpdateCommandImpl(updateStatement);
-                       
-                       
-                               
updateCommand.addParameters(getCudGenerator().getUpdateParameters(changedObject,
 table));
+                                       updateCommand = new 
UpdateCommandImpl(update);                          
                                
                        }
                        updateCommand.setConnection(connection);
Index: 
src/main/java/org/apache/tuscany/das/rdb/impl/OptimisticWriteCommandImpl.java
===================================================================
--- 
src/main/java/org/apache/tuscany/das/rdb/impl/OptimisticWriteCommandImpl.java   
    (revision 419961)
+++ 
src/main/java/org/apache/tuscany/das/rdb/impl/OptimisticWriteCommandImpl.java   
    (working copy)
@@ -18,12 +18,19 @@
 
 import java.sql.SQLException;
 
+import org.apache.tuscany.das.rdb.config.Update;
+
 public class OptimisticWriteCommandImpl extends UpdateCommandImpl {
 
        public OptimisticWriteCommandImpl(String sqlString) {
                super(sqlString);
        }
 
+       public OptimisticWriteCommandImpl(Update update) {
+               super(update);
+               addParameters(update.getParameters());
+       }
+
        public void execute() {
 
                boolean success = false;
Index: src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java   
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java   
(working copy)
@@ -70,15 +70,15 @@
                }
        }
 
-       public PreparedStatement prepareStatement(QueryString queryString)
+       public PreparedStatement prepareStatement(String queryString)
                        throws SQLException {
-               DebugUtil.debugln(getClass(), debug, "Preparing Statement: " + 
queryString.getPreparedString());
-               return 
connection.prepareStatement(queryString.getPreparedString(), 
java.sql.Statement.RETURN_GENERATED_KEYS);
+               DebugUtil.debugln(getClass(), debug, "Preparing Statement: " + 
queryString);
+               return connection.prepareStatement(queryString, 
java.sql.Statement.RETURN_GENERATED_KEYS);
        }
 
-       public PreparedStatement preparePagedStatement(QueryString queryString) 
throws SQLException {
-               DebugUtil.debugln(getClass(), debug, "Preparing Statement: " + 
queryString.getPreparedString());
-               return 
connection.prepareStatement(queryString.getPreparedString(), 
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+       public PreparedStatement preparePagedStatement(String queryString) 
throws SQLException {
+               DebugUtil.debugln(getClass(), debug, "Preparing Statement: " + 
queryString);
+               return connection.prepareStatement(queryString, 
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        }
 
        public void setManageTransactions(boolean manageTransactions) {
@@ -86,8 +86,8 @@
                
        }
 
-       public CallableStatement prepareCall(QueryString queryString) throws 
SQLException {
-               return connection.prepareCall(queryString.getPreparedString());
+       public CallableStatement prepareCall(String queryString) throws 
SQLException {
+               return connection.prepareCall(queryString);
        }
 
        
Index: src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java        
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java        
(working copy)
@@ -16,10 +16,17 @@
  */
 package org.apache.tuscany.das.rdb.impl;
 
+import org.apache.tuscany.das.rdb.config.Delete;
+
 public class DeleteCommandImpl extends WriteCommandImpl {
 
        public DeleteCommandImpl(String sqlString) {
                super(sqlString);
        }
 
+       public DeleteCommandImpl(Delete delete) {
+               super(delete.getSql());
+               addParameters(delete.getParameters());
+       }
+
 }
Index: src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java  (revision 
419503)
+++ src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java  (working copy)
@@ -60,8 +60,8 @@
         configWrapper.addTable(name, propertyName);
     }
     
-    public void addUpdateStatement(String statement, String tableName) {
-        configWrapper.addUpdateCommand(tableName, statement);
+    public void addUpdateStatement(String statement, String tableName, String 
parameters) {
+        configWrapper.addUpdateCommand(tableName, statement, parameters);
     }     
     
     
Index: src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java   
(revision 419660)
+++ src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java   
(working copy)
@@ -73,15 +73,6 @@
                return c == null ? false : c.isGenerated();
        }
 
-       // public Object getColumnNameByProperty(String propertyName) {
-       // Iterator i = table.getColumn().iterator();
-       // while (i.hasNext()) {
-       // Column c = (Column) i.next();
-       // if (propertyName.equals(c.getPropertyName()))
-       // return c.getName();
-       // }
-       // return propertyName;
-       // }
 
        public String getConverter(String propertyName) {
                Column c = getColumnByPropertyName(propertyName);
Index: 
src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java 
(revision 419503)
+++ src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java 
(working copy)
@@ -29,6 +29,7 @@
 import org.apache.tuscany.das.rdb.config.KeyPair;
 import org.apache.tuscany.das.rdb.config.Relationship;
 import org.apache.tuscany.das.rdb.config.Table;
+import org.apache.tuscany.das.rdb.config.Update;
 import org.apache.tuscany.das.rdb.config.impl.ConfigFactoryImpl;
 import org.apache.tuscany.das.rdb.util.DebugUtil;
 
@@ -367,9 +368,12 @@
         throw new RuntimeException("Could not find relationship " + name + " 
in the configuration");
     }
 
-    public void addUpdateCommand(String tableName, String statement) {
+    public void addUpdateCommand(String tableName, String statement, String 
parameters) {
         Table table = findOrCreateTable(tableName);
-        table.setUpdate(statement);
+        Update update = ConfigFactoryImpl.eINSTANCE.createUpdate();
+        update.setSql(statement);
+        update.setParameters(parameters);
+        table.setUpdate(update);
         
     }
 
Index: src/main/java/org/apache/tuscany/das/rdb/generator/impl/CudGenerator.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/generator/impl/CudGenerator.java   
(revision 419503)
+++ src/main/java/org/apache/tuscany/das/rdb/generator/impl/CudGenerator.java   
(working copy)
@@ -1,64 +0,0 @@
-/**
-*
-*  Copyright 2005 The Apache Software Foundation or its licensors, as 
applicable.
-*
-*  Licensed under the Apache License, Version 2.0 (the "License");
-*  you may not use this file except in compliance with the License.
-*  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-*  Unless required by applicable law or agreed to in writing, software
-*  distributed under the License is distributed on an "AS IS" BASIS,
-*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*  See the License for the specific language governing permissions and
-*  limitations under the License.
-*/
-package org.apache.tuscany.das.rdb.generator.impl;
-
-import java.util.Collection;
-
-import org.apache.tuscany.das.rdb.config.Table;
-import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper;
-import org.apache.tuscany.das.rdb.impl.DeleteCommandImpl;
-import org.apache.tuscany.das.rdb.impl.InsertCommandImpl;
-import org.apache.tuscany.das.rdb.impl.UpdateCommandImpl;
-
-import commonj.sdo.DataObject;
-
-public class CudGenerator {
-
-       private static final UpdateGenerator updateGenerator = 
UpdateGenerator.instance;
-
-       private static final InsertGenerator insertGenerator = 
InsertGenerator.instance;
-
-       private static final DeleteGenerator deleteGenerator = 
DeleteGenerator.instance;
-
-       public DeleteCommandImpl getDeleteCommand(Table t) {
-               return deleteGenerator.getDeleteCommand(t);
-       }
-
-       public Collection getDeleteParameters(Table table) {
-               return deleteGenerator.getDeleteParameters(table);
-       }
-
-       public Collection getCreateParameters(MappingWrapper mapping, 
DataObject changedObject, Table table) {
-               return insertGenerator.getInsertParameters(mapping, 
changedObject, table);
-       }
-
-       public InsertCommandImpl getInsertCommand(MappingWrapper mapping, 
DataObject changedObject,
-                       Table table) {
-               return insertGenerator.getInsertCommand(mapping, changedObject, 
table);
-       }
-
-       public UpdateCommandImpl getUpdateCommand(MappingWrapper mapping,
-                       DataObject changedObject, Table table) {
-               return updateGenerator.getUpdateCommand(mapping, changedObject, 
table);
-       }
-
-       public Collection getUpdateParameters(DataObject changedObject, Table 
table) {
-               return updateGenerator.getUpdateParameters(changedObject, 
table);
-       }
-
-}
-
Index: 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java
===================================================================
--- 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java    
    (revision 419660)
+++ 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java    
    (working copy)
@@ -16,7 +16,6 @@
 */
 package org.apache.tuscany.das.rdb.generator.impl;
 
-import java.util.Collection;
 import java.util.Iterator;
 
 import org.apache.tuscany.das.rdb.config.Table;
@@ -32,11 +31,11 @@
 
        private static final boolean debug = false;
 
-       public DeleteGenerator() {
+       private DeleteGenerator() {
                super();
        }
 
-       public String getDeleteStatement(Table t) {
+       private String getDeleteStatement(Table t) {
                TableWrapper table = new TableWrapper(t);
 
                StringBuffer statement = new StringBuffer();
@@ -58,11 +57,6 @@
                return statement.toString();
        }
 
-       public Collection getDeleteParameters(Table table) {
-               TableWrapper wrapper = new TableWrapper(table);
-               return wrapper.getPrimaryKeyProperties();
-       }
-
        public DeleteCommandImpl getDeleteCommand(Table t) {
                TableWrapper tw = new TableWrapper(t);
                DeleteCommandImpl deleteCommand = new 
DeleteCommandImpl(getDeleteStatement(t));
Index: 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
===================================================================
--- 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java    
    (revision 419660)
+++ 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java    
    (working copy)
@@ -17,7 +17,6 @@
 package org.apache.tuscany.das.rdb.generator.impl;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
@@ -43,7 +42,7 @@
 
        public static UpdateGenerator instance = new UpdateGenerator();
 
-       public UpdateGenerator() {
+       private UpdateGenerator() {
                super();
        }
 
@@ -137,16 +136,6 @@
                return updateCommand;
        }
 
-       private List getDataTypeProperties(DataObject obj) {
-               ArrayList fields = new ArrayList();
-               Iterator i = obj.getType().getProperties().iterator();
-               while ( i.hasNext() ) {
-                       Property p = (Property) i.next();
-                       if ( p.getType().isDataType())
-                               fields.add(p);
-               }
-               return fields;
-       }
 
 
        private List getChangedFields(MappingWrapper mapping, ChangeSummary 
summary, DataObject obj) {
@@ -175,31 +164,7 @@
        }
        
        
-       public Collection getUpdateParameters(DataObject changedObject, Table 
table) {
-               Type type = changedObject.getType();
-               TableWrapper wrapper = new TableWrapper(table);
-               Collection pkNames = wrapper.getPrimaryKeyProperties();
-               ArrayList parameters = new ArrayList();
-               ArrayList pkParams = new ArrayList();
-               
-               Iterator i = getDataTypeProperties(changedObject).iterator();
-               while (i.hasNext()) {
-                       Property property = (Property) i.next();
-                       String propertyName = property.getName();
 
-                       ParameterImpl p = createParameter(wrapper, 
type.getProperty(propertyName));
-                       if (pkNames.contains(propertyName)) {
-                               pkParams.add(p);
-                       } else {
-                               parameters.add(p);
-                       }
-               }
-               parameters.addAll(pkParams);            
-               
-               return parameters;
-               
-       }
-
        private ParameterImpl createManagedParameter(TableWrapper table, 
Property property, int idx) {
                ParameterImpl param = new ManagedParameterImpl();
                param.setName(property.getName());
@@ -210,9 +175,7 @@
                
                return param;
        }
-       private ParameterImpl createParameter(TableWrapper table, Property 
property) {
-               return createParameter(table, property, -1);
-       }
+       
        private ParameterImpl createParameter(TableWrapper table, Property 
property, int idx) {         
                ParameterImpl param = new ParameterImpl();
                param.setName(property.getName());
Index: 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
===================================================================
--- 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java    
    (revision 419660)
+++ 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java    
    (working copy)
@@ -17,7 +17,6 @@
 package org.apache.tuscany.das.rdb.generator.impl;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -40,7 +39,7 @@
 
        private static final boolean debug = false;
 
-       public InsertGenerator() {
+       private InsertGenerator() {
                super();
        }
 
@@ -131,23 +130,6 @@
 
        }
 
-       public Collection getInsertParameters(MappingWrapper config,
-                       DataObject changedObject, Table table) {
-               ArrayList parameters = new ArrayList();
-               TableWrapper wrapper = new TableWrapper(table);
-
-               Iterator i = getAttributeProperties(changedObject, 
config).iterator();
-
-               while (i.hasNext()) {
-                       Property attr = (Property) i.next();
-                       if (!wrapper.isGeneratedColumnProperty(attr.getName()))
-                               
parameters.add(changedObject.getType().getProperty(
-                                               attr.getName()));
-               }
-
-               return parameters;
-       }
-
        private boolean hasState(MappingWrapper config, Relationship rel, 
DataObject changedObject) {                                                   
                        
                        if ( !rel.isMany()) {
Index: 
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/schema/ESchemaMaker.java
===================================================================
--- 
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/schema/ESchemaMaker.java  
    (revision 419988)
+++ 
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/schema/ESchemaMaker.java  
    (working copy)
@@ -116,7 +116,7 @@
                                // TODO temporary check until Tuscany-203 is 
fixed
                                if ( !addedProperties.contains(columnName)) {
                                        addedProperties.add(columnName);
-                                       Type atype = (Type) 
resultMetadata.getDataType(i);                                      
+                                       Type atype = 
resultMetadata.getDataType(i);                                     
        
                                        SDOUtil.createProperty(ref.getType(), 
columnName, atype);                               
 
Index: 
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java
===================================================================
--- 
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java 
    (revision 419503)
+++ 
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java 
    (working copy)
@@ -80,11 +80,11 @@
                                tableData.getTableName()).iterator();
                while (columnNames.hasNext()) {
                        String columnName = (String) columnNames.next();
-                       DataObject dataObject = (DataObject) obj;
-                       Property p = findProperty(dataObject.getType(), 
columnName);
+                       
+                       Property p = findProperty(obj.getType(), columnName);
                        Object value = tableData.getColumnData(columnName);
 
-                       dataObject.set(p, value);
+                       obj.set(p, value);
                }
 
                return obj;
Index: src/main/resources/config.xsd
===================================================================
--- src/main/resources/config.xsd       (revision 421689)
+++ src/main/resources/config.xsd       (working copy)
@@ -68,13 +68,25 @@
       <xsd:sequence>
          <xsd:element  maxOccurs="unbounded" minOccurs="0" name="Column"
             type="config:Column"/>
+         <xsd:element  maxOccurs="1" minOccurs="0" name="create" 
type="config:Create"/>
+         <xsd:element  maxOccurs="1" minOccurs="0" name="update" 
type="config:Update"/>
+         <xsd:element maxOccurs="1" minOccurs="0" name="delete" 
type="config:Delete"/>
       </xsd:sequence>
       <xsd:attribute name="tableName" type="xsd:string"/>
-      <xsd:attribute name="typeName" type="xsd:string"/>
-      <xsd:attribute name="create" type="xsd:string"/>
-      <xsd:attribute name="update" type="xsd:string"/>
-      <xsd:attribute name="delete" type="xsd:string"/>
+      <xsd:attribute name="typeName" type="xsd:string"/>      
    </xsd:complexType>
+   <xsd:complexType name="Create">
+         <xsd:attribute name="sql" type="xsd:string"/>
+         <xsd:attribute name="parameters" type="xsd:string"/>
+   </xsd:complexType>
+    <xsd:complexType name="Update">
+         <xsd:attribute name="sql" type="xsd:string"/>
+         <xsd:attribute name="parameters" type="xsd:string"/>
+   </xsd:complexType>
+    <xsd:complexType name="Delete">
+         <xsd:attribute name="sql" type="xsd:string"/>
+         <xsd:attribute name="parameters" type="xsd:string"/>
+   </xsd:complexType>
    <xsd:complexType name="KeyPair">
       <xsd:attribute name="primaryKeyColumn" type="xsd:string"/>
       <xsd:attribute name="foreignKeyColumn" type="xsd:string"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to