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 22:08:14 UTC

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

Author: aadamchik
Date: Sun Dec 23 13:08:13 2007
New Revision: 606617

URL: http://svn.apache.org/viewvc?rev=606617&view=rev
Log:
CAY-948 Implement flattened attributes in Cayenne
(delete works)

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.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/DataNodeSyncQualifierDescriptor.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.java?rev=606617&r1=606616&r2=606617&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNodeSyncQualifierDescriptor.java Sun Dec 23 13:08:13 2007
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbJoin;
@@ -91,6 +92,12 @@
         else {
 
             // TODO: andrus 12/23/2007 - only one step relationship is supported...
+            if (descriptor.getPathFromMaster().size() != 1) {
+                throw new CayenneRuntimeException(
+                        "Only single step dependent relationships are currently supported. Actual path length: "
+                                + descriptor.getPathFromMaster().size());
+            }
+            
             DbRelationship masterDependentDbRel = descriptor.getPathFromMaster().get(0);
 
             if (masterDependentDbRel != null) {

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=606617&r1=606616&r2=606617&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 13:08:13 2007
@@ -26,6 +26,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.art.Artist;
 import org.apache.art.CompoundPainting;
 import org.apache.cayenne.DataObjectUtils;
 import org.apache.cayenne.exp.ExpressionFactory;
@@ -65,7 +66,7 @@
             PreparedStatement stmt = conn.prepareStatement(insertArtist);
             long dateBase = System.currentTimeMillis();
             for (int i = 1; i <= artistCount; i++) {
-                stmt.setInt(1, i);
+                stmt.setInt(1, i + 1);
                 stmt.setString(2, "artist" + i);
                 stmt.setDate(3, new java.sql.Date(dateBase + 1000 * 60 * 60 * 24 * i));
                 stmt.executeUpdate();
@@ -74,7 +75,7 @@
 
             stmt = conn.prepareStatement(insertGal);
             for (int i = 1; i <= galleryCount; i++) {
-                stmt.setInt(1, i);
+                stmt.setInt(1, i + 2);
                 stmt.setString(2, "gallery" + i);
                 stmt.executeUpdate();
             }
@@ -84,12 +85,12 @@
             for (int i = 1; i <= paintCount; i++) {
                 stmt.setInt(1, i);
                 stmt.setString(2, "painting" + i);
-                stmt.setInt(3, (i - 1) % artistCount + 1);
+                stmt.setInt(3, (i - 1) % artistCount + 2);
                 stmt.setBigDecimal(4, new BigDecimal(1000d));
                 if (i == 3)
                     stmt.setNull(5, Types.INTEGER);
                 else
-                    stmt.setInt(5, (i - 1) % galleryCount + 1);
+                    stmt.setInt(5, (i - 1) % galleryCount + 3);
                 stmt.executeUpdate();
             }
             stmt.close();
@@ -205,6 +206,11 @@
     }
 
     public void testDelete() throws Exception {
+        // adding a bit of random overlapping dta to db...
+        Artist a = context.newObject(Artist.class);
+        a.setArtistName("AX");
+        context.commitChanges();
+
         CompoundPainting o1 = context.newObject(CompoundPainting.class);
         o1.setArtistName("A1");
         o1.setEstimatedPrice(new BigDecimal(1.0d));
@@ -220,7 +226,7 @@
         Number artistCount = (Number) DataObjectUtils.objectForQuery(
                 context,
                 new EJBQLQuery("select count(a) from Artist a"));
-        assertEquals(0, artistCount.intValue());
+        assertEquals(1, artistCount.intValue());
         Number paintingCount = (Number) DataObjectUtils.objectForQuery(
                 context,
                 new EJBQLQuery("select count(a) from Painting a"));