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 21:20:18 UTC
svn commit: r561449 - in
/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src:
main/java/org/apache/cayenne/access/jdbc/
test/java/org/apache/cayenne/access/ test/resources/dml/
Author: aadamchik
Date: Tue Jul 31 12:20:17 2007
New Revision: 561449
URL: http://svn.apache.org/viewvc?view=rev&rev=561449
Log:
CAY-836 EJBQL Delete Statement Support
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDeleteTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.DataContextEJBQLDeleteTest.xml
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDeleteTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDeleteTranslator.java?view=diff&rev=561449&r1=561448&r2=561449
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDeleteTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDeleteTranslator.java Tue Jul 31 12:20:17 2007
@@ -43,10 +43,16 @@
context.append("DELETE");
return true;
}
-
+
public boolean visitFrom(EJBQLExpression expression, int finishedChildIndex) {
context.append(" FROM");
expression.visit(new EJBQLFromTranslator(context));
+ return false;
+ }
+
+ public boolean visitWhere(EJBQLExpression expression) {
+ context.append(" WHERE");
+ expression.visit(new EJBQLConditionTranslator(context));
return false;
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java?view=diff&rev=561449&r1=561448&r2=561449
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteTest.java Tue Jul 31 12:20:17 2007
@@ -18,13 +18,19 @@
****************************************************************/
package org.apache.cayenne.access;
+import org.apache.art.Painting;
+import org.apache.cayenne.DataObjectUtils;
import org.apache.cayenne.QueryResponse;
import org.apache.cayenne.query.EJBQLQuery;
import org.apache.cayenne.unit.CayenneCase;
public class DataContextEJBQLDeleteTest extends CayenneCase {
+
+ protected void setUp() throws Exception {
+ deleteTestData();
+ }
- public void testDelete() throws Exception {
+ public void testDeleteNoQualifier() throws Exception {
createTestData("prepare");
String ejbql = "delete from Painting AS p";
@@ -36,5 +42,24 @@
assertNotNull(count);
assertEquals(1, count.length);
assertEquals(2, count[0]);
+ }
+
+ public void testDeleteSameEntityQualifier() throws Exception {
+ createTestData("prepare");
+
+ String ejbql = "delete from Painting AS p WHERE p.paintingTitle = 'P2'";
+ EJBQLQuery query = new EJBQLQuery(ejbql);
+
+ QueryResponse result = createDataContext().performGenericQuery(query);
+
+ int[] count = result.firstUpdateCount();
+ assertNotNull(count);
+ assertEquals(1, count.length);
+ assertEquals(1, count[0]);
+
+ assertNotNull(DataObjectUtils
+ .objectForPK(createDataContext(), Painting.class, 33001));
+ assertNull(DataObjectUtils
+ .objectForPK(createDataContext(), Painting.class, 33002));
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.DataContextEJBQLDeleteTest.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.DataContextEJBQLDeleteTest.xml?view=diff&rev=561449&r1=561448&r2=561449
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.DataContextEJBQLDeleteTest.xml (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/dml/access.DataContextEJBQLDeleteTest.xml Tue Jul 31 12:20:17 2007
@@ -6,46 +6,17 @@
<!-- Named Queries -->
<!-- ======================================= -->
- <!-- ARTIST -->
- <bean id="A1" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
- <constructor-arg type="java.lang.Class"><value>org.apache.art.Artist</value></constructor-arg>
- <constructor-arg><value>
- insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33001, 'AA1')
- </value></constructor-arg>
- </bean>
-
- <bean id="A2" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
- <constructor-arg type="java.lang.Class"><value>org.apache.art.Artist</value></constructor-arg>
- <constructor-arg><value>
- insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33002, 'AA2')
- </value></constructor-arg>
- </bean>
-
- <bean id="A3" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
- <constructor-arg type="java.lang.Class"><value>org.apache.art.Artist</value></constructor-arg>
- <constructor-arg><value>
- insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33003, 'BB1')
- </value></constructor-arg>
- </bean>
-
- <bean id="A4" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
- <constructor-arg type="java.lang.Class"><value>org.apache.art.Artist</value></constructor-arg>
- <constructor-arg><value>
- insert into ARTIST (ARTIST_ID, ARTIST_NAME) values (33004, 'BB2')
- </value></constructor-arg>
- </bean>
-
<bean id="P11" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
<constructor-arg type="java.lang.Class"><value>org.apache.art.Painting</value></constructor-arg>
<constructor-arg><value>
- INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) VALUES (33001, 'P1', 33001, 3000)
+ INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) VALUES (33001, 'P1', NULL, 3000)
</value></constructor-arg>
</bean>
<bean id="P12" class="org.apache.cayenne.unit.util.UpdatingSQLTemplate">
<constructor-arg type="java.lang.Class"><value>org.apache.art.Painting</value></constructor-arg>
<constructor-arg><value>
- INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) VALUES (33002, 'P2', 33002, 5000)
+ INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) VALUES (33002, 'P2', NULL, 5000)
</value></constructor-arg>
</bean>
@@ -57,10 +28,6 @@
<bean id="prepare" class="java.util.ArrayList">
<constructor-arg>
<list>
- <ref bean="A1"/>
- <ref bean="A2"/>
- <ref bean="A3"/>
- <ref bean="A4"/>
<ref bean="P11"/>
<ref bean="P12"/>
</list>