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);