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/12/23 18:14:56 UTC

svn commit: r606575 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/access/

Author: aadamchik
Date: Sun Dec 23 09:14:52 2007
New Revision: 606575

URL: http://svn.apache.org/viewvc?rev=606575&view=rev
Log:
CAY-948 Implement flattened attributes in Cayenne
(inserts now work)

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java?rev=606575&r1=606574&r2=606575&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java Sun Dec 23 09:14:52 2007
@@ -59,34 +59,23 @@
 
         for (DbEntity dbEntity : dbEntities) {
 
-            Collection<ClassDescriptor> objEntitiesForDbEntity = descriptorsByDbEntity
-                    .get(dbEntity);
+            Collection<ClassDescriptor> descriptors = descriptorsByDbEntity.get(dbEntity);
 
             InsertBatchQuery batch = new InsertBatchQuery(dbEntity, 27);
-            for (ClassDescriptor descriptor : objEntitiesForDbEntity) {
+            for (ClassDescriptor descriptor : descriptors) {
 
                 diffBuilder.reset(descriptor.getEntity(), dbEntity);
 
-                boolean isMasterDbEntity = (descriptor.getEntity().getDbEntity() == dbEntity);
-
-                // remove object set for dependent entity, so that it does not show up
-                // on post processing
-                List<Persistent> objects = isMasterDbEntity ? objectsByDescriptor
-                        .get(descriptor) : objectsByDescriptor.remove(descriptor);
-
+                List<Persistent> objects = objectsByDescriptor.get(descriptor);
                 if (objects.isEmpty()) {
                     continue;
                 }
 
                 checkReadOnly(descriptor.getEntity());
-
-                if (isMasterDbEntity) {
-                    createPermIdsForObjEntity(descriptor, objects);
-                    sorter.sortObjectsForEntity(descriptor.getEntity(), objects, false);
-                }
+                createPermIds(descriptor, dbEntity, objects);
+                sorter.sortObjectsForEntity(descriptor.getEntity(), objects, false);
 
                 for (Persistent o : objects) {
-
                     Map<Object, Object> snapshot = diffBuilder.buildDBDiff(parent
                             .objectDiff(o.getObjectId()));
 
@@ -98,8 +87,9 @@
         }
     }
 
-    void createPermIdsForObjEntity(
+    void createPermIds(
             ClassDescriptor descriptor,
+            DbEntity entity,
             Collection<Persistent> objects) {
 
         if (objects.isEmpty()) {
@@ -107,8 +97,7 @@
         }
 
         ObjEntity objEntity = descriptor.getEntity();
-        DbEntity dbEntity = objEntity.getDbEntity();
-        DataNode node = parent.getDomain().lookupDataNode(dbEntity.getDataMap());
+        DataNode node = parent.getDomain().lookupDataNode(entity.getDataMap());
         boolean supportsGeneratedKeys = node.getAdapter().supportsGeneratedKeys();
 
         PkGenerator pkGenerator = node.getAdapter().getPkGenerator();
@@ -124,7 +113,7 @@
 
             boolean autoPkDone = false;
 
-            for (DbAttribute dbAttr : dbEntity.getPrimaryKeys()) {
+            for (DbAttribute dbAttr : entity.getPrimaryKeys()) {
                 String dbAttrName = dbAttr.getName();
 
                 if (idMap.containsKey(dbAttrName)) {
@@ -174,7 +163,7 @@
 
                 // finally, use database generation mechanism
                 try {
-                    Object pkValue = pkGenerator.generatePkForDbEntity(node, dbEntity);
+                    Object pkValue = pkGenerator.generatePkForDbEntity(node, entity);
                     idMap.put(dbAttrName, pkValue);
                     autoPkDone = true;
                 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java?rev=606575&r1=606574&r2=606575&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java Sun Dec 23 09:14:52 2007
@@ -41,6 +41,7 @@
 import org.apache.cayenne.reflect.ArcProperty;
 import org.apache.cayenne.reflect.AttributeProperty;
 import org.apache.cayenne.reflect.ClassDescriptor;
+import org.apache.cayenne.reflect.Property;
 import org.apache.cayenne.reflect.PropertyException;
 import org.apache.cayenne.reflect.ToManyMapProperty;
 import org.apache.commons.collections.Factory;
@@ -170,17 +171,14 @@
 
             CompoundDiff result = parent.getResultDiff();
             Map modifiedSnapshots = parent.getResultModifiedSnapshots();
-            Collection deletedIds = parent.getResultDeletedIds();
+            Collection<ObjectId> deletedIds = parent.getResultDeletedIds();
 
-            Iterator it = objectsByDescriptor.entrySet().iterator();
-            while (it.hasNext()) {
+            for (Map.Entry<ClassDescriptor, List<Persistent>> entry : objectsByDescriptor
+                    .entrySet()) {
 
-                Map.Entry entry = (Map.Entry) it.next();
-                ClassDescriptor descriptor = (ClassDescriptor) entry.getKey();
+                ClassDescriptor descriptor = entry.getKey();
 
-                Iterator objects = ((Collection) entry.getValue()).iterator();
-                while (objects.hasNext()) {
-                    Persistent object = (Persistent) objects.next();
+                for (Persistent object : entry.getValue()) {
                     ObjectId id = object.getObjectId();
 
                     ObjectId finalId;
@@ -188,8 +186,8 @@
                     // record id change and update attributes for generated ids
                     if (id.isReplacementIdAttached()) {
 
-                        Map replacement = id.getReplacementIdMap();
-                        Iterator idProperties = descriptor.getIdProperties();
+                        Map<String, Object> replacement = id.getReplacementIdMap();
+                        Iterator<Property> idProperties = descriptor.getIdProperties();
                         while (idProperties.hasNext()) {
                             AttributeProperty property = (AttributeProperty) idProperties
                                     .next();
@@ -222,7 +220,6 @@
                     }
                     else {
                         finalId = id;
-
                     }
 
                     // do not take the snapshot until generated columns are processed (see
@@ -238,9 +235,10 @@
                     modifiedSnapshots.put(finalId, dataRow);
 
                     // update Map reverse relationships
-                    Iterator mapArcProperties = descriptor.getMapArcProperties();
+                    Iterator<ArcProperty> mapArcProperties = descriptor
+                            .getMapArcProperties();
                     while (mapArcProperties.hasNext()) {
-                        ArcProperty arc = (ArcProperty) mapArcProperties.next();
+                        ArcProperty arc = mapArcProperties.next();
                         ToManyMapProperty reverseArc = (ToManyMapProperty) arc
                                 .getComplimentaryReverseArc();
 
@@ -261,7 +259,7 @@
             Object source,
             Object target) throws PropertyException {
 
-        Map map = (Map) property.readProperty(source);
+        Map<Object, Object> map = (Map<Object, Object>) property.readProperty(source);
         Object newKey = property.getMapKey(target);
         Object currentValue = map.get(newKey);
 
@@ -275,9 +273,9 @@
 
         // must do a slow map scan to ensure the object is not mapped under a different
         // key...
-        Iterator it = map.entrySet().iterator();
+        Iterator<?> it = map.entrySet().iterator();
         while (it.hasNext()) {
-            Map.Entry e = (Map.Entry) it.next();
+            Map.Entry<Object, Object> e = (Map.Entry<Object, Object>) it.next();
             if (e.getValue() == target) {
                 it.remove();
                 break;

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java?rev=606575&r1=606574&r2=606575&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesTest.java Sun Dec 23 09:14:52 2007
@@ -184,7 +184,7 @@
         o1.setGalleryName("G1");
         o1.setPaintingTitle("P1");
         o1.setTextReview("T1");
-        
+
         context.commitChanges();
     }
 }