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 2007/07/31 22:37:15 UTC
svn commit: r561502 - in
/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne:
access/jdbc/ ejbql/ ejbql/parser/
Author: aadamchik
Date: Tue Jul 31 13:37:14 2007
New Revision: 561502
URL: http://svn.apache.org/viewvc?view=rev&rev=561502
Log:
CAY-837 EJBQL Update Statement Support
(initial update translator; changing the visitor API to make process UpdateField and Path the same way)
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLOrderByTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLBaseVisitor.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLExpressionVisitor.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/EJBQLUpdateField.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java Tue Jul 31 13:37:14 2007
@@ -23,7 +23,6 @@
import org.apache.cayenne.ejbql.EJBQLExpression;
import org.apache.cayenne.ejbql.EJBQLExpressionVisitor;
import org.apache.cayenne.ejbql.parser.EJBQLAggregateColumn;
-import org.apache.cayenne.ejbql.parser.EJBQLPath;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjAttribute;
@@ -121,7 +120,7 @@
return false;
}
- public boolean visitPath(EJBQLPath expression, int finishedChildIndex) {
+ public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
expression.visit(new FieldPathTranslator());
return false;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java Tue Jul 31 13:37:14 2007
@@ -29,7 +29,6 @@
import org.apache.cayenne.ejbql.EJBQLBaseVisitor;
import org.apache.cayenne.ejbql.EJBQLException;
import org.apache.cayenne.ejbql.EJBQLExpression;
-import org.apache.cayenne.ejbql.parser.EJBQLPath;
import org.apache.cayenne.ejbql.parser.EJBQLPositionalInputParameter;
/**
@@ -231,7 +230,7 @@
}
}
- public boolean visitPath(EJBQLPath expression, int finishedChildIndex) {
+ public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
expression.visit(new EJBQLPathTranslator(context) {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLOrderByTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLOrderByTranslator.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLOrderByTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLOrderByTranslator.java Tue Jul 31 13:37:14 2007
@@ -22,7 +22,6 @@
import org.apache.cayenne.ejbql.EJBQLException;
import org.apache.cayenne.ejbql.EJBQLExpression;
import org.apache.cayenne.ejbql.EJBQLExpressionVisitor;
-import org.apache.cayenne.ejbql.parser.EJBQLPath;
/**
* @since 3.0
@@ -50,7 +49,7 @@
return true;
}
- public boolean visitPath(EJBQLPath expression, int finishedChildIndex) {
+ public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
EJBQLExpressionVisitor childVisitor = new EJBQLPathTranslator(context) {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java Tue Jul 31 13:37:14 2007
@@ -62,7 +62,7 @@
protected abstract void appendMultiColumnPath(EJBQLMultiColumnOperand operand);
- public boolean visitPath(EJBQLPath expression, int finishedChildIndex) {
+ public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
if (finishedChildIndex > 0) {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java Tue Jul 31 13:37:14 2007
@@ -21,7 +21,6 @@
import org.apache.cayenne.ejbql.EJBQLBaseVisitor;
import org.apache.cayenne.ejbql.EJBQLException;
import org.apache.cayenne.ejbql.EJBQLExpression;
-import org.apache.cayenne.ejbql.parser.EJBQLPath;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjAttribute;
@@ -54,7 +53,7 @@
return false;
}
- public boolean visitPath(EJBQLPath expression, int finishedChildIndex) {
+ public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
EJBQLPathTranslator pathTranslator = new EJBQLPathTranslator(context) {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateTranslator.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateTranslator.java Tue Jul 31 13:37:14 2007
@@ -19,6 +19,7 @@
package org.apache.cayenne.access.jdbc;
import org.apache.cayenne.ejbql.EJBQLBaseVisitor;
+import org.apache.cayenne.ejbql.EJBQLException;
import org.apache.cayenne.ejbql.EJBQLExpression;
/**
@@ -62,18 +63,25 @@
return true;
}
- public boolean visitUpdateField(EJBQLExpression expression) {
+ public boolean visitUpdateField(EJBQLExpression expression, int finishedChildIndex) {
+
EJBQLPathTranslator pathTranslator = new EJBQLPathTranslator(context) {
protected void appendMultiColumnPath(EJBQLMultiColumnOperand operand) {
- throw new UnsupportedOperationException();
+ throw new EJBQLException("Multi-column paths are unsupported in UPDATEs");
+ }
+
+ public boolean visitUpdateField(EJBQLExpression expression, int finishedChildIndex) {
+ return visitPath(expression, finishedChildIndex);
}
};
+
expression.visit(pathTranslator);
return false;
}
public boolean visitUpdateValue(EJBQLExpression expression) {
+ context.append(" =");
return true;
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLBaseVisitor.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLBaseVisitor.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLBaseVisitor.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLBaseVisitor.java Tue Jul 31 13:37:14 2007
@@ -21,7 +21,6 @@
import org.apache.cayenne.ejbql.parser.EJBQLAggregateColumn;
import org.apache.cayenne.ejbql.parser.EJBQLFromItem;
import org.apache.cayenne.ejbql.parser.EJBQLJoin;
-import org.apache.cayenne.ejbql.parser.EJBQLPath;
import org.apache.cayenne.ejbql.parser.EJBQLPositionalInputParameter;
/**
@@ -291,7 +290,7 @@
return continueFlag;
}
- public boolean visitPath(EJBQLPath expression, int finishedChildIndex) {
+ public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
return continueFlag;
}
@@ -371,7 +370,7 @@
return continueFlag;
}
- public boolean visitUpdateField(EJBQLExpression expression) {
+ public boolean visitUpdateField(EJBQLExpression expression, int finishedChildIndex) {
return continueFlag;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLExpressionVisitor.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLExpressionVisitor.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLExpressionVisitor.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/EJBQLExpressionVisitor.java Tue Jul 31 13:37:14 2007
@@ -21,7 +21,6 @@
import org.apache.cayenne.ejbql.parser.EJBQLAggregateColumn;
import org.apache.cayenne.ejbql.parser.EJBQLFromItem;
import org.apache.cayenne.ejbql.parser.EJBQLJoin;
-import org.apache.cayenne.ejbql.parser.EJBQLPath;
import org.apache.cayenne.ejbql.parser.EJBQLPositionalInputParameter;
/**
@@ -274,7 +273,7 @@
* time, before its children; otherwise this is an index of a child just
* visited.
*/
- boolean visitPath(EJBQLPath expression, int finishedChildIndex);
+ boolean visitPath(EJBQLExpression expression, int finishedChildIndex);
boolean visitPatternValue(EJBQLExpression expression);
@@ -323,7 +322,7 @@
boolean visitUpdate(EJBQLExpression expression);
- boolean visitUpdateField(EJBQLExpression expression);
+ boolean visitUpdateField(EJBQLExpression expression, int finishedChildIndex);
boolean visitUpdateItem(EJBQLExpression expression);
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/EJBQLUpdateField.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/EJBQLUpdateField.java?view=diff&rev=561502&r1=561501&r2=561502
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/EJBQLUpdateField.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/EJBQLUpdateField.java Tue Jul 31 13:37:14 2007
@@ -25,11 +25,17 @@
* @author Andrus Adamchik
*/
public class EJBQLUpdateField extends SimpleNode {
- public EJBQLUpdateField(int id) {
- super(id);
- }
-
+
+ public EJBQLUpdateField(int id) {
+ super(id);
+ }
+
protected boolean visitNode(EJBQLExpressionVisitor visitor) {
- return visitor.visitUpdateField(this);
+ return visitor.visitUpdateField(this, -1);
+ }
+
+ protected boolean visitChild(EJBQLExpressionVisitor visitor, int childIndex) {
+ return super.visitChild(visitor, childIndex)
+ && visitor.visitUpdateField(this, childIndex);
}
}