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 2010/01/10 13:41:51 UTC

svn commit: r897625 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/

Author: aadamchik
Date: Sun Jan 10 12:41:50 2010
New Revision: 897625

URL: http://svn.apache.org/viewvc?rev=897625&view=rev
Log:
CAY-1361 SelectQuery.aliasPathSplits does nothing

Added:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesTest.java
Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=897625&r1=897624&r2=897625&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Sun Jan 10 12:41:50 2010
@@ -48,6 +48,7 @@
 CAY-1351 EntityResolver.getEmbeddable(...) always returns null
 CAY-1353 warning "attribute.name" contains invalid character: . in Code generation dialog
 CAY-1355 Warning if rename Embeddable.
+CAY-1361 SelectQuery.aliasPathSplits does nothing
 
 ----------------------------------
 Release: 3.0 RC 1

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java?rev=897625&r1=897624&r2=897625&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java Sun Jan 10 12:41:50 2010
@@ -144,5 +144,9 @@
         if (pathSplitAliases == null) {
             pathSplitAliases = new HashMap<String, String>();
         }
+
+        for (String alias : aliases) {
+            pathSplitAliases.put(alias, path);
+        }
     }
 }

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesTest.java?rev=897625&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesTest.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSelectQuerySplitAliasesTest.java Sun Jan 10 12:41:50 2010
@@ -0,0 +1,97 @@
+/*****************************************************************
+ *   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.List;
+
+import org.apache.art.Artist;
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.query.SQLTemplate;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.unit.CayenneCase;
+
+public class DataContextSelectQuerySplitAliasesTest extends CayenneCase {
+
+    @Override
+    protected void setUp() throws Exception {
+        deleteTestData();
+    }
+
+    public void testAliasPathSplits_SinglePath() {
+        ObjectContext context = createDataContext();
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (1, 'AA')"));
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (2, 'BB')"));
+
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO PAINTING (PAINTING_ID, ARTIST_ID, PAINTING_TITLE) "
+                        + "VALUES (1, 1, 'X')"));
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO PAINTING (PAINTING_ID, ARTIST_ID, PAINTING_TITLE)"
+                        + " VALUES (2, 2, 'Y')"));
+
+        SelectQuery query = new SelectQuery(Artist.class);
+        query.andQualifier(ExpressionFactory.matchExp("p.paintingTitle", "X"));
+
+        query.aliasPathSplits("paintingArray", "p");
+
+        List<Artist> artists = context.performQuery(query);
+        assertEquals(1, artists.size());
+        assertEquals("AA", artists.get(0).getArtistName());
+    }
+
+    public void testAliasPathSplits_SplitJoin() {
+        ObjectContext context = createDataContext();
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (1, 'AA')"));
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (2, 'BB')"));
+
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO PAINTING (PAINTING_ID, ARTIST_ID, PAINTING_TITLE) "
+                        + "VALUES (1, 1, 'X')"));
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO PAINTING (PAINTING_ID, ARTIST_ID, PAINTING_TITLE)"
+                        + " VALUES (2, 2, 'Y')"));
+        context.performGenericQuery(new SQLTemplate(
+                Artist.class,
+                "INSERT INTO PAINTING (PAINTING_ID, ARTIST_ID, PAINTING_TITLE)"
+                        + " VALUES (3, 2, 'X')"));
+
+        SelectQuery query = new SelectQuery(Artist.class);
+        query.andQualifier(ExpressionFactory.matchExp("p1.paintingTitle", "X"));
+        query.andQualifier(ExpressionFactory.matchExp("p2.paintingTitle", "Y"));
+
+        query.aliasPathSplits("paintingArray", "p1", "p2");
+
+        List<Artist> artists = context.performQuery(query);
+        assertEquals(1, artists.size());
+        assertEquals("BB", artists.get(0).getArtistName());
+    }
+}