You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/06/26 23:29:05 UTC

svn commit: r550958 - /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java

Author: aadamchik
Date: Tue Jun 26 14:29:05 2007
New Revision: 550958

URL: http://svn.apache.org/viewvc?view=rev&rev=550958
Log:
CAY-811 Meaningful identity columns: user provided PK values are ignored
(partial fix)

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java?view=diff&rev=550958&r1=550957&r2=550958
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java Tue Jun 26 14:29:05 2007
@@ -19,7 +19,6 @@
 
 package org.apache.cayenne.access;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
@@ -110,12 +109,8 @@
         ObjEntity objEntity = descriptor.getEntity();
         DbEntity dbEntity = objEntity.getDbEntity();
         DataNode node = parent.getDomain().lookupDataNode(dbEntity.getDataMap());
-        Collection generatedPks = getAutogeneratedKeys(node, dbEntity);
-
-        if (generatedPks.isEmpty()) {
-            return;
-        }
-
+        boolean supportsGeneratedKeys = node.getAdapter().supportsGeneratedKeys();
+        
         PkGenerator pkGenerator = node.getAdapter().getPkGenerator();
 
         Iterator i = dataObjects.iterator();
@@ -131,7 +126,7 @@
             Map idMap = id.getReplacementIdMap();
 
             boolean autoPkDone = false;
-            Iterator it = generatedPks.iterator();
+            Iterator it = dbEntity.getPrimaryKey().iterator();
             while (it.hasNext()) {
                 DbAttribute dbAttr = (DbAttribute) it.next();
                 String dbAttrName = dbAttr.getName();
@@ -156,7 +151,17 @@
                         }
                     }
                 }
+                
+                // skip db-generated
+                if (supportsGeneratedKeys && dbAttr.isGenerated()) {
+                    continue;
+                }
 
+                // skip propagated
+                if (isPropagated(dbAttr)) {
+                    continue;
+                }
+                
                 // only a single key can be generated from DB... if this is done already
                 // in this loop, we must bail out.
                 if (autoPkDone) {
@@ -176,32 +181,6 @@
                 }
             }
         }
-    }
-
-    /**
-     * Returns a collection of DbAttributes that should be generated by Cayenne.
-     */
-    // TODO, andrus 4/12/2006 - move to DbEntity in 2.0+
-    Collection getAutogeneratedKeys(DataNode node, DbEntity entity) {
-        boolean supportsGeneratedKeys = node.getAdapter().supportsGeneratedKeys();
-        Iterator it = entity.getPrimaryKey().iterator();
-
-        Collection generated = new ArrayList(1);
-        while (it.hasNext()) {
-            DbAttribute next = (DbAttribute) it.next();
-
-            if (supportsGeneratedKeys && next.isGenerated()) {
-                continue;
-            }
-
-            if (isPropagated(next)) {
-                continue;
-            }
-
-            generated.add(next);
-        }
-
-        return generated;
     }
 
     // TODO, andrus 4/12/2006 - move to DbAttribute in 2.0+