You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2007/01/27 08:05:45 UTC

svn commit: r500494 - in /db/ddlutils/trunk/src/java/org/apache/ddlutils/io: DataToDatabaseSink.java WaitingObject.java

Author: tomdz
Date: Fri Jan 26 23:05:45 2007
New Revision: 500494

URL: http://svn.apache.org/viewvc?view=rev&rev=500494
Log:
Fixed bug with inserting data into a table with multiple self-references

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/io/WaitingObject.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java?view=diff&rev=500494&r1=500493&r2=500494
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/io/DataToDatabaseSink.java Fri Jan 26 23:05:45 2007
@@ -290,7 +290,7 @@
 
         if (_ensureFkOrder && (table.getForeignKeyCount() > 0))
         {
-            WaitingObject waitingObj = new WaitingObject(bean);
+            WaitingObject waitingObj = new WaitingObject(bean, origIdentity);
 
             for (int idx = 0; idx < table.getForeignKeyCount(); idx++)
             {

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/io/WaitingObject.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/io/WaitingObject.java?view=diff&rev=500494&r1=500493&r2=500494
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/io/WaitingObject.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/io/WaitingObject.java Fri Jan 26 23:05:45 2007
@@ -19,11 +19,10 @@
  * under the License.
  */
 
-import java.util.ArrayList;
 import java.util.Iterator;
-import java.util.List;
 
 import org.apache.commons.beanutils.DynaBean;
+import org.apache.commons.collections.set.ListOrderedSet;
 
 /**
  * Represents an object waiting for insertion into the database. Is used by the
@@ -36,17 +35,21 @@
 {
     /** The object that is waiting for insertion. */
     private DynaBean _obj;
+    /** The original identity of the waiting object. */
+    private Identity _objIdentity;
     /** The identities of the waited-for objects. */
-    private List _waitedForIdentites = new ArrayList();
+    private ListOrderedSet _waitedForIdentites = new ListOrderedSet();
 
     /**
      * Creates a new <code>WaitingObject</code> instance for the given object.
      * 
-     * @param obj The object that is waiting
+     * @param obj         The object that is waiting
+     * @param objIdentity The (original) identity of the object
      */
-    public WaitingObject(DynaBean obj)
+    public WaitingObject(DynaBean obj, Identity objIdentity)
     {
-        _obj = obj;
+        _obj         = obj;
+        _objIdentity = objIdentity;
     }
 
     /**
@@ -107,5 +110,18 @@
     public boolean hasPendingFKs()
     {
         return !_waitedForIdentites.isEmpty();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        StringBuffer result = new StringBuffer();
+
+        result.append(_objIdentity);
+        result.append(" waiting for ");
+        result.append(_waitedForIdentites.toString());
+        return result.toString();
     }
 }