Kevin,

 The data came from the Clover tool mentioned on the dev list
recently (www.cenqua.com/clover). I'm using the eclipse plugin. I have
some minor issues with it (for example, any refactoring will
immediately flag every line of code as not executed, producing a ton
of warnings in eclipse.) Overall, it's pretty nice, and is a lot
lighter weight than some other tools I've used.

Brent


On 7/24/06, Kevin Williams <[EMAIL PROTECTED]> wrote:
Brent,
This looks good.  What tool provided the coverage data?
Thanks,
--Kevin


Brent Daniel wrote:

> The attached patch has three changes in response to coverage data:
>
> 1) Some dead internal code has been removed
> 2) Test cases have been updated to test some corner cases that weren't
> being covered
> 3) A fix to operation sorting for deletes (this was not being tested
> previously.)
>
> Brent
>
>------------------------------------------------------------------------
>
>Index: 
src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java
>===================================================================
>--- src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java  
(revision 425121)
>+++ src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java  
(working copy)
>@@ -16,6 +16,9 @@
>  */
> package org.apache.tuscany.das.rdb.test;
>
>+import java.util.ArrayList;
>+import java.util.Iterator;
>+
> import org.apache.tuscany.das.rdb.Command;
> import org.apache.tuscany.das.rdb.DAS;
> import org.apache.tuscany.das.rdb.test.data.CityData;
>@@ -75,4 +78,44 @@
>               assertEquals(numberOfStates + 1, root.getList("STATES").size());
>       }
>
>+      public void testDeletes() throws Exception {
>+              DAS das = DAS.FACTORY.createDAS(getConfig("cityStates.xml"), 
getConnection());
>+              Command select = das
>+                              .createCommand(
>+                                              "Select * from STATES inner join 
CITIES on STATES.ID = CITIES.STATE_ID");
>+              DataObject root = select.executeQuery();
>+
>+
>+              DataObject firstState = root.getDataObject("STATES[1]");
>+              String stateName = firstState.getString("NAME");
>+
>+              ArrayList cityNames = new ArrayList();
>+              Iterator i = firstState.getList("cities").iterator();
>+              while ( i.hasNext()) {
>+                      DataObject firstCity = (DataObject) i.next();
>+                      cityNames.add(firstCity.getString("NAME"));
>+                      firstCity.delete();
>+              }
>+              firstState.delete();
>+
>+
>+
>+
>+              das.applyChanges(root);
>+
>+              root = select.executeQuery();
>+
>+              Iterator iter = root.getList("STATES").iterator();
>+              while ( iter.hasNext()) {
>+                      DataObject state = (DataObject)iter.next();
>+                      assertFalse(state.getString("NAME").equals(stateName));
>+              }
>+
>+              iter = root.getList("CITIES").iterator();
>+              while ( iter.hasNext()) {
>+                      DataObject city = (DataObject)iter.next();
>+                      assertFalse(cityNames.contains(city.getString("NAME")));
>+              }
>+
>+      }
> }
>Index: src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java
>===================================================================
>--- src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java  
(revision 425121)
>+++ src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java  
(working copy)
>@@ -16,6 +16,7 @@
>  */
> package org.apache.tuscany.das.rdb.test;
>
>+import java.io.FileInputStream;
> import java.sql.Connection;
>
> import org.apache.tuscany.das.rdb.Command;
>@@ -26,6 +27,7 @@
> import org.apache.tuscany.das.rdb.test.data.OrderData;
> import org.apache.tuscany.das.rdb.test.data.OrderDetailsData;
> import org.apache.tuscany.das.rdb.test.framework.DasTest;
>+import org.apache.tuscany.das.rdb.util.ConfigUtil;
> import org.apache.tuscany.sdo.util.SDOUtil;
>
> public class ExceptionTests extends DasTest {
>@@ -133,5 +135,6 @@
>
>     }
>
>+
>
> }
>Index: src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java
>===================================================================
>--- src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java   
(revision 425121)
>+++ src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java   
(working copy)
>@@ -48,6 +48,41 @@
>         super.tearDown();
>     }
>
>+    public void testDeleteAndCreate() throws Exception {
>+              DAS das = DAS.FACTORY.createDAS(
>+                              getConfig("basicCustomerMappingWithCUD2.xml"), 
getConnection());
>+              // Read customer 1
>+              Command select = das
>+                              .createCommand("Select * from CUSTOMER");
>+              DataObject root = select.executeQuery();
>+
>+              DataObject customer = (DataObject) root.get("CUSTOMER[1]");
>+
>+              int customerId = customer.getInt("ID");
>+              // Modify customer
>+              customer.delete();
>+
>+              DataObject newCustomer = root.createDataObject("CUSTOMER");
>+              newCustomer.setInt("ID", 9999);
>+              newCustomer.setString("LASTNAME", "Jones");
>+
>+              // Build apply changes command
>+              das.applyChanges(root);
>+
>+              // Verify changes
>+              root = select.executeQuery();
>+              boolean found = false;
>+              Iterator i = root.getList("CUSTOMER").iterator();
>+              while ( i.hasNext()) {
>+                      customer = (DataObject)i.next();
>+                      assertFalse(customerId == customer.getInt("ID"));
>+                      if ( customer.getInt("ID") == 9999 )
>+                              found = true;
>+              }
>+
>+              assertTrue(found);
>+
>+      }
>     /**
>      * Read and modify a customer. Provide needed Create/Update/Delete
>      * statements programatically
>Index: src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java
>===================================================================
>--- src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java        
(revision 425121)
>+++ src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java        
(working copy)
>@@ -17,7 +17,10 @@
> package org.apache.tuscany.das.rdb.test;
>
> import org.apache.tuscany.das.rdb.Command;
>+import org.apache.tuscany.das.rdb.ConfigHelper;
> import org.apache.tuscany.das.rdb.DAS;
>+import org.apache.tuscany.das.rdb.config.Config;
>+import org.apache.tuscany.das.rdb.config.ConfigFactory;
> import org.apache.tuscany.das.rdb.test.data.BookData;
> import org.apache.tuscany.das.rdb.test.framework.DasTest;
>
>@@ -99,4 +102,29 @@
>                               throw ex;
>               }
>       }
>+
>+      public void testProvidedConfig() throws Exception {
>+              // Create config programmatically
>+              Config config = ConfigFactory.INSTANCE.createConfig();
>+              ConfigHelper helper = new ConfigHelper(config);
>+              helper.addPrimaryKey("BOOK.BOOK_ID");
>+              DAS das = DAS.FACTORY.createDAS(helper.getConfig(), 
getConnection());
>+
>+              // Read a book instance
>+              Command select = das
>+                              .createCommand("SELECT * FROM BOOK WHERE BOOK_ID = 
1");
>+              DataObject root = select.executeQuery();
>+              DataObject book = root.getDataObject("BOOK[1]");
>+              // Change a field to mark the instance 'dirty'
>+              book.setInt("QUANTITY", 2);
>+
>+              // Flush the change
>+
>+              das.applyChanges(root);
>+
>+              // Verify
>+              root = select.executeQuery();
>+              book = root.getDataObject("BOOK[1]");
>+              assertEquals(2, book.getInt("QUANTITY"));
>+      }
> }
>Index: src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java
>===================================================================
>--- src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java  
(revision 425121)
>+++ src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java  
(working copy)
>@@ -23,8 +23,11 @@
>
> import org.apache.tuscany.das.rdb.Command;
> import org.apache.tuscany.das.rdb.DAS;
>+import org.apache.tuscany.das.rdb.test.customer.Customer;
>+import org.apache.tuscany.das.rdb.test.customer.CustomerFactory;
> import org.apache.tuscany.das.rdb.test.data.CustomerData;
> import org.apache.tuscany.das.rdb.test.framework.DasTest;
>+import org.apache.tuscany.sdo.util.SDOUtil;
>
> import commonj.sdo.DataObject;
>
>@@ -99,4 +102,59 @@
>
>       }
>
>+      public void testInvalidConverter1() throws Exception {
>+
>+              DAS das = 
DAS.FACTORY.createDAS(getConfig("InvalidConverter.xml"), getConnection());
>+
>+              // Build the select command to read a specific customer and 
related
>+              // orders
>+              Command select = das
>+                              .createCommand(
>+                                              "SELECT * FROM CUSTOMER LEFT JOIN 
ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?");
>+
>+              // Parameterize the command
>+              select.setParameter(1, new Integer(1));
>+
>+              // Get the graph
>+              try {
>+                      select.executeQuery();
>+              } catch (Exception ex) {
>+                      assertEquals("java.lang.ClassNotFoundException: 
not.a.valid.class", ex.getMessage());
>+              }
>+
>+
>+      }
>+
>+      public void testInvalidConverter2() throws Exception {
>+
>+              SDOUtil.registerStaticTypes(CustomerFactory.class);
>+              DAS das = 
DAS.FACTORY.createDAS(getConfig("InvalidConverter.xml"), getConnection());
>+
>+              // Build the select command to read a specific customer and 
related
>+              // orders
>+              Command select = das
>+                              .createCommand(
>+                                              "SELECT * FROM ANORDER");
>+
>+              // Get the graph
>+
>+              DataObject root = select.executeQuery();
>+              DataObject order = root.getDataObject("AnOrder[1]");
>+
>+              Customer customer = (Customer) 
root.createDataObject("Customer");
>+              customer.setID(700);
>+              customer.setLastName("Daniel");
>+              customer.setAddress("an address");
>+
>+              customer.getOrders().add(order);
>+
>+              try {
>+                      das.applyChanges(root);
>+              } catch (Exception ex) {
>+                      assertEquals("java.lang.ClassNotFoundException: 
not.a.valid.class", ex.getMessage());
>+              }
>+
>+
>+      }
>+
> }
>Index: src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java
>===================================================================
>--- src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java     
(revision 425121)
>+++ src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java     
(working copy)
>@@ -22,6 +22,8 @@
>  *
>  */
>
>+import java.util.Iterator;
>+
> import org.apache.tuscany.das.rdb.Command;
> import org.apache.tuscany.das.rdb.DAS;
> import org.apache.tuscany.das.rdb.test.data.CompanyData;
>@@ -100,6 +102,31 @@
>
>     }
>
>+    // Test insert into row with generated ID and generated insert
>+    public void testInsert4() throws Exception {
>+
>+      DAS das = 
DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"),getConnection());
>+        Command select = das.getCommand("all companies");
>+        DataObject root = select.executeQuery();
>+
>+        DataObject company = root.createDataObject("COMPANY");
>+        company.setString("NAME", "Phil's Tires");
>+        // This shouldn't do anything
>+        company.setInt("ID", 999);
>+
>+        das.applyChanges(root);
>+
>+        // Verify insert
>+        root = select.executeQuery();
>+
>+        assertEquals(4, root.getList("COMPANY").size());
>+        Iterator i = root.getList("COMPANY").iterator();
>+        while ( i.hasNext()) {
>+              DataObject comp = (DataObject)i.next();
>+              assertFalse( comp.getInt("ID") == 999);
>+        }
>+
>+    }
>     // Test ability to propogate generated values back to owning data objects
>     public void testPropagateIds() throws Exception {
>
>Index: src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java
>===================================================================
>--- src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java        
(revision 425121)
>+++ src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java        
(working copy)
>@@ -92,4 +92,21 @@
>         assertEquals(2, firstOrder.getList("ORDERDETAILS").size());
>
>     }
>+
>+    public void testReadAndDelete() throws Exception {
>+      DAS das = 
DAS.FACTORY.createDAS(getConfig("OrdersOrderDetailsConfig.xml"), getConnection());
>+        Command getOrderDetails = das
>+                .createCommand("Select * from ORDERDETAILS where ORDERID = ? AND 
PRODUCTID = ?");
>+
>+
>+        getOrderDetails.setParameter(1, new Integer(1));
>+        getOrderDetails.setParameter(2, new Integer(1));
>+
>+        DataObject root = getOrderDetails.executeQuery();
>+
>+        DataObject orderDetail = (DataObject) root.get("ORDERDETAILS[1]");
>+        orderDetail.delete();
>+        das.applyChanges(root);
>+
>+    }
> }
>Index: src/test/resources/BooksConfig.xml
>===================================================================
>--- src/test/resources/BooksConfig.xml (revision 425121)
>+++ src/test/resources/BooksConfig.xml (working copy)
>@@ -21,7 +21,7 @@
>
>       <Table tableName="BOOK">
>         <Column columnName="BOOK_ID" primaryKey="true"/>
>-          <Column columnName="OCC" collision="true"/>
>+          <Column columnName="OCC" collision="true" 
propertyName="anOccColumn"/>
>     </Table>
>
> </Config>
>Index: src/test/resources/InvalidConverter.xml
>===================================================================
>--- /dev/null  (revision 0)
>+++ src/test/resources/InvalidConverter.xml    (revision 0)
>@@ -0,0 +1,35 @@
>+<?xml version="1.0" encoding="ASCII"?>
>+<!--
>+  Copyright (c) 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.
>+ -->
>+<Config 
xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd";
>+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>+dataObjectModel="http:///org.apache.tuscany.das.rdb.test/customer.xsd";>
>+
>+  <Table tableName="CUSTOMER" typeName="Customer">
>+    <Column columnName="ID"  primaryKey="true" 
converterClassName="not.a.valid.class"/>
>+  </Table>
>+
>+  <Table tableName="ANORDER" typeName="AnOrder">
>+      <Column columnName="CUSTOMER_ID"/>
>+    <Column columnName="ID"  primaryKey="true"/>
>+  </Table>
>+
>+  <Relationship name="orders" primaryKeyTable="CUSTOMER" foreignKeyTable="ANORDER" 
many="true">
>+     <KeyPair primaryKeyColumn="ID" foreignKeyColumn="CUSTOMER_ID"/>
>+  </Relationship>
>+
>+</Config>
>+
>Index: 
src/main/java/org/apache/tuscany/das/rdb/impl/ApplyChangesCommandImpl.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/impl/ApplyChangesCommandImpl.java 
(revision 425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/impl/ApplyChangesCommandImpl.java 
(working copy)
>@@ -34,13 +34,6 @@
>     private static final boolean debug = false;
>
>     private ChangeSummarizer summarizer = new ChangeSummarizer();
>-
>-    public ApplyChangesCommandImpl() {
>-    }
>-
>-    public ApplyChangesCommandImpl(Config config){
>-      this.configWrapper = new MappingWrapper(config);
>-    }
>
>     public ApplyChangesCommandImpl(Config config, Connection connection){
>         this.configWrapper = new MappingWrapper(config);
>@@ -53,18 +46,7 @@
>               summarizer.setConnection(connection);
>       }
>
>-    public void addCreateCommand(Type type, Command cmd) {
>-        summarizer.addCreateCommand(type, cmd);
>-    }
>
>-    public void addUpdateCommand(Type type, Command cmd) {
>-        summarizer.addUpdateCommand(type, cmd);
>-    }
>-
>-    public void addDeleteCommand(Type type, Command cmd) {
>-        summarizer.addDeleteCommand(type, cmd);
>-    }
>-
>     public void execute(DataObject root) {
>         DebugUtil.debugln(getClass(), debug, "Executing ApplyChangesCmd");
>
>Index: src/main/java/org/apache/tuscany/das/rdb/impl/FactoryRegistry.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/impl/FactoryRegistry.java 
(revision 425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/impl/FactoryRegistry.java 
(working copy)
>@@ -39,7 +39,7 @@
>               ChangeFactory factory = (ChangeFactory)registry.get(type);
>               if ( factory == null )  {
>                       DebugUtil.debugln(getClass(), debug, "Creating new 
ChangeFactory for type " + type.getName());
>-                      factory = new ChangeFactory(type, mapping, connection);
>+                      factory = new ChangeFactory(mapping, connection);
>                       registry.put(type, factory);
>               }
>               return factory;
>Index: src/main/java/org/apache/tuscany/das/rdb/impl/ParameterImpl.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/impl/ParameterImpl.java   
(revision 425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/impl/ParameterImpl.java   
(working copy)
>@@ -50,10 +50,6 @@
>               super();
>       }
>
>-      public ParameterImpl(String name) {
>-              this.name = name;
>-      }
>-
>       public ParameterImpl(int index) {
>               this.index = index;
>       }
>@@ -113,14 +109,6 @@
>               return this.converter;
>       }
>
>-
>-      public String toString() {
>-              StringBuffer buffer = new StringBuffer();
>-              buffer.append("Index: " + getIndex());
>-              buffer.append("\nName: " + getName());
>-              buffer.append("\nValue: " + getValue());
>-              return buffer.toString();
>-      }
>
>
> }
>Index: src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java       
(revision 425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java       
(working copy)
>@@ -35,9 +35,6 @@
>               addParameters(create.getParameters());
>       }
>
>-      protected boolean isInsert() {
>-              return true;
>-      }
>
>       public int getGeneratedKey() {
>
>@@ -60,16 +57,5 @@
>
>       }
>
>-      public String toString() {
>
>-              String superString = super.toString();
>-              StringBuffer buffer = new StringBuffer(superString);
>-
>-              buffer.append("\nGenerating key: " + hasGeneratedKey);
>-              if (hasGeneratedKey)
>-                      buffer.append("\nGenerated key: " + generatedKey);
>-
>-              return buffer.toString();
>-      }
>-
> }
>Index: src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java        
(revision 425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java        
(working copy)
>@@ -17,8 +17,6 @@
> package org.apache.tuscany.das.rdb.impl;
>
> import java.sql.SQLException;
>-import java.util.Collection;
>-import java.util.Iterator;
> import java.util.StringTokenizer;
>
> import org.apache.tuscany.das.rdb.config.Config;
>@@ -89,13 +87,7 @@
>                       addParameter(p);
>               }
>       }
>-      public void addParameters(Collection updateParameters) {
>-              Iterator i = updateParameters.iterator();
>-              while ( i.hasNext()) {
>-                      ParameterImpl p = (ParameterImpl) i.next();
>-                      addParameter(p);
>-              }
>-      }
>+
>
>
> }
>Index: src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java   
(revision 425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java   
(working copy)
>@@ -28,11 +28,8 @@
> import org.apache.tuscany.das.rdb.util.DebugUtil;
>
> import commonj.sdo.DataObject;
>-import commonj.sdo.Type;
>
> public class ChangeFactory {
>-
>-      private final Type type;
>
>       private InsertCommandImpl createCommand;
>
>@@ -46,15 +43,10 @@
>
>       private final ConnectionImpl connection;
>
>-      public ChangeFactory(Type type, MappingWrapper mapping, ConnectionImpl 
connection) {
>-              this.type = type;
>+      public ChangeFactory(MappingWrapper mapping, ConnectionImpl connection) 
{
>               this.mapping = mapping;
>               this.connection = connection;
>       }
>-
>-      public Type getType() {
>-              return this.type;
>-      }
>
>       public void setCreateCommand(InsertCommandImpl cmd) {
>               createCommand = cmd;
>@@ -138,6 +130,7 @@
>                               deleteCommand = new DeleteCommandImpl(delete);
>                       }
>                       deleteCommand.setConnection(connection);
>+                      deleteCommand.configWrapper = mapping;
>               }
>               return deleteCommand;
>       }
>Index: src/main/java/org/apache/tuscany/das/rdb/impl/QueryString.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/impl/QueryString.java     
(revision 425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/impl/QueryString.java     
(working copy)
>@@ -1,86 +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.impl;
>-
>-import java.util.HashMap;
>-import java.util.Iterator;
>-import java.util.regex.Matcher;
>-import java.util.regex.Pattern;
>-
>-import org.apache.tuscany.das.rdb.util.DebugUtil;
>-
>-
>-public class QueryString {
>-
>-      private final String unmodifiedQueryString;
>-      private final String preparedString;
>-      private HashMap parameters = new HashMap();
>-      private static final boolean debug = false;
>-
>-      public QueryString(String originalString) {
>-              this.unmodifiedQueryString = originalString;
>-              this.preparedString = replaceNamesAndSetIndexes(originalString);
>-      }
>-
>-      public String getPreparedString() {
>-              return this.preparedString;
>-      }
>-
>-      public String getUnmodifiedString() {
>-              return this.unmodifiedQueryString;
>-      }
>-
>-      public int getParameterIndex(String name) {
>-              DebugUtil.debugln(getClass(), debug, "Looking for parameter index 
for: " + name);
>-              return ((Integer)parameters.get(name)).intValue();
>-      }
>-
>-      private String replaceNamesAndSetIndexes(String query) {
>-              DebugUtil.debugln(getClass(), debug, "Parameterizing query: " + 
query);
>-              Pattern p = Pattern.compile(":[\\S&&[^,()]]*");
>-              Matcher m = p.matcher(query);
>-
>-              int index = 1;
>-              while (m.find()) {
>-                      parameters.put(m.group().substring(1), new 
Integer(index));
>-                      query = m.replaceFirst("?");
>-                      m = p.matcher(query);
>-                      index++;
>-              }
>-
>-              DebugUtil.debugln(getClass(), debug, "Parameterized query: " + 
query);
>-              return query;
>-      }
>-
>-
>-      public String toString() {
>-              StringBuffer buffer = new StringBuffer();
>-              buffer.append("\nOriginal SQL: ");
>-              buffer.append(unmodifiedQueryString);
>-              buffer.append("\nPrepared SQL: ");
>-              buffer.append(preparedString);
>-              buffer.append("\nParameters: ");
>-              Iterator i = parameters.keySet().iterator();
>-              while ( i.hasNext() ) {
>-                      String key = (String)i.next();
>-                      buffer.append("\n");
>-                      buffer.append(key);
>-              }
>-              return buffer.toString();
>-      }
>-
>-}
>Index: src/main/java/org/apache/tuscany/das/rdb/impl/DeleteList.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/impl/DeleteList.java      
(revision 425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/impl/DeleteList.java      
(working copy)
>@@ -21,6 +21,8 @@
> import java.util.HashMap;
> import java.util.Iterator;
>
>+import org.apache.tuscany.das.rdb.util.DebugUtil;
>+
> /**
>  * DeleteList will sort delete operations so that child objects are deleted
>  * before their parents
>@@ -40,7 +42,7 @@
>       }
>
>       public void add(ChangeOperation op) {
>-              if (( order == null  ) || ( op.getTableName() == null ) ) {
>+              if (( order.size() == 0  ) || ( op.getTableName() == null ) ) {
>                       deleteOperations.add(op);
>               } else {
>                       String name = op.getTableName();
>@@ -54,11 +56,12 @@
>       }
>
>       public Collection getSortedList() {
>-              if  (( order != null  ) && ( opsByTableName.keySet().size() > 
0) ) {
>+              if  (( order.size() > 0  ) && ( opsByTableName.keySet().size() 
> 0) ) {
>                       Iterator i = this.order.iterator();
>                       while (i.hasNext()) {
>                               String name = (String) i.next();
>-                              deleteOperations.addAll((Collection) 
opsByTableName.get(name));
>+                              if ( opsByTableName.get(name) != null)
>+                                      deleteOperations.addAll((Collection) 
opsByTableName.get(name));
>                       }
>               }
>
>Index: src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
>===================================================================
>--- src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java (revision 
425121)
>+++ src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java (working copy)
>@@ -44,9 +44,6 @@
>         configWrapper = new MappingWrapper(config);
>     }
>
>-    public Config newInstance() {
>-        return factory.createConfig();
>-    }
>
>     public void addPrimaryKey(String columnName) {
>         configWrapper.addPrimaryKey(columnName);
>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 425121)
>+++ 
src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java        
(working copy)
>@@ -190,19 +190,6 @@
>         return propertyName;
>     }
>
>-    public void addCollisionColumn(String columnName) {
>-
>-        if (config == null)
>-            config = factory.createConfig();
>-
>-        QualifiedColumn occColumn = new QualifiedColumn(columnName);
>-        Table t = findOrCreateTable(occColumn.getTableName());
>-        Column c = findOrCreateColumn(t, occColumn.getColumnName());
>-        c.setCollision(true);
>-
>-        config.getTable().add(t);
>-    }
>-
>     public void addTable(String tableName, String typeName) {
>         Table table = getTable(tableName);
>         if (table != null)
>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 425121)
>+++ 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java       
(working copy)
>@@ -111,7 +111,7 @@
>                       } else {
>                               if ( obj.isSet(p) ) {
>                                       Relationship relationship = 
config.getRelationshipByReference(p);
>-                                      if ( p.getOpposite().isMany() || 
(hasState(config, relationship, obj))) {
>+                                      if ((p.getOpposite() != null && 
p.getOpposite().isMany()) || (hasState(config, relationship, obj))) {
>                                               RelationshipWrapper r = new 
RelationshipWrapper(
>                                                       relationship);
>                                               Iterator keys = 
r.getForeignKeys().iterator();
>Index: pom.xml
>===================================================================
>--- pom.xml    (revision 425121)
>+++ pom.xml    (working copy)
>@@ -63,8 +63,6 @@
>                         <id>config</id>
>                         <configuration>
>                             
<schemaFile>${basedir}/src/main/resources/config.xsd</schemaFile>
>-                            <generateLoader>true</generateLoader>
>-                            <generateSwitch>true</generateSwitch>
>                             <noNotification>true</noNotification>
>                             <noUnsettable>true</noUnsettable>
>                         </configuration>
>@@ -76,8 +74,6 @@
>                         <id>company</id>
>                         <configuration>
>                             
<schemaFile>${basedir}/src/test/resources/company.xsd</schemaFile>
>-                            <generateLoader>true</generateLoader>
>-                            <generateSwitch>true</generateSwitch>
>                             <noUnsettable>true</noUnsettable>
>                         </configuration>
>                         <goals>
>@@ -88,8 +84,6 @@
>                         <id>customer</id>
>                         <configuration>
>                             
<schemaFile>${basedir}/src/test/resources/customer.xsd</schemaFile>
>-                            <generateLoader>true</generateLoader>
>-                            <generateSwitch>true</generateSwitch>
>                             <noUnsettable>true</noUnsettable>
>                         </configuration>
>                         <goals>
>
>
>------------------------------------------------------------------------
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to