Re: svn commit: r524591 - in /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test: java/org/apache/cayenne/access/DataContextEJBQLJoinsTest.java resources/dml/access.DataContextEJBQLJoinsTest.xml

From: Mike Kienenberger (mkienen..mail.com)
Date: Sun Apr 01 2007 - 20:50:37 EDT

  • Next message: Andrus Adamchik: "Re: svn commit: r524591 - in /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test: java/org/apache/cayenne/access/DataContextEJBQLJoinsTest.java resources/dml/access.DataContextEJBQLJoinsTest.xml"

    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 - 20:51:33 EDT