Oh. Maybe I'm confused. Are we talking about the expression
language? Or the translator code? If just the EL, then there's
nothing worth saving there.
On 4/1/07, Andrus Adamchik <andru..bjectstyle.org> wrote:
> Hi Mike,
>
> Could you post a summary of how this works?
>
> I suspect there won't be much code reuse with EJB QL implementation
> (although functionally EJB QL should be able to replace any of the
> expression stuff).
>
> Andrus
>
>
> On Apr 1, 2007, at 8:50 PM, Mike Kienenberger wrote:
>
> > Andrus,
> >
> > Are you interested in the joins support (and outer join support) that
> > I added to 1.2? I can try to get it integrated into either 2.0 or
> > 3.0 later this week if you want. The biggest weakness was the
> > expression language support backing it.
> >
> > On 4/1/07, aadamchi..pache.org <aadamchik@apache.org> wrote:
> >> Author: aadamchik
> >> Date: Sun Apr 1 06:33:06 2007
> >> New Revision: 524591
> >>
> >> URL: http://svn.apache.org/viewvc?view=rev&rev=524591
> >> Log:
> >> CAY-452: EJB QL Cayenne Query
> >> starting on the joins support - initial unit tests
> >>
> >> Added:
> >> cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/
> >> test/java/org/apache/cayenne/access/DataContextEJBQLJoinsTest.java
> >> cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/
> >> test/resources/dml/access.DataContextEJBQLJoinsTest.xml
> >>
> >> Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/
> >> test/java/org/apache/cayenne/access/DataContextEJBQLJoinsTest.java
> >> URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/
> >> cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/
> >> DataContextEJBQLJoinsTest.java?view=auto&rev=524591
> >> =====================================================================
> >> =========
> >> --- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/
> >> test/java/org/apache/cayenne/access/DataContextEJBQLJoinsTest.java
> >> (added)
> >> +++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/
> >> test/java/org/apache/cayenne/access/DataContextEJBQLJoinsTest.java
> >> Sun Apr 1 06:33:06 2007
> >>.. -0,0 +1,89 @@
> >> +/*****************************************************************
> >> + * Licensed to the Apache Software Foundation (ASF) under one
> >> + * or more contributor license agreements. See the NOTICE file
> >> + * distributed with this work for additional information
> >> + * regarding copyright ownership. The ASF licenses this file
> >> + * to you under the Apache License, Version 2.0 (the
> >> + * "License"); you may not use this file except in compliance
> >> + * with the License. You may obtain a copy of the License at
> >> + *
> >> + * http://www.apache.org/licenses/LICENSE-2.0
> >> + *
> >> + * Unless required by applicable law or agreed to in writing,
> >> + * software distributed under the License is distributed on an
> >> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> >> + * KIND, either express or implied. See the License for the
> >> + * specific language governing permissions and limitations
> >> + * under the License.
> >> + ****************************************************************/
> >> +package org.apache.cayenne.access;
> >> +
> >> +import java.util.HashSet;
> >> +import java.util.Iterator;
> >> +import java.util.List;
> >> +import java.util.Set;
> >> +
> >> +import org.apache.art.Artist;
> >> +import org.apache.cayenne.DataObjectUtils;
> >> +import org.apache.cayenne.query.EJBQLQuery;
> >> +import org.apache.cayenne.unit.CayenneCase;
> >> +
> >> +public class DataContextEJBQLJoinsTest extends CayenneCase {
> >> +
> >> + protected void setUp() throws Exception {
> >> + deleteTestData();
> >> + }
> >> +
> >> + public void testThetaJoins() throws Exception {
> >> + createTestData("testThetaJoins");
> >> +
> >> +// String ejbql = "SELECT DISTINCT a "
> >> +// + "FROM Artist a, Painting b "
> >> +// + "WHERE a.artistName = b.paintingTitle";
> >> +//
> >> +// List artists = createDataContext().performQuery(new
> >> EJBQLQuery(ejbql));
> >> +// assertEquals(2, artists.size());
> >> +//
> >> +// Set names = new HashSet(2);
> >> +// Iterator it = artists.iterator();
> >> +// while (it.hasNext()) {
> >> +// Artist a = (Artist) it.next();
> >> +// names.add(a.getArtistName());
> >> +// }
> >> +//
> >> +// assertTrue(names.contains("AA1"));
> >> +// assertTrue(names.contains("BB2"));
> >> + }
> >> +
> >> + public void testInnerJoins() throws Exception {
> >> + createTestData("testInnerJoins");
> >> +
> >> +// String ejbql = "SELECT a "
> >> +// + "FROM Artist a INNER JOIN a.paintingArray p "
> >> +// + "WHERE a.artistName = 'A1'";
> >> +//
> >> +// List artists = createDataContext().performQuery(new
> >> EJBQLQuery(ejbql));
> >> +// assertEquals(1, artists.size());
> >> +// assertEquals(33001, DataObjectUtils.intPKForObject
> >> ((Artist) artists.get(0)));
> >> + }
> >> +
> >> + public void testOuterJoins() throws Exception {
> >> + createTestData("testInnerJoins");
> >> +
> >> + // String ejbql = "SELECT a "
> >> + // + "FROM Artist a LEFT JOIN a.paintingArray p "
> >> + // + "WHERE a.artistName = 'A1'";
> >> + //
> >> + // List artists = createDataContext().performQuery(new
> >> EJBQLQuery(ejbql));
> >> + // assertEquals(2, artists.size());
> >> + // Set ids = new HashSet(2);
> >> + // Iterator it = artists.iterator();
> >> + // while (it.hasNext()) {
> >> + // Artist a = (Artist) it.next();
> >> + // ids.add(DataObjectUtils.pkForObject(a));
> >> + // }
> >> + //
> >> + // assertTrue(ids.contains(new Integer(33001)));
> >> + // assertTrue(ids.contains(new Integer(33005)));
> >> + }
> >> +}
> >>
> >> Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/
> >> test/resources/dml/access.DataContextEJBQLJoinsTest.xml
> >> URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/
> >> cayenne-jdk1.4-unpublished/src/test/resources/dml/
> >> access.DataContextEJBQLJoinsTest.xml?view=auto&rev=524591
> >> =====================================================================
> >> =========
> >> --- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/
> >> test/resources/dml/access.DataContextEJBQLJoinsTest.xml (added)
> >> +++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/
> >> test/resources/dml/access.DataContextEJBQLJoinsTest.xml Sun Apr 1
> >> 06:33:06 2007
> >>.. -0,0 +1,97 @@
> >> +<?xml version="1.0" encoding="UTF-8" ?>
> >> +<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://
> >> www.springframework.org/dtd/spring-beans.dtd">
> >> +
> >> +<beans default-lazy-init="true">
> >> + <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="A5"
> >> 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
> >> (33005, 'AA1')
> >> + </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)
> >> + </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)
> >> + </value></constructor-arg>
> >> + </bean>
> >> +
> >> + <bean id="P13"
> >> 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 (33003, 'AA1', 33001, 3000)
> >> + </value></constructor-arg>
> >> + </bean>
> >> +
> >> + <bean id="P23"
> >> 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 (33004, 'BB2', 33002, 3000)
> >> + </value></constructor-arg>
> >> + </bean>
> >> +
> >> +
> >> + <!-- ======================================= -->
> >> + <!-- Data Sets -->
> >> + <!-- ======================================= -->
> >> +
> >> + <bean id="testThetaJoins" 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"/>
> >> + <ref bean="P13"/>
> >> + <ref bean="P23"/>
> >> + </list>
> >> + </constructor-arg>
> >> + </bean>
> >> +
> >> + <bean id="testInnerJoins" class="java.util.ArrayList">
> >> + <constructor-arg>
> >> + <list>
> >> + <ref bean="A1"/>
> >> + <ref bean="A5"/>
> >> + <ref bean="P11"/>
> >> + </list>
> >> + </constructor-arg>
> >> + </bean>
> >> +</beans>
> >> \ No newline at end of file
> >>
> >>
> >>
> >
>
>
This archive was generated by hypermail 2.0.0 : Sun Apr 01 2007 - 21:21:35 EDT