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:10:55 UTC
svn commit: r1577596 - in /cayenne/main/trunk/cayenne-server/src:
main/java/org/apache/cayenne/access/jdbc/
main/java/org/apache/cayenne/access/trans/
main/java/org/apache/cayenne/dba/oracle/
test/java/org/apache/cayenne/access/trans/
Author: aadamchik
Date: Fri Mar 14 16:10:54 2014
New Revision: 1577596
URL: http://svn.apache.org/r1577596
Log:
CAY-1911 BatchQuery refactoring - make Iterable
Modified:
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilder.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryBuilder.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryWrapper.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBInsertBatchQueryBuilder.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBUpdateBatchQueryBuilder.java
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java Fri Mar 14 16:10:54 2014
@@ -26,7 +26,6 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
import java.util.Collections;
-import java.util.Map;
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.ResultIterator;
@@ -40,6 +39,7 @@ import org.apache.cayenne.log.JdbcEventL
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.query.BatchQuery;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.DeleteBatchQuery;
import org.apache.cayenne.query.InsertBatchQuery;
import org.apache.cayenne.query.UpdateBatchQuery;
@@ -111,18 +111,17 @@ public class BatchAction extends BaseSQL
logger.logQuery(queryStr, Collections.EMPTY_LIST);
// run batch
- query.reset();
PreparedStatement statement = con.prepareStatement(queryStr);
try {
- while (query.next()) {
+ for (BatchQueryRow row : query.getRows()) {
if (isLoggable) {
logger.logQueryParameters("batch bind", query.getDbAttributes(),
- queryBuilder.getParameterValues(), query instanceof InsertBatchQuery);
+ queryBuilder.getParameterValues(row), query instanceof InsertBatchQuery);
}
- queryBuilder.bindParameters(statement);
+ queryBuilder.bindParameters(statement, row);
statement.addBatch();
}
@@ -170,36 +169,28 @@ public class BatchAction extends BaseSQL
logger.logQuery(queryStr, Collections.EMPTY_LIST);
// run batch queries one by one
- query.reset();
PreparedStatement statement = (generatesKeys) ? connection.prepareStatement(queryStr,
Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(queryStr);
try {
- while (query.next()) {
+ for(BatchQueryRow row : query.getRows()) {
if (isLoggable) {
- logger.logQueryParameters("bind", query.getDbAttributes(), queryBuilder.getParameterValues(),
+ logger.logQueryParameters("bind", query.getDbAttributes(), queryBuilder.getParameterValues(row),
query instanceof InsertBatchQuery);
}
- queryBuilder.bindParameters(statement);
+ queryBuilder.bindParameters(statement, row);
int updated = statement.executeUpdate();
if (useOptimisticLock && updated != 1) {
-
- Map snapshot = Collections.EMPTY_MAP;
- if (query instanceof UpdateBatchQuery) {
- snapshot = ((UpdateBatchQuery) query).getCurrentQualifier();
- } else if (query instanceof DeleteBatchQuery) {
- snapshot = ((DeleteBatchQuery) query).getCurrentQualifier();
- }
-
- throw new OptimisticLockException(query.getObjectId(), query.getDbEntity(), queryStr, snapshot);
+ throw new OptimisticLockException(row.getObjectId(), query.getDbEntity(), queryStr,
+ row.getQualifier());
}
delegate.nextCount(query, updated);
if (generatesKeys) {
- processGeneratedKeys(statement, delegate);
+ processGeneratedKeys(statement, delegate, row);
}
if (isLoggable) {
@@ -243,7 +234,7 @@ public class BatchAction extends BaseSQL
* @since 3.2
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
- protected void processGeneratedKeys(Statement statement, OperationObserver observer) throws SQLException,
+ protected void processGeneratedKeys(Statement statement, OperationObserver observer, BatchQueryRow row) throws SQLException,
CayenneException {
ResultSet keysRS = statement.getGeneratedKeys();
@@ -285,6 +276,6 @@ public class BatchAction extends BaseSQL
Collections.<ObjAttribute, ColumnDescriptor> emptyMap());
ResultIterator iterator = new JDBCResultIterator(null, keysRS, rowReader);
- observer.nextGeneratedRows(query, iterator, query.getObjectId());
+ observer.nextGeneratedRows(query, iterator, row.getObjectId());
}
}
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilder.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SoftDeleteBatchQueryBuilder.java Fri Mar 14 16:10:54 2014
@@ -27,6 +27,7 @@ import org.apache.cayenne.access.trans.D
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.DeleteBatchQuery;
/**
@@ -65,13 +66,13 @@ public class SoftDeleteBatchQueryBuilder
}
@Override
- public void bindParameters(PreparedStatement statement) throws SQLException, Exception {
+ public void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception {
if (needSoftDelete()) {
// binding first parameter (which is 'deleted') as true
adapter.bindParameter(statement, true, 1, Types.BOOLEAN, -1);
}
- super.bindParameters(statement);
+ super.bindParameters(statement, row);
}
/**
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java Fri Mar 14 16:10:54 2014
@@ -30,6 +30,7 @@ import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.query.BatchQuery;
+import org.apache.cayenne.query.BatchQueryRow;
/**
* Superclass of batch query translators.
@@ -98,7 +99,7 @@ public abstract class BatchQueryBuilder
*
* @since 3.2
*/
- public abstract void bindParameters(PreparedStatement statement) throws SQLException, Exception;
+ public abstract void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception;
/**
* Returns a list of values for the current batch iteration. Used primarily
@@ -106,11 +107,11 @@ public abstract class BatchQueryBuilder
*
* @since 1.2
*/
- public List<Object> getParameterValues() {
+ public List<Object> getParameterValues(BatchQueryRow row) {
int len = query.getDbAttributes().size();
List<Object> values = new ArrayList<Object>(len);
for (int i = 0; i < len; i++) {
- values.add(query.getValue(i));
+ values.add(row.getValue(i));
}
return values;
}
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java Fri Mar 14 16:10:54 2014
@@ -27,6 +27,7 @@ import java.util.Iterator;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.DeleteBatchQuery;
/**
@@ -73,9 +74,11 @@ public class DeleteBatchQueryBuilder ext
/**
* Binds BatchQuery parameters to the PreparedStatement.
+ *
+ * @since 3.2
*/
@Override
- public void bindParameters(PreparedStatement statement) throws SQLException, Exception {
+ public void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception {
DeleteBatchQuery deleteBatch = (DeleteBatchQuery) query;
@@ -83,7 +86,7 @@ public class DeleteBatchQueryBuilder ext
int i = 0;
for (DbAttribute attribute : deleteBatch.getQualifierAttributes()) {
- Object value = query.getValue(i++);
+ Object value = row.getValue(i++);
// skip null attributes... they are translated as "IS NULL"
if (deleteBatch.isNull(attribute)) {
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java Fri Mar 14 16:10:54 2014
@@ -28,6 +28,7 @@ import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.InsertBatchQuery;
/**
@@ -47,7 +48,7 @@ public class InsertBatchQueryBuilder ext
* @since 1.2
*/
@Override
- public void bindParameters(PreparedStatement statement) throws SQLException, Exception {
+ public void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception {
List<DbAttribute> dbAttributes = query.getDbAttributes();
int attributeCount = dbAttributes.size();
@@ -57,7 +58,7 @@ public class InsertBatchQueryBuilder ext
DbAttribute attribute = dbAttributes.get(i);
if (includeInBatch(attribute)) {
j++;
- Object value = query.getValue(i);
+ Object value = row.getValue(i);
adapter.bindParameter(statement, value, j, attribute.getType(), attribute.getScale());
}
}
@@ -71,14 +72,14 @@ public class InsertBatchQueryBuilder ext
* @since 1.2
*/
@Override
- public List<Object> getParameterValues() {
+ public List<Object> getParameterValues(BatchQueryRow row) {
List<DbAttribute> attributes = query.getDbAttributes();
int len = attributes.size();
List<Object> values = new ArrayList<Object>(len);
for (int i = 0; i < len; i++) {
DbAttribute attribute = attributes.get(i);
if (includeInBatch(attribute)) {
- values.add(query.getValue(i));
+ values.add(row.getValue(i));
}
}
return values;
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java Fri Mar 14 16:10:54 2014
@@ -28,6 +28,7 @@ import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.UpdateBatchQuery;
/**
@@ -84,7 +85,7 @@ public class UpdateBatchQueryBuilder ext
* Binds BatchQuery parameters to the PreparedStatement.
*/
@Override
- public void bindParameters(PreparedStatement statement) throws SQLException, Exception {
+ public void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception {
UpdateBatchQuery updateBatch = (UpdateBatchQuery) query;
List<DbAttribute> qualifierAttributes = updateBatch.getQualifierAttributes();
@@ -93,14 +94,14 @@ public class UpdateBatchQueryBuilder ext
int len = updatedDbAttributes.size();
int parameterIndex = 1;
for (int i = 0; i < len; i++) {
- Object value = query.getValue(i);
+ Object value = row.getValue(i);
DbAttribute attribute = updatedDbAttributes.get(i);
adapter.bindParameter(statement, value, parameterIndex++, attribute.getType(), attribute.getScale());
}
for (int i = 0; i < qualifierAttributes.size(); i++) {
- Object value = query.getValue(len + i);
+ Object value = row.getValue(len + i);
DbAttribute attribute = qualifierAttributes.get(i);
// skip null attributes... they are translated as "IS NULL"
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java Fri Mar 14 16:10:54 2014
@@ -38,6 +38,7 @@ import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.log.JdbcEventLogger;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.query.BatchQuery;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.InsertBatchQuery;
import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.UpdateBatchQuery;
@@ -87,13 +88,12 @@ class OracleLOBBatchAction implements SQ
boolean isLoggable = logger.isLoggable();
- query.reset();
- while (query.next()) {
+ for(BatchQueryRow row : query.getRows()) {
- selectQuery.indexLOBAttributes();
+ selectQuery.indexLOBAttributes(row);
int updated = 0;
- String updateStr = queryBuilder.createSqlString();
+ String updateStr = queryBuilder.createSqlString(row);
// 1. run row update
logger.logQuery(updateStr, Collections.EMPTY_LIST);
@@ -101,11 +101,11 @@ class OracleLOBBatchAction implements SQ
try {
if (isLoggable) {
- List bindings = queryBuilder.getValuesForLOBUpdateParameters();
+ List bindings = queryBuilder.getValuesForLOBUpdateParameters(row);
logger.logQueryParameters("bind", null, bindings, query instanceof InsertBatchQuery);
}
- queryBuilder.bindParameters(statement);
+ queryBuilder.bindParameters(statement, row);
updated = statement.executeUpdate();
logger.logUpdateCount(updated);
} finally {
@@ -116,7 +116,7 @@ class OracleLOBBatchAction implements SQ
}
// 2. run row LOB update (SELECT...FOR UPDATE and writing out LOBs)
- processLOBRow(connection, queryBuilder, selectQuery, qualifierAttributes);
+ processLOBRow(connection, queryBuilder, selectQuery, qualifierAttributes, row);
// finally, notify delegate that the row was updated
observer.nextCount(query, updated);
@@ -124,7 +124,7 @@ class OracleLOBBatchAction implements SQ
}
void processLOBRow(Connection con, OracleLOBBatchQueryBuilder queryBuilder, OracleLOBBatchQueryWrapper selectQuery,
- List<DbAttribute> qualifierAttributes) throws SQLException, Exception {
+ List<DbAttribute> qualifierAttributes, BatchQueryRow row) throws SQLException, Exception {
List<DbAttribute> lobAttributes = selectQuery.getDbAttributesForUpdatedLOBColumns();
if (lobAttributes.size() == 0) {
@@ -133,7 +133,7 @@ class OracleLOBBatchAction implements SQ
boolean isLoggable = logger.isLoggable();
- List qualifierValues = selectQuery.getValuesForLOBSelectQualifier();
+ List qualifierValues = selectQuery.getValuesForLOBSelectQualifier(row);
List lobValues = selectQuery.getValuesForUpdatedLOBColumns();
int parametersSize = qualifierValues.size();
int lobSize = lobAttributes.size();
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryBuilder.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryBuilder.java Fri Mar 14 16:10:54 2014
@@ -19,6 +19,7 @@
package org.apache.cayenne.dba.oracle;
+import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
@@ -32,6 +33,7 @@ import org.apache.cayenne.dba.QuotingStr
import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.query.BatchQuery;
+import org.apache.cayenne.query.BatchQueryRow;
/**
* Superclass of query builders for the DML operations involving LOBs.
@@ -46,7 +48,14 @@ abstract class OracleLOBBatchQueryBuilde
super(query, adapter);
}
- abstract List getValuesForLOBUpdateParameters();
+ abstract List getValuesForLOBUpdateParameters(BatchQueryRow row);
+
+ abstract String createSqlString(BatchQueryRow row);
+
+ @Override
+ public final String createSqlString() throws IOException {
+ throw new UnsupportedOperationException();
+ }
String createLOBSelectString(List selectedLOBAttributes, List qualifierAttributes) {
@@ -104,9 +113,11 @@ abstract class OracleLOBBatchQueryBuilde
/**
* Binds BatchQuery parameters to the PreparedStatement.
+ *
+ * @since 3.2
*/
@Override
- public void bindParameters(PreparedStatement statement) throws SQLException, Exception {
+ public void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception {
List<DbAttribute> dbAttributes = query.getDbAttributes();
int attributeCount = dbAttributes.size();
@@ -114,7 +125,7 @@ abstract class OracleLOBBatchQueryBuilde
// i - attribute position in the query
// j - PreparedStatement parameter position (starts with "1")
for (int i = 0, j = 1; i < attributeCount; i++) {
- Object value = query.getValue(i);
+ Object value = row.getValue(i);
DbAttribute attribute = dbAttributes.get(i);
int type = attribute.getType();
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryWrapper.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryWrapper.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryWrapper.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchQueryWrapper.java Fri Mar 14 16:10:54 2014
@@ -30,6 +30,7 @@ import java.util.List;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.query.BatchQuery;
+import org.apache.cayenne.query.BatchQueryRow;
/**
* Helper class to extract the information from BatchQueries, essential for LOB
@@ -75,14 +76,14 @@ class OracleLOBBatchQueryWrapper {
/**
* Indexes attributes
*/
- void indexLOBAttributes() {
+ void indexLOBAttributes(BatchQueryRow row) {
int len = updatedLOBAttributes.length;
for (int i = 0; i < len; i++) {
updatedLOBAttributes[i] = null;
if (allLOBAttributes[i]) {
// skip null and empty LOBs
- Object value = query.getValue(i);
+ Object value = row.getValue(i);
if (value == null) {
continue;
@@ -176,13 +177,13 @@ class OracleLOBBatchQueryWrapper {
return attributes;
}
- List getValuesForLOBSelectQualifier() {
+ List getValuesForLOBSelectQualifier(BatchQueryRow row) {
int len = this.qualifierAttributes.length;
List values = new ArrayList(len);
for (int i = 0; i < len; i++) {
if (this.qualifierAttributes[i]) {
- values.add(query.getValue(i));
+ values.add(row.getValue(i));
}
}
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBInsertBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBInsertBatchQueryBuilder.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBInsertBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBInsertBatchQueryBuilder.java Fri Mar 14 16:10:54 2014
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.InsertBatchQuery;
class OracleLOBInsertBatchQueryBuilder extends OracleLOBBatchQueryBuilder {
@@ -35,13 +36,13 @@ class OracleLOBInsertBatchQueryBuilder e
}
@Override
- List getValuesForLOBUpdateParameters() {
+ List getValuesForLOBUpdateParameters(BatchQueryRow row) {
List<DbAttribute> dbAttributes = query.getDbAttributes();
int len = dbAttributes.size();
List values = new ArrayList(len);
for (int i = 0; i < len; i++) {
- Object value = query.getValue(i);
+ Object value = row.getValue(i);
DbAttribute attribute = dbAttributes.get(i);
if (isUpdateableColumn(value, attribute.getType())) {
values.add(value);
@@ -52,7 +53,7 @@ class OracleLOBInsertBatchQueryBuilder e
}
@Override
- public String createSqlString() {
+ public String createSqlString(BatchQueryRow row) {
List<DbAttribute> dbAttributes = query.getDbAttributes();
QuotingStrategy strategy = getAdapter().getQuotingStrategy();
@@ -74,7 +75,7 @@ class OracleLOBInsertBatchQueryBuilder e
buffer.append(", ");
}
- appendUpdatedParameter(buffer, dbAttributes.get(i), query.getValue(i));
+ appendUpdatedParameter(buffer, dbAttributes.get(i), row.getValue(i));
}
buffer.append(')');
return buffer.toString();
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBUpdateBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBUpdateBatchQueryBuilder.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBUpdateBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBUpdateBatchQueryBuilder.java Fri Mar 14 16:10:54 2014
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.UpdateBatchQuery;
class OracleLOBUpdateBatchQueryBuilder extends OracleLOBBatchQueryBuilder {
@@ -35,7 +36,7 @@ class OracleLOBUpdateBatchQueryBuilder e
}
@Override
- List getValuesForLOBUpdateParameters() {
+ List getValuesForLOBUpdateParameters(BatchQueryRow row) {
int len = query.getDbAttributes().size();
UpdateBatchQuery updateBatch = (UpdateBatchQuery) query;
@@ -47,21 +48,21 @@ class OracleLOBUpdateBatchQueryBuilder e
int qualifierLen = qualifierAttributes.size();
for (int i = 0; i < updatedLen; i++) {
DbAttribute attribute = updatedDbAttributes.get(i);
- Object value = query.getValue(i);
+ Object value = row.getValue(i);
if (isUpdateableColumn(value, attribute.getType())) {
values.add(value);
}
}
for (int i = 0; i < qualifierLen; i++) {
- values.add(query.getValue(updatedLen + i));
+ values.add(row.getValue(updatedLen + i));
}
return values;
}
@Override
- public String createSqlString() {
+ public String createSqlString(BatchQueryRow row) {
UpdateBatchQuery updateBatch = (UpdateBatchQuery) query;
List<DbAttribute> idDbAttributes = updateBatch.getQualifierAttributes();
List<DbAttribute> updatedDbAttributes = updateBatch.getUpdatedAttributes();
@@ -81,7 +82,7 @@ class OracleLOBUpdateBatchQueryBuilder e
DbAttribute attribute = updatedDbAttributes.get(i);
buffer.append(strategy.quotedName(attribute));
buffer.append(" = ");
- appendUpdatedParameter(buffer, attribute, query.getValue(i));
+ appendUpdatedParameter(buffer, attribute, row.getValue(i));
}
buffer.append(" WHERE ");
Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java?rev=1577596&r1=1577595&r2=1577596&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java Fri Mar 14 16:10:54 2014
@@ -33,6 +33,7 @@ import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.query.BatchQuery;
+import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.unit.di.server.ServerCase;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -51,7 +52,7 @@ public class BatchQueryBuilderTest exten
}
@Override
- public void bindParameters(PreparedStatement statement) throws SQLException, Exception {
+ public void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception {
}
};
@@ -69,7 +70,7 @@ public class BatchQueryBuilderTest exten
}
@Override
- public void bindParameters(PreparedStatement statement) throws SQLException, Exception {
+ public void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception {
}
};
@@ -99,7 +100,7 @@ public class BatchQueryBuilderTest exten
}
@Override
- public void bindParameters(PreparedStatement statement) throws SQLException, Exception {
+ public void bindParameters(PreparedStatement statement, BatchQueryRow row) throws SQLException, Exception {
}
};