You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by mg...@apache.org on 2008/01/15 21:23:51 UTC
svn commit: r612201 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne:
access/QueryLogger.java access/jdbc/BatchAction.java
dba/oracle/OracleLOBBatchAction.java
Author: mgentry
Date: Tue Jan 15 12:23:50 2008
New Revision: 612201
URL: http://svn.apache.org/viewvc?rev=612201&view=rev
Log:
Changes for CAY-960.
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryLogger.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryLogger.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryLogger.java?rev=612201&r1=612200&r2=612201&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryLogger.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryLogger.java Tue Jan 15 12:23:50 2008
@@ -21,6 +21,7 @@
import java.lang.reflect.Array;
import java.sql.SQLException;
+import java.util.Iterator;
import java.util.List;
import org.apache.cayenne.access.jdbc.ParameterBinding;
@@ -51,6 +52,7 @@
/**
* @since 1.2
*/
+ @SuppressWarnings("unchecked")
static ThreadLocal logLevel = new ThreadLocal();
/**
@@ -242,43 +244,70 @@
String prefix,
String postfix,
List<DbAttribute> attributes,
- List<Object> parameters)
+ List<?> parameters,
+ boolean isInserting)
{
if (parameters != null && parameters.size() > 0)
{
- DbAttribute attribute = null;
- int size = parameters.size();
+ DbAttribute attribute = null;
+ Iterator<DbAttribute> attributeIterator = null;
+ int position = 0;
- for (int i = 0; i < size; i++)
+ if (attributes != null)
+ attributeIterator = attributes.iterator();
+
+ for (Object parameter : parameters)
{
- if (i == 0)
+ // If at the beginning, output the prefix, otherwise a separator.
+ if (position++ == 0)
buffer.append(prefix);
else
buffer.append(", ");
- if (attributes != null && i < attributes.size())
- attribute = attributes.get(i);
-
- buffer.append(i + 1);
-
- if (attribute != null)
+ // Find the next attribute and SKIP generated attributes. Only
+ // skip when logging inserts, though. Should show previously
+ // generated keys on DELETE, UPDATE, or SELECT.
+ while (attributeIterator != null && attributeIterator.hasNext())
{
- buffer.append("->");
- buffer.append(attribute.getName());
+ attribute = attributeIterator.next();
+
+ if (isInserting == false || attribute.isGenerated() == false)
+ break;
}
- buffer.append(":");
- sqlLiteralForObject(buffer, parameters.get(i));
+ buffer.append(position);
+
+ if (attribute != null)
+ {
+ buffer.append("->");
+ buffer.append(attribute.getName());
+ }
+
+ buffer.append(":");
+ sqlLiteralForObject(buffer, parameter);
}
buffer.append(postfix);
}
}
+ private static boolean isInserting(String query)
+ {
+ if (query == null || query.length() == 0)
+ return false;
+
+ char firstCharacter = query.charAt(0);
+
+ if (firstCharacter == 'I' || firstCharacter == 'i')
+ return true;
+ else
+ return false;
+ }
+
/**
* @since 1.2
*/
- public static void logQuery(String queryStr, List params) {
+ public static void logQuery(String queryStr, List<?> params) {
logQuery(queryStr, null, params, -1);
}
@@ -291,10 +320,10 @@
* in prepared statement.
* @since 1.2
*/
- public static void logQuery(String queryStr, List<DbAttribute> attrs, List params, long time) {
+ public static void logQuery(String queryStr, List<DbAttribute> attrs, List<?> params, long time) {
if (isLoggable()) {
StringBuffer buf = new StringBuffer(queryStr);
- buildLog(buf, " [bind: ", "]", attrs, params);
+ buildLog(buf, " [bind: ", "]", attrs, params, isInserting(queryStr));
// log preparation time only if it is something significant
if (time > 5) {
@@ -308,11 +337,14 @@
/**
* @since 1.2
*/
- public static void logQueryParameters(String label, List<DbAttribute> attrs, List parameters) {
+ public static void logQueryParameters(String label,
+ List<DbAttribute> attrs,
+ List<Object> parameters,
+ boolean isInserting) {
String prefix = "[" + label + ": ";
if (isLoggable() && parameters.size() > 0) {
StringBuffer buf = new StringBuffer();
- buildLog(buf, prefix, "]", attrs, parameters);
+ buildLog(buf, prefix, "]", attrs, parameters, isInserting);
logObj.info(buf.toString());
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java?rev=612201&r1=612200&r2=612201&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java Tue Jan 15 12:23:50 2008
@@ -122,7 +122,8 @@
QueryLogger.logQueryParameters
("batch bind",
query.getDbAttributes(),
- queryBuilder.getParameterValues(query));
+ queryBuilder.getParameterValues(query),
+ query instanceof InsertBatchQuery);
}
queryBuilder.bindParameters(statement, query);
@@ -185,7 +186,7 @@
while (query.next()) {
if (isLoggable) {
QueryLogger.logQueryParameters
- ("bind", query.getDbAttributes(), queryBuilder.getParameterValues(query));
+ ("bind", query.getDbAttributes(), queryBuilder.getParameterValues(query), query instanceof InsertBatchQuery);
}
queryBuilder.bindParameters(statement, query);
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java?rev=612201&r1=612200&r2=612201&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleLOBBatchAction.java Tue Jan 15 12:23:50 2008
@@ -108,7 +108,7 @@
if (isLoggable) {
List bindings = queryBuilder.getValuesForLOBUpdateParameters(query);
- QueryLogger.logQueryParameters("bind", null, bindings);
+ QueryLogger.logQueryParameters("bind", null, bindings, query instanceof InsertBatchQuery);
}
queryBuilder.bindParameters(statement, query);
@@ -156,7 +156,7 @@
if (isLoggable) {
QueryLogger.logQuery(selectStr, qualifierValues);
- QueryLogger.logQueryParameters("write LOB", null, lobValues);
+ QueryLogger.logQueryParameters("write LOB", null, lobValues, false);
}
PreparedStatement selectStatement = con.prepareStatement(selectStr);
Re: svn commit: r612201 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/
apache/cayenne: access/QueryLogger.java access/jdbc/BatchAction.java
dba/oracle/OracleLOBBatchAction.java
Posted by Kevin Menard <km...@servprise.com>.
Not to be a pedantic pain in the neck, but please include the JIRA title in
the commit messages. I have no clue what CAY-960 is without having to go
look it up first.
Thanks,
Kevin
On 1/15/08 3:23 PM, "mgentry@apache.org" <mg...@apache.org> wrote:
> Author: mgentry
> Date: Tue Jan 15 12:23:50 2008
> New Revision: 612201
>
> URL: http://svn.apache.org/viewvc?rev=612201&view=rev
> Log:
> Changes for CAY-960.
>
> Modified: