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 2014/03/14 17:11:04 UTC

svn commit: r1577597 - in /cayenne/main/trunk/cayenne-server/src: main/java/org/apache/cayenne/access/ main/java/org/apache/cayenne/query/ test/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/access/jdbc/ test/java/org/apache/cayenne/acces...

Author: aadamchik
Date: Fri Mar 14 16:11:04 2014
New Revision: 1577597

URL: http://svn.apache.org/r1577597
Log:
CAY-1911 BatchQuery refactoring - make Iterable

cleanup

Modified:
    cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java
    cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/BatchQuery.java
    cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/DeleteBatchQuery.java
    cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/InsertBatchQuery.java
    cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/UpdateBatchQuery.java
    cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java
    cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilderTest.java
    cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java
    cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java

Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainFlattenedBucket.java Fri Mar 14 16:11:04 2014
@@ -20,6 +20,7 @@
 package org.apache.cayenne.access;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -53,8 +54,7 @@ class DataDomainFlattenedBucket {
 
     void addFlattenedInsert(DbEntity flattenedEntity, FlattenedArcKey flattenedArcKey) {
 
-        InsertBatchQuery relationInsertQuery = flattenedInsertQueries
-                .get(flattenedEntity);
+        InsertBatchQuery relationInsertQuery = flattenedInsertQueries.get(flattenedEntity);
 
         if (relationInsertQuery == null) {
             relationInsertQuery = new InsertBatchQuery(flattenedEntity, 50);
@@ -68,11 +68,11 @@ class DataDomainFlattenedBucket {
 
     void addFlattenedDelete(DbEntity flattenedEntity, FlattenedArcKey flattenedDeleteInfo) {
 
-        DeleteBatchQuery relationDeleteQuery = flattenedDeleteQueries
-                .get(flattenedEntity);
+        DeleteBatchQuery relationDeleteQuery = flattenedDeleteQueries.get(flattenedEntity);
         if (relationDeleteQuery == null) {
             boolean optimisticLocking = false;
-            relationDeleteQuery = new DeleteBatchQuery(flattenedEntity, 50);
+            relationDeleteQuery = new DeleteBatchQuery(flattenedEntity, flattenedEntity.getPrimaryKeys(),
+                    Collections.<String> emptySet(), 50);
             relationDeleteQuery.setUsingOptimisticLocking(optimisticLocking);
             flattenedDeleteQueries.put(flattenedEntity, relationDeleteQuery);
         }

Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/BatchQuery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/BatchQuery.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/BatchQuery.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/BatchQuery.java Fri Mar 14 16:11:04 2014
@@ -54,12 +54,15 @@ public abstract class BatchQuery impleme
      */
     protected List<BatchQueryRow> rows;
 
+    protected List<DbAttribute> dbAttributes;
+
     /**
      * @since 3.2
      */
-    public BatchQuery(DbEntity dbEntity, int batchCapacity) {
+    public BatchQuery(DbEntity dbEntity, List<DbAttribute> dbAttributes, int batchCapacity) {
         this.dbEntity = dbEntity;
         this.rows = new ArrayList<BatchQueryRow>(batchCapacity);
+        this.dbAttributes = dbAttributes;
     }
 
     /**
@@ -151,7 +154,9 @@ public abstract class BatchQuery impleme
     /**
      * Returns a list of DbAttributes describing batch parameters.
      */
-    public abstract List<DbAttribute> getDbAttributes();
+    public List<DbAttribute> getDbAttributes() {
+        return dbAttributes;
+    }
 
     /**
      * @deprecated since 3.2 use getRows().size().

Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/DeleteBatchQuery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/DeleteBatchQuery.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/DeleteBatchQuery.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/DeleteBatchQuery.java Fri Mar 14 16:11:04 2014
@@ -21,8 +21,6 @@ package org.apache.cayenne.query;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.cayenne.map.DbAttribute;
@@ -34,27 +32,12 @@ import org.apache.cayenne.map.DbEntity;
  */
 public class DeleteBatchQuery extends BatchQuery {
 
-    protected List<DbAttribute> dbAttributes;
     protected boolean usingOptimisticLocking;
 
     private Collection<DbAttribute> qualifierAttributes;
     private Collection<String> nullQualifierNames;
 
     /**
-     * Creates new DeleteBatchQuery. Used by
-     * ContextCommit.categorizeFlattenedDeletesAndCreateBatches for deleting
-     * flattenned relationships.
-     * 
-     * @param dbEntity
-     *            Table or view to delete.
-     * @param batchCapacity
-     *            Estimated size of the batch.
-     */
-    public DeleteBatchQuery(DbEntity dbEntity, int batchCapacity) {
-        this(dbEntity, dbEntity.getPrimaryKeys(), Collections.EMPTY_SET, batchCapacity);
-    }
-
-    /**
      * Creates new DeleteBatchQuery.
      * 
      * @param dbEntity
@@ -69,13 +52,14 @@ public class DeleteBatchQuery extends Ba
     public DeleteBatchQuery(DbEntity dbEntity, Collection<DbAttribute> qualifierAttributes,
             Collection<String> nullQualifierNames, int batchCapacity) {
 
-        super(dbEntity, batchCapacity);
+        super(dbEntity, new ArrayList<DbAttribute>(qualifierAttributes), batchCapacity);
 
-        this.qualifierAttributes = qualifierAttributes;
-        this.nullQualifierNames = nullQualifierNames != null ? nullQualifierNames : Collections.<String> emptySet();
+        if (nullQualifierNames == null) {
+            throw new NullPointerException("Null 'nullQualifierNames'");
+        }
 
-        dbAttributes = new ArrayList<DbAttribute>(qualifierAttributes.size());
-        dbAttributes.addAll(qualifierAttributes);
+        this.qualifierAttributes = qualifierAttributes;
+        this.nullQualifierNames = nullQualifierNames;
     }
 
     /**
@@ -112,7 +96,7 @@ public class DeleteBatchQuery extends Ba
     }
 
     public void add(Map<String, Object> dataObjectId) {
-        
+
         rows.add(new BatchQueryRow(null, dataObjectId) {
             @Override
             public Object getValue(int i) {
@@ -120,9 +104,4 @@ public class DeleteBatchQuery extends Ba
             }
         });
     }
-
-    @Override
-    public List<DbAttribute> getDbAttributes() {
-        return dbAttributes;
-    }
 }

Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/InsertBatchQuery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/InsertBatchQuery.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/InsertBatchQuery.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/InsertBatchQuery.java Fri Mar 14 16:11:04 2014
@@ -20,7 +20,6 @@
 package org.apache.cayenne.query;
 
 import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.cayenne.ObjectId;
@@ -35,14 +34,11 @@ import org.apache.cayenne.map.DbEntity;
  */
 public class InsertBatchQuery extends BatchQuery {
 
-    protected List<DbAttribute> dbAttributes;
-
     /**
      * Creates new InsertBatchQuery for a given DbEntity and estimated capacity.
      */
     public InsertBatchQuery(DbEntity entity, int batchCapacity) {
-        super(entity, batchCapacity);
-        this.dbAttributes = new ArrayList<DbAttribute>(getDbEntity().getAttributes());
+        super(entity, new ArrayList<DbAttribute>(entity.getAttributes()), batchCapacity);
     }
 
     /**
@@ -70,8 +66,4 @@ public class InsertBatchQuery extends Ba
         });
     }
 
-    @Override
-    public List<DbAttribute> getDbAttributes() {
-        return dbAttributes;
-    }
 }

Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/UpdateBatchQuery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/UpdateBatchQuery.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/UpdateBatchQuery.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/query/UpdateBatchQuery.java Fri Mar 14 16:11:04 2014
@@ -39,7 +39,15 @@ public class UpdateBatchQuery extends Ba
     private List<DbAttribute> updatedAttributes;
     private List<DbAttribute> qualifierAttributes;
     private Collection<String> nullQualifierNames;
-    private List<DbAttribute> dbAttributes;
+
+    private static List<DbAttribute> toDbAttributes(List<DbAttribute> qualifierAttributes,
+            List<DbAttribute> updatedAttributes) {
+        List<DbAttribute> dbAttributes = new ArrayList<DbAttribute>(updatedAttributes.size()
+                + qualifierAttributes.size());
+        dbAttributes.addAll(updatedAttributes);
+        dbAttributes.addAll(qualifierAttributes);
+        return dbAttributes;
+    }
 
     /**
      * Creates new UpdateBatchQuery.
@@ -56,17 +64,17 @@ public class UpdateBatchQuery extends Ba
      *            Estimated size of the batch.
      */
     public UpdateBatchQuery(DbEntity dbEntity, List<DbAttribute> qualifierAttributes,
-            List<DbAttribute> updatedAttribute, Collection<String> nullQualifierNames, int batchCapacity) {
+            List<DbAttribute> updatedAttributes, Collection<String> nullQualifierNames, int batchCapacity) {
 
-        super(dbEntity, batchCapacity);
+        super(dbEntity, toDbAttributes(qualifierAttributes, updatedAttributes), batchCapacity);
 
-        this.updatedAttributes = updatedAttribute;
-        this.qualifierAttributes = qualifierAttributes;
-        this.nullQualifierNames = nullQualifierNames != null ? nullQualifierNames : Collections.EMPTY_SET;
+        if (nullQualifierNames == null) {
+            throw new NullPointerException("Null 'nullQualifierNames'");
+        }
 
-        dbAttributes = new ArrayList<DbAttribute>(updatedAttributes.size() + qualifierAttributes.size());
-        dbAttributes.addAll(updatedAttributes);
-        dbAttributes.addAll(qualifierAttributes);
+        this.updatedAttributes = updatedAttributes;
+        this.qualifierAttributes = qualifierAttributes;
+        this.nullQualifierNames = nullQualifierNames;
     }
 
     /**

Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/QuotedIdentifiersTest.java Fri Mar 14 16:11:04 2014
@@ -86,19 +86,12 @@ public class QuotedIdentifiersTest exten
     }
 
     public void testPrefetchQuote() throws Exception {
-        DbEntity entity = context
-                .getEntityResolver()
-                .getObjEntity(QuoteAdress.class)
-                .getDbEntity();
+        DbEntity entity = context.getEntityResolver().getObjEntity(QuoteAdress.class).getDbEntity();
         List idAttributes = Collections.singletonList(entity.getAttribute("City"));
         List updatedAttributes = Collections.singletonList(entity.getAttribute("City"));
 
-        UpdateBatchQuery updateQuery = new UpdateBatchQuery(
-                entity,
-                idAttributes,
-                updatedAttributes,
-                null,
-                1);
+        UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
+                Collections.<String> emptySet(), 1);
 
         List objects3 = context.performQuery(updateQuery);
         assertEquals(0, objects3.size());
@@ -106,32 +99,25 @@ public class QuotedIdentifiersTest exten
         SelectQuery qQuote_Person2 = new SelectQuery(Quote_Person.class);
         List objects4 = context.performQuery(qQuote_Person2);
         assertEquals(2, objects4.size());
-        
-        SelectQuery qQuote_Person3 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp(
-                "salary",100));
+
+        SelectQuery qQuote_Person3 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("salary", 100));
         List objects5 = context.performQuery(qQuote_Person3);
         assertEquals(1, objects5.size());
-        
-        SelectQuery qQuote_Person4 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp(
-                "group","107324"));
+
+        SelectQuery qQuote_Person4 = new SelectQuery(Quote_Person.class, ExpressionFactory.matchExp("group", "107324"));
         List objects6 = context.performQuery(qQuote_Person4);
         assertEquals(1, objects6.size());
-        
-        SelectQuery quoteAdress1 = new SelectQuery(QuoteAdress.class, ExpressionFactory.matchExp(
-                "group","324"));
+
+        SelectQuery quoteAdress1 = new SelectQuery(QuoteAdress.class, ExpressionFactory.matchExp("group", "324"));
         List objects7 = context.performQuery(quoteAdress1);
         assertEquals(1, objects7.size());
-        
-        ObjectIdQuery queryObjectId = new ObjectIdQuery(new ObjectId(
-                "QuoteAdress",
-                QuoteAdress.GROUP_PROPERTY,
-                "324"));
-        
+
+        ObjectIdQuery queryObjectId = new ObjectIdQuery(new ObjectId("QuoteAdress", QuoteAdress.GROUP_PROPERTY, "324"));
+
         List objects8 = context.performQuery(queryObjectId);
         assertEquals(1, objects8.size());
-        
-        ObjectIdQuery queryObjectId2 = new ObjectIdQuery(new ObjectId(
-                "Quote_Person", "GROUP", "1111"));
+
+        ObjectIdQuery queryObjectId2 = new ObjectIdQuery(new ObjectId("Quote_Person", "GROUP", "1111"));
         List objects9 = context.performQuery(queryObjectId2);
         assertEquals(1, objects9.size());
 

Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilderTest.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilderTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilderTest.java Fri Mar 14 16:11:04 2014
@@ -75,7 +75,7 @@ public class SoftDeleteBatchQueryBuilder
 
         List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("SOFT_TEST_ID"));
 
-        DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, null, 1);
+        DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.<String> emptySet(), 1);
         DeleteBatchQueryBuilder builder = createBuilder(deleteQuery);
         String generatedSql = builder.createSqlString();
         assertNotNull(generatedSql);
@@ -106,7 +106,7 @@ public class SoftDeleteBatchQueryBuilder
 
             List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("SOFT_TEST_ID"));
 
-            DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, null, 1);
+            DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.<String> emptySet(), 1);
             JdbcAdapter adapter = (JdbcAdapter) this.adapter;
             DeleteBatchQueryBuilder builder = createBuilder(deleteQuery, adapter);
             String generatedSql = builder.createSqlString();

Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java Fri Mar 14 16:11:04 2014
@@ -68,7 +68,7 @@ public class DeleteBatchQueryBuilderTest
 
         List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
 
-        DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, null, 1);
+        DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.<String> emptySet(), 1);
 
         DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
         DeleteBatchQueryBuilder builder = new DeleteBatchQueryBuilder(deleteQuery, adapter);
@@ -103,7 +103,7 @@ public class DeleteBatchQueryBuilderTest
             entity.getDataMap().setQuotingSQLIdentifiers(true);
             List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
 
-            DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, null, 1);
+            DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.<String> emptySet(), 1);
             JdbcAdapter adapter = (JdbcAdapter) this.adapter;
             DeleteBatchQueryBuilder builder = new DeleteBatchQueryBuilder(deleteQuery, adapter);
             String generatedSql = builder.createSqlString();

Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java?rev=1577597&r1=1577596&r2=1577597&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java Fri Mar 14 16:11:04 2014
@@ -66,7 +66,8 @@ public class UpdateBatchQueryBuilderTest
         List idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
         List updatedAttributes = Collections.singletonList(entity.getAttribute("DESCRIPTION"));
 
-        UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, null, 1);
+        UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
+                Collections.<String> emptySet(), 1);
 
         DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
         UpdateBatchQueryBuilder builder = new UpdateBatchQueryBuilder(updateQuery, adapter);
@@ -105,7 +106,8 @@ public class UpdateBatchQueryBuilderTest
             List idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
             List updatedAttributes = Collections.singletonList(entity.getAttribute("DESCRIPTION"));
 
-            UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, null, 1);
+            UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
+                    Collections.<String> emptySet(), 1);
             JdbcAdapter adapter = (JdbcAdapter) this.adapter;
 
             UpdateBatchQueryBuilder builder = new UpdateBatchQueryBuilder(updateQuery, adapter);