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/15 18:41:34 UTC

svn commit: r1577911 - /cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java

Author: aadamchik
Date: Sat Mar 15 17:41:34 2014
New Revision: 1577911

URL: http://svn.apache.org/r1577911
Log:
CAY-1915 BatchTranslator instead of performing bindings should return binding object whose values can be altered

Modified:
    cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java

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=1577911&r1=1577910&r2=1577911&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 Sat Mar 15 17:41:34 2014
@@ -54,13 +54,14 @@ class OracleLOBBatchAction implements SQ
     DbAdapter adapter;
 
     protected JdbcEventLogger logger;
-    
+
     private static void bind(DbAdapter adapter, PreparedStatement statement, List<BatchParameterBinding> bindings)
             throws SQLException, Exception {
         int len = bindings.size();
         for (int i = 0; i < len; i++) {
             BatchParameterBinding b = bindings.get(i);
-            adapter.bindParameter(statement, b.getValue(), i + 1, b.getAttribute().getType(), b.getAttribute().getScale());
+            adapter.bindParameter(statement, b.getValue(), i + 1, b.getAttribute().getType(), b.getAttribute()
+                    .getScale());
         }
     }
 
@@ -77,18 +78,18 @@ class OracleLOBBatchAction implements SQ
     @Override
     public void performAction(Connection connection, OperationObserver observer) throws SQLException, Exception {
 
-        OracleLOBBatchTranslator queryBuilder;
+        OracleLOBBatchTranslator translator;
         if (query instanceof InsertBatchQuery) {
-            queryBuilder = new OracleLOBInsertBatchTranslator((InsertBatchQuery) query, getAdapter());
+            translator = new OracleLOBInsertBatchTranslator((InsertBatchQuery) query, getAdapter());
         } else if (query instanceof UpdateBatchQuery) {
-            queryBuilder = new OracleLOBUpdateBatchTranslator((UpdateBatchQuery) query, getAdapter());
+            translator = new OracleLOBUpdateBatchTranslator((UpdateBatchQuery) query, getAdapter());
         } else {
             throw new CayenneException("Unsupported batch type for special LOB processing: " + query);
         }
 
-        queryBuilder.setTrimFunction(OracleAdapter.TRIM_FUNCTION);
-        queryBuilder.setNewBlobFunction(OracleAdapter.NEW_BLOB_FUNCTION);
-        queryBuilder.setNewClobFunction(OracleAdapter.NEW_CLOB_FUNCTION);
+        translator.setTrimFunction(OracleAdapter.TRIM_FUNCTION);
+        translator.setNewBlobFunction(OracleAdapter.NEW_BLOB_FUNCTION);
+        translator.setNewClobFunction(OracleAdapter.NEW_CLOB_FUNCTION);
 
         // no batching is done, queries are translated
         // for each batch set, since prepared statements
@@ -97,26 +98,21 @@ class OracleLOBBatchAction implements SQ
         OracleLOBBatchQueryWrapper selectQuery = new OracleLOBBatchQueryWrapper(query);
         List<DbAttribute> qualifierAttributes = selectQuery.getDbAttributesForLOBSelectQualifier();
 
-        boolean isLoggable = logger.isLoggable();
-
-        for(BatchQueryRow row : query.getRows()) {
+        for (BatchQueryRow row : query.getRows()) {
 
             selectQuery.indexLOBAttributes(row);
 
             int updated = 0;
-            String updateStr = queryBuilder.createSqlString(row);
+            String updateStr = translator.createSqlString(row);
 
             // 1. run row update
             logger.logQuery(updateStr, Collections.EMPTY_LIST);
             PreparedStatement statement = connection.prepareStatement(updateStr);
             try {
 
-                if (isLoggable) {
-                    List<Object> bindings = queryBuilder.getValuesForLOBUpdateParameters(row);
-                    logger.logQueryParameters("bind", null, bindings, query instanceof InsertBatchQuery);
-                }
-                
-                List<BatchParameterBinding> bindings = queryBuilder.createBindings(row);
+                List<BatchParameterBinding> bindings = translator.createBindings(row);
+                logger.logQueryParameters("bind", bindings);
+
                 bind(adapter, statement, bindings);
 
                 updated = statement.executeUpdate();
@@ -129,7 +125,7 @@ class OracleLOBBatchAction implements SQ
             }
 
             // 2. run row LOB update (SELECT...FOR UPDATE and writing out LOBs)
-            processLOBRow(connection, queryBuilder, selectQuery, qualifierAttributes, row);
+            processLOBRow(connection, translator, selectQuery, qualifierAttributes, row);
 
             // finally, notify delegate that the row was updated
             observer.nextCount(query, updated);