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 2014/03/13 12:04:37 UTC
svn commit: r1577108 [2/2] - in /cayenne/main/trunk/cayenne-server/src:
main/java/org/apache/cayenne/access/jdbc/
main/java/org/apache/cayenne/access/trans/
main/java/org/apache/cayenne/dba/db2/
main/java/org/apache/cayenne/dba/frontbase/ main/java/org...
Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java Thu Mar 13 11:04:36 2014
@@ -20,13 +20,12 @@
package org.apache.cayenne.access.trans;
import java.sql.Connection;
-import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.jdbc.ColumnDescriptor;
-import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.ExpressionException;
@@ -35,7 +34,6 @@ import org.apache.cayenne.log.JdbcEventL
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.query.PrefetchTreeNode;
-import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.query.SortOrder;
import org.apache.cayenne.test.jdbc.DBHelper;
@@ -58,17 +56,19 @@ public class SelectTranslatorTest extend
private DataContext context;
@Inject
- private DbAdapter adapter;
-
- @Inject
private UnitDbAdapter unitAdapter;
@Inject
private DBHelper dbHelper;
-
+
@Inject
private JdbcEventLogger logger;
+ @Inject
+ private DataNode dataNode;
+
+ private Connection connection;
+
@Override
protected void setUpAfterInjection() throws Exception {
dbHelper.deleteAll("PAINTING_INFO");
@@ -76,6 +76,13 @@ public class SelectTranslatorTest extend
dbHelper.deleteAll("ARTIST_EXHIBIT");
dbHelper.deleteAll("ARTIST_GROUP");
dbHelper.deleteAll("ARTIST");
+
+ this.connection = dataSourceFactory.getSharedDataSource().getConnection();
+ }
+
+ @Override
+ protected void tearDownBeforeInjection() throws Exception {
+ connection.close();
}
/**
@@ -83,29 +90,17 @@ public class SelectTranslatorTest extend
*/
public void testCreateSqlString1() throws Exception {
// query with qualifier and ordering
- SelectQuery q = new SelectQuery(Artist.class, ExpressionFactory.likeExp(
- "artistName",
- "a%"));
+ SelectQuery<Artist> q = new SelectQuery<Artist>(Artist.class, ExpressionFactory.likeExp("artistName", "a%"));
q.addOrdering("dateOfBirth", SortOrder.ASCENDING);
- Template test = new Template() {
-
- @Override
- void test(SelectTranslator transl) throws Exception {
- String generatedSql = transl.createSqlString();
-
- // do some simple assertions to make sure all parts are in
- assertNotNull(generatedSql);
- assertTrue(generatedSql.startsWith("SELECT "));
- assertTrue(generatedSql.indexOf(" FROM ") > 0);
- assertTrue(generatedSql.indexOf(" WHERE ") > generatedSql
- .indexOf(" FROM "));
- assertTrue(generatedSql.indexOf(" ORDER BY ") > generatedSql
- .indexOf(" WHERE "));
- }
- };
+ String generatedSql = new SelectTranslator(q, dataNode, connection).createSqlString();
- test.test(q);
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
+ assertTrue(generatedSql.indexOf(" FROM ") > 0);
+ assertTrue(generatedSql.indexOf(" WHERE ") > generatedSql.indexOf(" FROM "));
+ assertTrue(generatedSql.indexOf(" ORDER BY ") > generatedSql.indexOf(" WHERE "));
}
/**
@@ -113,66 +108,136 @@ public class SelectTranslatorTest extend
*/
public void testDbEntityQualifier() throws Exception {
- SelectQuery q = new SelectQuery(Artist.class);
+ SelectQuery<Artist> q = new SelectQuery<Artist>(Artist.class);
final DbEntity entity = context.getEntityResolver().getDbEntity("ARTIST");
- final DbEntity middleEntity = context.getEntityResolver().getDbEntity(
- "ARTIST_GROUP");
+ final DbEntity middleEntity = context.getEntityResolver().getDbEntity("ARTIST_GROUP");
+
+ SelectTranslator transl = new SelectTranslator(q, dataNode, connection);
+
+ entity.setQualifier(Expression.fromString("ARTIST_NAME = \"123\""));
+ middleEntity.setQualifier(Expression.fromString("GROUP_ID = 1987"));
+
+ try {
+
+ String generatedSql = transl.createSqlString();
+
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
+ assertTrue(generatedSql.indexOf(" FROM ") > 0);
+ if (generatedSql.contains("RTRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("RTRIM("));
+ } else if (generatedSql.contains("TRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("TRIM("));
+ } else {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
+ }
+ } finally {
+ entity.setQualifier(null);
+ middleEntity.setQualifier(null);
+ }
+ }
+
+ public void testDbEntityQualifier_OuterJoin() throws Exception {
+
+ SelectQuery q = new SelectQuery(Painting.class);
+ q.addOrdering("toArtist+.artistName", SortOrder.ASCENDING);
+
+ final DbEntity entity = context.getEntityResolver().getDbEntity("ARTIST");
+ final DbEntity middleEntity = context.getEntityResolver().getDbEntity("ARTIST_GROUP");
+
+ SelectTranslator transl = new SelectTranslator(q, dataNode, connection);
+
entity.setQualifier(Expression.fromString("ARTIST_NAME = \"123\""));
middleEntity.setQualifier(Expression.fromString("GROUP_ID = 1987"));
try {
- Template test = new Template() {
- @Override
- void test(SelectTranslator transl) throws Exception {
- String generatedSql = transl.createSqlString();
-
- // do some simple assertions to make sure all parts are in
- assertNotNull(generatedSql);
- assertTrue(generatedSql.startsWith("SELECT "));
- assertTrue(generatedSql.indexOf(" FROM ") > 0);
- if (generatedSql.contains("RTRIM")) {
- assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql
- .indexOf("RTRIM("));
- } else if (generatedSql.contains("TRIM")) {
- assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql
- .indexOf("TRIM("));
- } else {
- assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
- }
- }
- };
-
- test.test(q);
- context.performQuery(q);
-
- // testing outer join!!
- q = new SelectQuery(Painting.class);
- q.addOrdering("toArtist+.artistName", SortOrder.ASCENDING);
- test.test(q);
- context.performQuery(q);
-
- // testing quering from related table
- q = new SelectQuery(Painting.class, ExpressionFactory.matchExp(
- "toArtist.artistName",
- "foo"));
- test.test(q);
- context.performQuery(q);
-
- // testing flattened rels
- q = new SelectQuery(Artist.class, ExpressionFactory.matchExp(
- "groupArray.name",
- "bar"));
- new Template() {
-
- @Override
- void test(SelectTranslator transl) throws Exception {
- assertTrue(transl.createSqlString().indexOf("GROUP_ID = ") > 0);
- }
- }.test(q);
- context.performQuery(q);
+ String generatedSql = transl.createSqlString();
+
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
+ assertTrue(generatedSql.indexOf(" FROM ") > 0);
+ if (generatedSql.contains("RTRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("RTRIM("));
+ } else if (generatedSql.contains("TRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("TRIM("));
+ } else {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
+ }
+
+ } finally {
+ entity.setQualifier(null);
+ middleEntity.setQualifier(null);
}
- finally {
+ }
+
+ public void testDbEntityQualifier_FlattenedRel() throws Exception {
+
+ SelectQuery<Artist> q = new SelectQuery<Artist>(Artist.class, ExpressionFactory.matchExp("groupArray.name",
+ "bar"));
+
+ final DbEntity entity = context.getEntityResolver().getDbEntity("ARTIST");
+ final DbEntity middleEntity = context.getEntityResolver().getDbEntity("ARTIST_GROUP");
+
+ SelectTranslator transl = new SelectTranslator(q, dataNode, connection);
+
+ entity.setQualifier(Expression.fromString("ARTIST_NAME = \"123\""));
+ middleEntity.setQualifier(Expression.fromString("GROUP_ID = 1987"));
+
+ try {
+
+ String generatedSql = transl.createSqlString();
+
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
+ assertTrue(generatedSql.indexOf(" FROM ") > 0);
+ if (generatedSql.contains("RTRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("RTRIM("));
+ } else if (generatedSql.contains("TRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("TRIM("));
+ } else {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
+ }
+
+ } finally {
+ entity.setQualifier(null);
+ middleEntity.setQualifier(null);
+ }
+ }
+
+ public void testDbEntityQualifier_RelatedMatch() throws Exception {
+
+ SelectQuery<Artist> q = new SelectQuery(Painting.class,
+ ExpressionFactory.matchExp("toArtist.artistName", "foo"));
+
+ final DbEntity entity = context.getEntityResolver().getDbEntity("ARTIST");
+ final DbEntity middleEntity = context.getEntityResolver().getDbEntity("ARTIST_GROUP");
+
+ SelectTranslator transl = new SelectTranslator(q, dataNode, connection);
+
+ entity.setQualifier(Expression.fromString("ARTIST_NAME = \"123\""));
+ middleEntity.setQualifier(Expression.fromString("GROUP_ID = 1987"));
+
+ try {
+
+ String generatedSql = transl.createSqlString();
+
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
+ assertTrue(generatedSql.indexOf(" FROM ") > 0);
+ if (generatedSql.contains("RTRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("RTRIM("));
+ } else if (generatedSql.contains("TRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("TRIM("));
+ } else {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
+ }
+
+ } finally {
entity.setQualifier(null);
middleEntity.setQualifier(null);
}
@@ -186,19 +251,11 @@ public class SelectTranslatorTest extend
SelectQuery q = new SelectQuery(Artist.class);
q.setDistinct(true);
- Template test = new Template() {
+ String generatedSql = new SelectTranslator(q, dataNode, connection).createSqlString();
- @Override
- void test(SelectTranslator transl) throws Exception {
- String generatedSql = transl.createSqlString();
-
- // do some simple assertions to make sure all parts are in
- assertNotNull(generatedSql);
- assertTrue(generatedSql.startsWith("SELECT DISTINCT"));
- }
- };
-
- test.test(q);
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT DISTINCT"));
}
/**
@@ -210,39 +267,25 @@ public class SelectTranslatorTest extend
// query with qualifier and ordering
SelectQuery q = new SelectQuery(ArtistExhibit.class);
q.setQualifier(ExpressionFactory.likeExp("toArtist.artistName", "a%"));
- q.andQualifier(ExpressionFactory.likeExp(
- "toExhibit.toGallery.paintingArray.toArtist.artistName",
- "a%"));
-
- Template test = new Template() {
-
- @Override
- void test(SelectTranslator transl) throws Exception {
- String generatedSql = transl.createSqlString();
- // logObj.warn("Query: " + generatedSql);
-
- // do some simple assertions to make sure all parts are in
- assertNotNull(generatedSql);
- assertTrue(generatedSql.startsWith("SELECT "));
- assertTrue(generatedSql.indexOf(" FROM ") > 0);
- assertTrue(generatedSql.indexOf(" WHERE ") > generatedSql
- .indexOf(" FROM "));
-
- // check that there are 2 distinct aliases for the ARTIST table
- int ind1 = generatedSql.indexOf("ARTIST t", generatedSql
- .indexOf(" FROM "));
- assertTrue(ind1 > 0);
+ q.andQualifier(ExpressionFactory.likeExp("toExhibit.toGallery.paintingArray.toArtist.artistName", "a%"));
- int ind2 = generatedSql.indexOf("ARTIST t", ind1 + 1);
- assertTrue(ind2 > 0);
+ String generatedSql = new SelectTranslator(q, dataNode, connection).createSqlString();
+ // logObj.warn("Query: " + generatedSql);
- assertTrue(generatedSql.charAt(ind1 + "ARTIST t".length()) != generatedSql
- .charAt(ind2 + "ARTIST t".length()));
- }
- };
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
+ assertTrue(generatedSql.indexOf(" FROM ") > 0);
+ assertTrue(generatedSql.indexOf(" WHERE ") > generatedSql.indexOf(" FROM "));
+
+ // check that there are 2 distinct aliases for the ARTIST table
+ int ind1 = generatedSql.indexOf("ARTIST t", generatedSql.indexOf(" FROM "));
+ assertTrue(ind1 > 0);
- test.test(q);
+ int ind2 = generatedSql.indexOf("ARTIST t", ind1 + 1);
+ assertTrue(ind2 > 0);
+ assertTrue(generatedSql.charAt(ind1 + "ARTIST t".length()) != generatedSql.charAt(ind2 + "ARTIST t".length()));
}
/**
@@ -254,77 +297,59 @@ public class SelectTranslatorTest extend
// query with qualifier and ordering
SelectQuery q = new SelectQuery(ArtistExhibit.class);
q.setQualifier(ExpressionFactory.likeExp("toArtist.artistName", "a%"));
- q.andQualifier(ExpressionFactory.likeExp(
- "toArtist.paintingArray.paintingTitle",
- "p%"));
-
- Template test = new Template() {
-
- @Override
- void test(SelectTranslator transl) throws Exception {
- String generatedSql = transl.createSqlString();
-
- // do some simple assertions to make sure all parts are in
- assertNotNull(generatedSql);
- assertTrue(generatedSql.startsWith("SELECT "));
- assertTrue(generatedSql.indexOf(" FROM ") > 0);
- assertTrue(generatedSql.indexOf(" WHERE ") > generatedSql
- .indexOf(" FROM "));
-
- // check that there is only one distinct alias for the ARTIST table
- int ind1 = generatedSql.indexOf("ARTIST t", generatedSql
- .indexOf(" FROM "));
- assertTrue(ind1 > 0);
+ q.andQualifier(ExpressionFactory.likeExp("toArtist.paintingArray.paintingTitle", "p%"));
- int ind2 = generatedSql.indexOf("ARTIST t", ind1 + 1);
- assertTrue(generatedSql, ind2 < 0);
- }
- };
+ String generatedSql = new SelectTranslator(q, dataNode, connection).createSqlString();
+
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
+ assertTrue(generatedSql.indexOf(" FROM ") > 0);
+ assertTrue(generatedSql.indexOf(" WHERE ") > generatedSql.indexOf(" FROM "));
+
+ // check that there is only one distinct alias for the ARTIST
+ // table
+ int ind1 = generatedSql.indexOf("ARTIST t", generatedSql.indexOf(" FROM "));
+ assertTrue(ind1 > 0);
- test.test(q);
+ int ind2 = generatedSql.indexOf("ARTIST t", ind1 + 1);
+ assertTrue(generatedSql, ind2 < 0);
}
/**
- * Test query when qualifying on the same attribute more than once. Check translation
- * "Artist.dateOfBirth > ? AND Artist.dateOfBirth < ?".
+ * Test query when qualifying on the same attribute more than once. Check
+ * translation "Artist.dateOfBirth > ? AND Artist.dateOfBirth < ?".
*/
public void testCreateSqlString7() throws Exception {
SelectQuery q = new SelectQuery(Artist.class);
q.setQualifier(ExpressionFactory.greaterExp("dateOfBirth", new Date()));
q.andQualifier(ExpressionFactory.lessExp("dateOfBirth", new Date()));
- Template test = new Template() {
+ String generatedSql = new SelectTranslator(q, dataNode, connection).createSqlString();
+ // logObj.warn("Query: " + generatedSql);
- @Override
- void test(SelectTranslator transl) throws Exception {
- String generatedSql = transl.createSqlString();
- // logObj.warn("Query: " + generatedSql);
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
- // do some simple assertions to make sure all parts are in
- assertNotNull(generatedSql);
- assertTrue(generatedSql.startsWith("SELECT "));
+ int i1 = generatedSql.indexOf(" FROM ");
+ assertTrue(i1 > 0);
- int i1 = generatedSql.indexOf(" FROM ");
- assertTrue(i1 > 0);
+ int i2 = generatedSql.indexOf(" WHERE ");
+ assertTrue(i2 > i1);
- int i2 = generatedSql.indexOf(" WHERE ");
- assertTrue(i2 > i1);
+ int i3 = generatedSql.indexOf("DATE_OF_BIRTH", i2 + 1);
+ assertTrue(i3 > i2);
- int i3 = generatedSql.indexOf("DATE_OF_BIRTH", i2 + 1);
- assertTrue(i3 > i2);
-
- int i4 = generatedSql.indexOf("DATE_OF_BIRTH", i3 + 1);
- assertTrue("No second DOB comparison: " + i4 + ", " + i3, i4 > i3);
- }
- };
-
- test.test(q);
+ int i4 = generatedSql.indexOf("DATE_OF_BIRTH", i3 + 1);
+ assertTrue("No second DOB comparison: " + i4 + ", " + i3, i4 > i3);
}
/**
- * Test query when qualifying on the same attribute accessed over relationship, more
- * than once. Check translation "Painting.toArtist.dateOfBirth > ? AND
- * Painting.toArtist.dateOfBirth < ?".
+ * Test query when qualifying on the same attribute accessed over
+ * relationship, more than once. Check translation
+ * "Painting.toArtist.dateOfBirth > ? AND Painting.toArtist.dateOfBirth <
+ * ?".
*/
public void testCreateSqlString8() throws Exception {
SelectQuery q = new SelectQuery();
@@ -332,199 +357,145 @@ public class SelectTranslatorTest extend
q.setQualifier(ExpressionFactory.greaterExp("toArtist.dateOfBirth", new Date()));
q.andQualifier(ExpressionFactory.lessExp("toArtist.dateOfBirth", new Date()));
- Template test = new Template() {
-
- @Override
- void test(SelectTranslator transl) throws Exception {
- String generatedSql = transl.createSqlString();
+ String generatedSql = new SelectTranslator(q, dataNode, connection).createSqlString();
- // do some simple assertions to make sure all parts are in
- assertNotNull(generatedSql);
- assertTrue(generatedSql.startsWith("SELECT "));
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(generatedSql);
+ assertTrue(generatedSql.startsWith("SELECT "));
- int i1 = generatedSql.indexOf(" FROM ");
- assertTrue(i1 > 0);
+ int i1 = generatedSql.indexOf(" FROM ");
+ assertTrue(i1 > 0);
- int i2 = generatedSql.indexOf(" WHERE ");
- assertTrue(i2 > i1);
+ int i2 = generatedSql.indexOf(" WHERE ");
+ assertTrue(i2 > i1);
- int i3 = generatedSql.indexOf("DATE_OF_BIRTH", i2 + 1);
- assertTrue(i3 > i2);
-
- int i4 = generatedSql.indexOf("DATE_OF_BIRTH", i3 + 1);
- assertTrue("No second DOB comparison: " + i4 + ", " + i3, i4 > i3);
- }
- };
+ int i3 = generatedSql.indexOf("DATE_OF_BIRTH", i2 + 1);
+ assertTrue(i3 > i2);
- test.test(q);
+ int i4 = generatedSql.indexOf("DATE_OF_BIRTH", i3 + 1);
+ assertTrue("No second DOB comparison: " + i4 + ", " + i3, i4 > i3);
}
public void testCreateSqlString9() throws Exception {
// query for a compound ObjEntity with qualifier
- SelectQuery q = new SelectQuery(CompoundPainting.class, ExpressionFactory
- .likeExp("artistName", "a%"));
+ SelectQuery q = new SelectQuery(CompoundPainting.class, ExpressionFactory.likeExp("artistName", "a%"));
- Template test = new Template() {
+ String sql = new SelectTranslator(q, dataNode, connection).createSqlString();
- @Override
- void test(SelectTranslator transl) throws Exception {
+ // do some simple assertions to make sure all parts are in
+ assertNotNull(sql);
+ assertTrue(sql.startsWith("SELECT "));
- String sql = transl.createSqlString();
+ int i1 = sql.indexOf(" FROM ");
+ assertTrue(i1 > 0);
- // do some simple assertions to make sure all parts are in
- assertNotNull(sql);
- assertTrue(sql.startsWith("SELECT "));
+ int i2 = sql.indexOf("PAINTING");
+ assertTrue(i2 > 0);
- int i1 = sql.indexOf(" FROM ");
- assertTrue(i1 > 0);
+ int i3 = sql.indexOf("ARTIST");
+ assertTrue(i3 > 0);
- int i2 = sql.indexOf("PAINTING");
- assertTrue(i2 > 0);
+ int i4 = sql.indexOf("GALLERY");
+ assertTrue(i4 > 0);
- int i3 = sql.indexOf("ARTIST");
- assertTrue(i3 > 0);
+ int i5 = sql.indexOf("PAINTING_INFO");
+ assertTrue(i5 > 0);
- int i4 = sql.indexOf("GALLERY");
- assertTrue(i4 > 0);
+ int i6 = sql.indexOf("ARTIST_NAME");
+ assertTrue(i6 > 0);
- int i5 = sql.indexOf("PAINTING_INFO");
- assertTrue(i5 > 0);
+ int i7 = sql.indexOf("ESTIMATED_PRICE");
+ assertTrue(i7 > 0);
- int i6 = sql.indexOf("ARTIST_NAME");
- assertTrue(i6 > 0);
+ int i8 = sql.indexOf("GALLERY_NAME");
+ assertTrue(i8 > 0);
- int i7 = sql.indexOf("ESTIMATED_PRICE");
- assertTrue(i7 > 0);
+ int i9 = sql.indexOf("PAINTING_TITLE");
+ assertTrue(i9 > 0);
- int i8 = sql.indexOf("GALLERY_NAME");
- assertTrue(i8 > 0);
+ int i10 = sql.indexOf("TEXT_REVIEW");
+ assertTrue(i10 > 0);
- int i9 = sql.indexOf("PAINTING_TITLE");
- assertTrue(i9 > 0);
+ int i11 = sql.indexOf("PAINTING_ID");
+ assertTrue(i11 > 0);
- int i10 = sql.indexOf("TEXT_REVIEW");
- assertTrue(i10 > 0);
+ int i12 = sql.indexOf("ARTIST_ID");
+ assertTrue(i12 > 0);
- int i11 = sql.indexOf("PAINTING_ID");
- assertTrue(i11 > 0);
+ int i13 = sql.indexOf("GALLERY_ID");
+ assertTrue(i13 > 0);
- int i12 = sql.indexOf("ARTIST_ID");
- assertTrue(i12 > 0);
-
- int i13 = sql.indexOf("GALLERY_ID");
- assertTrue(i13 > 0);
- }
- };
-
- test.test(q);
}
public void testCreateSqlString10() throws Exception {
// query with to-many joint prefetches
SelectQuery q = new SelectQuery(Artist.class);
- q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
- PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
-
- Template test = new Template() {
+ q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
- @Override
- void test(SelectTranslator transl) throws Exception {
+ SelectTranslator transl = new SelectTranslator(q, dataNode, connection);
+ String sql = transl.createSqlString();
+ assertNotNull(sql);
+ assertTrue(sql.startsWith("SELECT "));
- String sql = transl.createSqlString();
- assertNotNull(sql);
- assertTrue(sql.startsWith("SELECT "));
+ int i1 = sql.indexOf("ARTIST_ID");
+ assertTrue(sql, i1 > 0);
- int i1 = sql.indexOf("ARTIST_ID");
- assertTrue(sql, i1 > 0);
+ int i2 = sql.indexOf("FROM");
+ assertTrue(sql, i2 > 0);
- int i2 = sql.indexOf("FROM");
- assertTrue(sql, i2 > 0);
+ assertTrue(sql, sql.indexOf("PAINTING_ID") > 0);
- assertTrue(sql, sql.indexOf("PAINTING_ID") > 0);
-
- // assert we have one join
- assertEquals(1, transl.joinStack.size());
- }
- };
-
- test.test(q);
+ // assert we have one join
+ assertEquals(1, transl.joinStack.size());
}
public void testCreateSqlString11() throws Exception {
// query with joint prefetches and other joins
- SelectQuery q = new SelectQuery(Artist.class, Expression
- .fromString("paintingArray.paintingTitle = 'a'"));
- q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
- PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
-
- Template test = new Template() {
+ SelectQuery q = new SelectQuery(Artist.class, Expression.fromString("paintingArray.paintingTitle = 'a'"));
+ q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
- @Override
- void test(SelectTranslator transl) throws Exception {
+ SelectTranslator transl = new SelectTranslator(q, dataNode, connection);
- transl.createSqlString();
+ transl.createSqlString();
- // assert we only have one join
- assertEquals(2, transl.joinStack.size());
- }
- };
-
- test.test(q);
+ // assert we only have one join
+ assertEquals(2, transl.joinStack.size());
}
public void testCreateSqlString12() throws Exception {
// query with to-one joint prefetches
SelectQuery q = new SelectQuery(Painting.class);
- q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
- PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
-
- Template test = new Template() {
+ q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
- @Override
- void test(SelectTranslator transl) throws Exception {
+ SelectTranslator transl = new SelectTranslator(q, dataNode, connection);
- String sql = transl.createSqlString();
- assertNotNull(sql);
- assertTrue(sql.startsWith("SELECT "));
+ String sql = transl.createSqlString();
+ assertNotNull(sql);
+ assertTrue(sql.startsWith("SELECT "));
- int i1 = sql.indexOf("ARTIST_ID");
- assertTrue(sql, i1 > 0);
+ int i1 = sql.indexOf("ARTIST_ID");
+ assertTrue(sql, i1 > 0);
- int i2 = sql.indexOf("FROM");
- assertTrue(sql, i2 > 0);
+ int i2 = sql.indexOf("FROM");
+ assertTrue(sql, i2 > 0);
- assertTrue(sql, sql.indexOf("PAINTING_ID") > 0);
+ assertTrue(sql, sql.indexOf("PAINTING_ID") > 0);
- // assert we have one join
- assertEquals(1, transl.joinStack.size());
- }
- };
-
- test.test(q);
+ // assert we have one join
+ assertEquals(1, transl.joinStack.size());
}
public void testCreateSqlString13() throws Exception {
// query with invalid joint prefetches
SelectQuery q = new SelectQuery(Painting.class);
- q.addPrefetch("invalid.invalid").setSemantics(
- PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
-
- Template test = new Template() {
-
- @Override
- void test(SelectTranslator transl) throws Exception {
+ q.addPrefetch("invalid.invalid").setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
- try {
- transl.createSqlString();
- fail("Invalid jointPrefetch must have thrown...");
- }
- catch (ExpressionException e) {
- // expected
- }
- }
- };
-
- test.test(q);
+ try {
+ new SelectTranslator(q, dataNode, connection).createSqlString();
+ fail("Invalid jointPrefetch must have thrown...");
+ } catch (ExpressionException e) {
+ // expected
+ }
}
public void testCreateSqlStringWithQuoteSqlIdentifiers() throws Exception {
@@ -535,65 +506,28 @@ public class SelectTranslatorTest extend
entity.getDataMap().setQuotingSQLIdentifiers(true);
q.addOrdering("dateOfBirth", SortOrder.ASCENDING);
- Template test = new Template() {
+ String charStart = unitAdapter.getIdentifiersStartQuote();
+ String charEnd = unitAdapter.getIdentifiersEndQuote();
- @Override
- void test(SelectTranslator transl) throws Exception {
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
-
- String s = transl.createSqlString();
- assertTrue(s.startsWith("SELECT "));
- int iFrom = s.indexOf(" FROM ");
- assertTrue(iFrom > 0);
- int artistName = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_NAME"
- + charEnd);
- assertTrue(artistName > 0 && artistName < iFrom);
- int artistId = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd);
- assertTrue(artistId > 0 && artistId < iFrom);
- int dateOfBirth = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "DATE_OF_BIRTH"
- + charEnd);
- assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
- int iArtist = s.indexOf(charStart
- + "ARTIST"
- + charEnd
- + " "
- + charStart
- + "t0"
- + charEnd);
- assertTrue(iArtist > iFrom);
- int iOrderBy = s.indexOf(" ORDER BY ");
- int dateOfBirth2 = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "DATE_OF_BIRTH"
- + charEnd, iOrderBy);
- assertTrue(iOrderBy > iArtist);
- assertTrue(dateOfBirth2 > iOrderBy);
- }
- };
+ String s = new SelectTranslator(q, dataNode, connection).createSqlString();
+ assertTrue(s.startsWith("SELECT "));
+ int iFrom = s.indexOf(" FROM ");
+ assertTrue(iFrom > 0);
+ int artistName = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_NAME" + charEnd);
+ assertTrue(artistName > 0 && artistName < iFrom);
+ int artistId = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_ID" + charEnd);
+ assertTrue(artistId > 0 && artistId < iFrom);
+ int dateOfBirth = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "DATE_OF_BIRTH" + charEnd);
+ assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
+ int iArtist = s.indexOf(charStart + "ARTIST" + charEnd + " " + charStart + "t0" + charEnd);
+ assertTrue(iArtist > iFrom);
+ int iOrderBy = s.indexOf(" ORDER BY ");
+ int dateOfBirth2 = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "DATE_OF_BIRTH" + charEnd,
+ iOrderBy);
+ assertTrue(iOrderBy > iArtist);
+ assertTrue(dateOfBirth2 > iOrderBy);
- test.test(q);
- }
- finally {
+ } finally {
DbEntity entity = context.getEntityResolver().getDbEntity("ARTIST");
entity.getDataMap().setQuotingSQLIdentifiers(false);
}
@@ -609,82 +543,36 @@ public class SelectTranslatorTest extend
q.setQualifier(ExpressionFactory.greaterExp("dateOfBirth", new Date()));
q.andQualifier(ExpressionFactory.lessExp("dateOfBirth", new Date()));
- Template test = new Template() {
-
- @Override
- void test(SelectTranslator transl) throws Exception {
+ String charStart = unitAdapter.getIdentifiersStartQuote();
+ String charEnd = unitAdapter.getIdentifiersEndQuote();
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
+ String s = new SelectTranslator(q, dataNode, connection).createSqlString();
- String s = transl.createSqlString();
-
- assertTrue(s.startsWith("SELECT "));
- int iFrom = s.indexOf(" FROM ");
- assertTrue(iFrom > 0);
- int artistName = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_NAME"
- + charEnd);
- assertTrue(artistName > 0 && artistName < iFrom);
- int artistId = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd);
- assertTrue(artistId > 0 && artistId < iFrom);
- int dateOfBirth = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "DATE_OF_BIRTH"
- + charEnd);
- assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
- int iArtist = s.indexOf(charStart
- + "ARTIST"
- + charEnd
- + " "
- + charStart
- + "t0"
- + charEnd);
- assertTrue(iArtist > iFrom);
- int iWhere = s.indexOf(" WHERE ");
- assertTrue(iWhere > iArtist);
-
- int dateOfBirth2 = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "DATE_OF_BIRTH"
- + charEnd
- + " > ?");
- assertTrue(dateOfBirth2 > iWhere);
-
- int iAnd = s.indexOf(" AND ");
- assertTrue(iAnd > iWhere);
- int dateOfBirth3 = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "DATE_OF_BIRTH"
- + charEnd
- + " < ?");
- assertTrue(dateOfBirth3 > iAnd);
+ assertTrue(s.startsWith("SELECT "));
+ int iFrom = s.indexOf(" FROM ");
+ assertTrue(iFrom > 0);
+ int artistName = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_NAME" + charEnd);
+ assertTrue(artistName > 0 && artistName < iFrom);
+ int artistId = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_ID" + charEnd);
+ assertTrue(artistId > 0 && artistId < iFrom);
+ int dateOfBirth = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "DATE_OF_BIRTH" + charEnd);
+ assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
+ int iArtist = s.indexOf(charStart + "ARTIST" + charEnd + " " + charStart + "t0" + charEnd);
+ assertTrue(iArtist > iFrom);
+ int iWhere = s.indexOf(" WHERE ");
+ assertTrue(iWhere > iArtist);
+
+ int dateOfBirth2 = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "DATE_OF_BIRTH" + charEnd
+ + " > ?");
+ assertTrue(dateOfBirth2 > iWhere);
+
+ int iAnd = s.indexOf(" AND ");
+ assertTrue(iAnd > iWhere);
+ int dateOfBirth3 = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "DATE_OF_BIRTH" + charEnd
+ + " < ?");
+ assertTrue(dateOfBirth3 > iAnd);
- }
- };
-
- test.test(q);
- }
- finally {
+ } finally {
DbEntity entity = context.getEntityResolver().getDbEntity("ARTIST");
entity.getDataMap().setQuotingSQLIdentifiers(false);
}
@@ -695,184 +583,74 @@ public class SelectTranslatorTest extend
// query with joint prefetches and other joins
// and with QuoteSqlIdentifiers = true
try {
- SelectQuery q = new SelectQuery(Artist.class, Expression
- .fromString("paintingArray.paintingTitle = 'a'"));
- q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
- PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+ SelectQuery q = new SelectQuery(Artist.class, Expression.fromString("paintingArray.paintingTitle = 'a'"));
+ q.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
DbEntity entity = context.getEntityResolver().getDbEntity("ARTIST");
entity.getDataMap().setQuotingSQLIdentifiers(true);
- Template test = new Template() {
+ String charStart = unitAdapter.getIdentifiersStartQuote();
+ String charEnd = unitAdapter.getIdentifiersEndQuote();
- @Override
- void test(SelectTranslator transl) throws Exception {
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
-
- String s = transl.createSqlString();
-
- assertTrue(s.startsWith("SELECT DISTINCT "));
- int iFrom = s.indexOf(" FROM ");
- assertTrue(iFrom > 0);
- int artistName = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_NAME"
- + charEnd);
- assertTrue(artistName > 0 && artistName < iFrom);
- int artistId = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd);
- assertTrue(artistId > 0 && artistId < iFrom);
- int dateOfBirth = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "DATE_OF_BIRTH"
- + charEnd);
- assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
- int estimatedPrice = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "ESTIMATED_PRICE"
- + charEnd);
- assertTrue(estimatedPrice > 0 && estimatedPrice < iFrom);
- int paintingDescription = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "PAINTING_DESCRIPTION"
- + charEnd);
- assertTrue(paintingDescription > 0 && paintingDescription < iFrom);
- int paintingTitle = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "PAINTING_TITLE"
- + charEnd);
- assertTrue(paintingTitle > 0 && paintingTitle < iFrom);
- int artistIdT1 = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd);
- assertTrue(artistIdT1 > 0 && artistIdT1 < iFrom);
- int galleryId = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "GALLERY_ID"
- + charEnd);
- assertTrue(galleryId > 0 && galleryId < iFrom);
- int paintingId = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "PAINTING_ID"
- + charEnd);
- assertTrue(paintingId > 0 && paintingId < iFrom);
- int iArtist = s.indexOf(charStart
- + "ARTIST"
- + charEnd
- + " "
- + charStart
- + "t0"
- + charEnd);
- assertTrue(iArtist > iFrom);
- int iLeftJoin = s.indexOf("LEFT JOIN");
- assertTrue(iLeftJoin > iFrom);
- int iPainting = s.indexOf(charStart
- + "PAINTING"
- + charEnd
- + " "
- + charStart
- + "t1"
- + charEnd);
- assertTrue(iPainting > iLeftJoin);
- int iOn = s.indexOf(" ON ");
- assertTrue(iOn > iLeftJoin);
- int iArtistId = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd, iLeftJoin);
- assertTrue(iArtistId > iOn);
- int iArtistIdT1 = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd, iLeftJoin);
- assertTrue(iArtistIdT1 > iOn);
- int i = s.indexOf("=", iLeftJoin);
- assertTrue(iArtistIdT1 > i || iArtistId > i);
- int iJoin = s.indexOf("JOIN");
- assertTrue(iJoin > iLeftJoin);
- int iPainting2 = s.indexOf(charStart
- + "PAINTING"
- + charEnd
- + " "
- + charStart
- + "t2"
- + charEnd);
- assertTrue(iPainting2 > iJoin);
- int iOn2 = s.indexOf(" ON ");
- assertTrue(iOn2 > iJoin);
- int iArtistId2 = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd, iJoin);
- assertTrue(iArtistId2 > iOn2);
- int iArtistId2T2 = s.indexOf(charStart
- + "t2"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd, iJoin);
- assertTrue(iArtistId2T2 > iOn2);
- int i2 = s.indexOf("=", iJoin);
- assertTrue(iArtistId2T2 > i2 || iArtistId2 > i2);
- int iWhere = s.indexOf(" WHERE ");
- assertTrue(iWhere > iJoin);
-
- int paintingTitle2 = s.indexOf(charStart
- + "t2"
- + charEnd
- + "."
- + charStart
- + "PAINTING_TITLE"
- + charEnd
- + " = ?");
- assertTrue(paintingTitle2 > iWhere);
- }
- };
+ String s = new SelectTranslator(q, dataNode, connection).createSqlString();
- test.test(q);
- }
- finally {
+ assertTrue(s.startsWith("SELECT DISTINCT "));
+ int iFrom = s.indexOf(" FROM ");
+ assertTrue(iFrom > 0);
+ int artistName = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_NAME" + charEnd);
+ assertTrue(artistName > 0 && artistName < iFrom);
+ int artistId = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_ID" + charEnd);
+ assertTrue(artistId > 0 && artistId < iFrom);
+ int dateOfBirth = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "DATE_OF_BIRTH" + charEnd);
+ assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
+ int estimatedPrice = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "ESTIMATED_PRICE" + charEnd);
+ assertTrue(estimatedPrice > 0 && estimatedPrice < iFrom);
+ int paintingDescription = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "PAINTING_DESCRIPTION"
+ + charEnd);
+ assertTrue(paintingDescription > 0 && paintingDescription < iFrom);
+ int paintingTitle = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "PAINTING_TITLE" + charEnd);
+ assertTrue(paintingTitle > 0 && paintingTitle < iFrom);
+ int artistIdT1 = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "ARTIST_ID" + charEnd);
+ assertTrue(artistIdT1 > 0 && artistIdT1 < iFrom);
+ int galleryId = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "GALLERY_ID" + charEnd);
+ assertTrue(galleryId > 0 && galleryId < iFrom);
+ int paintingId = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "PAINTING_ID" + charEnd);
+ assertTrue(paintingId > 0 && paintingId < iFrom);
+ int iArtist = s.indexOf(charStart + "ARTIST" + charEnd + " " + charStart + "t0" + charEnd);
+ assertTrue(iArtist > iFrom);
+ int iLeftJoin = s.indexOf("LEFT JOIN");
+ assertTrue(iLeftJoin > iFrom);
+ int iPainting = s.indexOf(charStart + "PAINTING" + charEnd + " " + charStart + "t1" + charEnd);
+ assertTrue(iPainting > iLeftJoin);
+ int iOn = s.indexOf(" ON ");
+ assertTrue(iOn > iLeftJoin);
+ int iArtistId = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iLeftJoin);
+ assertTrue(iArtistId > iOn);
+ int iArtistIdT1 = s
+ .indexOf(charStart + "t1" + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iLeftJoin);
+ assertTrue(iArtistIdT1 > iOn);
+ int i = s.indexOf("=", iLeftJoin);
+ assertTrue(iArtistIdT1 > i || iArtistId > i);
+ int iJoin = s.indexOf("JOIN");
+ assertTrue(iJoin > iLeftJoin);
+ int iPainting2 = s.indexOf(charStart + "PAINTING" + charEnd + " " + charStart + "t2" + charEnd);
+ assertTrue(iPainting2 > iJoin);
+ int iOn2 = s.indexOf(" ON ");
+ assertTrue(iOn2 > iJoin);
+ int iArtistId2 = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iJoin);
+ assertTrue(iArtistId2 > iOn2);
+ int iArtistId2T2 = s.indexOf(charStart + "t2" + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iJoin);
+ assertTrue(iArtistId2T2 > iOn2);
+ int i2 = s.indexOf("=", iJoin);
+ assertTrue(iArtistId2T2 > i2 || iArtistId2 > i2);
+ int iWhere = s.indexOf(" WHERE ");
+ assertTrue(iWhere > iJoin);
+
+ int paintingTitle2 = s.indexOf(charStart + "t2" + charEnd + "." + charStart + "PAINTING_TITLE" + charEnd
+ + " = ?");
+ assertTrue(paintingTitle2 > iWhere);
+
+ } finally {
DbEntity entity = context.getEntityResolver().getDbEntity("ARTIST");
entity.getDataMap().setQuotingSQLIdentifiers(false);
}
@@ -884,142 +662,57 @@ public class SelectTranslatorTest extend
// and with QuoteSqlIdentifiers = true
try {
SelectQuery q = new SelectQuery(Painting.class);
- q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
- PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+ q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
DbEntity entity = context.getEntityResolver().getDbEntity("PAINTING");
entity.getDataMap().setQuotingSQLIdentifiers(true);
- Template test = new Template() {
+ String charStart = unitAdapter.getIdentifiersStartQuote();
+ String charEnd = unitAdapter.getIdentifiersEndQuote();
- @Override
- void test(SelectTranslator transl) throws Exception {
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
-
- String s = transl.createSqlString();
-
- assertTrue(s.startsWith("SELECT "));
- int iFrom = s.indexOf(" FROM ");
- assertTrue(iFrom > 0);
-
- int paintingDescription = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "PAINTING_DESCRIPTION"
- + charEnd);
- assertTrue(paintingDescription > 0 && paintingDescription < iFrom);
- int paintingTitle = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "PAINTING_TITLE"
- + charEnd);
- assertTrue(paintingTitle > 0 && paintingTitle < iFrom);
- int artistIdT1 = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd);
- assertTrue(artistIdT1 > 0 && artistIdT1 < iFrom);
- int estimatedPrice = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ESTIMATED_PRICE"
- + charEnd);
- assertTrue(estimatedPrice > 0 && estimatedPrice < iFrom);
- int galleryId = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "GALLERY_ID"
- + charEnd);
- assertTrue(galleryId > 0 && galleryId < iFrom);
- int paintingId = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "PAINTING_ID"
- + charEnd);
- assertTrue(paintingId > 0 && paintingId < iFrom);
- int artistName = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "ARTIST_NAME"
- + charEnd);
- assertTrue(artistName > 0 && artistName < iFrom);
- int artistId = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd);
- assertTrue(artistId > 0 && artistId < iFrom);
- int dateOfBirth = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "DATE_OF_BIRTH"
- + charEnd);
- assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
- int iPainting = s.indexOf(charStart
- + "PAINTING"
- + charEnd
- + " "
- + charStart
- + "t0"
- + charEnd);
- assertTrue(iPainting > iFrom);
-
- int iLeftJoin = s.indexOf("LEFT JOIN");
- assertTrue(iLeftJoin > iFrom);
- int iArtist = s.indexOf(charStart
- + "ARTIST"
- + charEnd
- + " "
- + charStart
- + "t1"
- + charEnd);
- assertTrue(iArtist > iLeftJoin);
- int iOn = s.indexOf(" ON ");
- assertTrue(iOn > iLeftJoin);
- int iArtistId = s.indexOf(charStart
- + "t0"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd, iLeftJoin);
- assertTrue(iArtistId > iOn);
- int iArtistIdT1 = s.indexOf(charStart
- + "t1"
- + charEnd
- + "."
- + charStart
- + "ARTIST_ID"
- + charEnd, iLeftJoin);
- assertTrue(iArtistIdT1 > iOn);
- int i = s.indexOf("=", iLeftJoin);
- assertTrue(iArtistIdT1 > i || iArtistId > i);
- }
- };
+ String s = new SelectTranslator(q, dataNode, connection).createSqlString();
- test.test(q);
- }
- finally {
+ assertTrue(s.startsWith("SELECT "));
+ int iFrom = s.indexOf(" FROM ");
+ assertTrue(iFrom > 0);
+
+ int paintingDescription = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "PAINTING_DESCRIPTION"
+ + charEnd);
+ assertTrue(paintingDescription > 0 && paintingDescription < iFrom);
+ int paintingTitle = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "PAINTING_TITLE" + charEnd);
+ assertTrue(paintingTitle > 0 && paintingTitle < iFrom);
+ int artistIdT1 = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_ID" + charEnd);
+ assertTrue(artistIdT1 > 0 && artistIdT1 < iFrom);
+ int estimatedPrice = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ESTIMATED_PRICE" + charEnd);
+ assertTrue(estimatedPrice > 0 && estimatedPrice < iFrom);
+ int galleryId = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "GALLERY_ID" + charEnd);
+ assertTrue(galleryId > 0 && galleryId < iFrom);
+ int paintingId = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "PAINTING_ID" + charEnd);
+ assertTrue(paintingId > 0 && paintingId < iFrom);
+ int artistName = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "ARTIST_NAME" + charEnd);
+ assertTrue(artistName > 0 && artistName < iFrom);
+ int artistId = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "ARTIST_ID" + charEnd);
+ assertTrue(artistId > 0 && artistId < iFrom);
+ int dateOfBirth = s.indexOf(charStart + "t1" + charEnd + "." + charStart + "DATE_OF_BIRTH" + charEnd);
+ assertTrue(dateOfBirth > 0 && dateOfBirth < iFrom);
+ int iPainting = s.indexOf(charStart + "PAINTING" + charEnd + " " + charStart + "t0" + charEnd);
+ assertTrue(iPainting > iFrom);
+
+ int iLeftJoin = s.indexOf("LEFT JOIN");
+ assertTrue(iLeftJoin > iFrom);
+ int iArtist = s.indexOf(charStart + "ARTIST" + charEnd + " " + charStart + "t1" + charEnd);
+ assertTrue(iArtist > iLeftJoin);
+ int iOn = s.indexOf(" ON ");
+ assertTrue(iOn > iLeftJoin);
+ int iArtistId = s.indexOf(charStart + "t0" + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iLeftJoin);
+ assertTrue(iArtistId > iOn);
+ int iArtistIdT1 = s
+ .indexOf(charStart + "t1" + charEnd + "." + charStart + "ARTIST_ID" + charEnd, iLeftJoin);
+ assertTrue(iArtistIdT1 > iOn);
+ int i = s.indexOf("=", iLeftJoin);
+ assertTrue(iArtistIdT1 > i || iArtistId > i);
+
+ } finally {
DbEntity entity = context.getEntityResolver().getDbEntity("PAINTING");
entity.getDataMap().setQuotingSQLIdentifiers(false);
}
@@ -1030,7 +723,7 @@ public class SelectTranslatorTest extend
*/
public void testBuildResultColumns1() throws Exception {
SelectQuery q = new SelectQuery(Painting.class);
- SelectTranslator tr = makeTranslator(q);
+ SelectTranslator tr = new SelectTranslator(q, dataNode, connection);
List<?> columns = tr.buildResultColumns();
@@ -1038,8 +731,7 @@ public class SelectTranslatorTest extend
DbEntity entity = context.getEntityResolver().getDbEntity("PAINTING");
for (final DbAttribute a : entity.getAttributes()) {
ColumnDescriptor c = new ColumnDescriptor(a, "t0");
- assertTrue("No descriptor for " + a + ", columns: " + columns, columns
- .contains(c));
+ assertTrue("No descriptor for " + a + ", columns: " + columns, columns.contains(c));
}
}
@@ -1048,9 +740,8 @@ public class SelectTranslatorTest extend
*/
public void testBuildResultColumns2() throws Exception {
SelectQuery q = new SelectQuery(Painting.class);
- q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(
- PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
- SelectTranslator tr = makeTranslator(q);
+ q.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
+ SelectTranslator tr = new SelectTranslator(q, dataNode, connection);
List<?> columns = tr.buildResultColumns();
@@ -1058,8 +749,7 @@ public class SelectTranslatorTest extend
DbEntity entity = context.getEntityResolver().getDbEntity("PAINTING");
for (final DbAttribute a : entity.getAttributes()) {
ColumnDescriptor c = new ColumnDescriptor(a, "t0");
- assertTrue("No descriptor for " + a + ", columns: " + columns, columns
- .contains(c));
+ assertTrue("No descriptor for " + a + ", columns: " + columns, columns.contains(c));
}
// assert joined columns
@@ -1073,46 +763,8 @@ public class SelectTranslatorTest extend
ColumnDescriptor c = new ColumnDescriptor(a, "t1");
c.setDataRowKey("toArtist." + a.getName());
- assertTrue("No descriptor for " + a + ", columns: " + columns, columns
- .contains(c));
+ assertTrue("No descriptor for " + a + ", columns: " + columns, columns.contains(c));
}
}
- SelectTranslator makeTranslator(Query q) throws Exception {
-
- SelectTranslator translator = new SelectTranslator();
- translator.setQuery(q);
- translator.setAdapter(adapter);
- translator.setEntityResolver(context.getEntityResolver());
- translator.setJdbcEventLogger(logger);
- return translator;
- }
-
- /**
- * Helper class that serves as a template to streamline testing that requires an open
- * connection.
- */
- abstract class Template {
-
- void test(SelectQuery q) throws Exception {
- SelectTranslator transl = makeTranslator(q);
-
- Connection c = dataSourceFactory.getSharedDataSource().getConnection();
- try {
-
- transl.setConnection(c);
- test(transl);
- }
- finally {
- try {
- c.close();
- }
- catch (SQLException ex) {
-
- }
- }
- }
-
- abstract void test(SelectTranslator transl) throws Exception;
- }
}
Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java Thu Mar 13 11:04:36 2014
@@ -19,43 +19,28 @@
package org.apache.cayenne.access.trans;
+import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
-import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.JoinType;
import org.apache.cayenne.query.Query;
public class TstQueryAssembler extends QueryAssembler {
- protected List dbRels = new ArrayList();
+ protected List<DbRelationship> dbRels;
- public TstQueryAssembler(DataNode node, Query q) {
-
- super.setAdapter(node.getAdapter());
-
- try {
- super.setConnection(node.getDataSource().getConnection());
- }
- catch (Exception ex) {
- throw new CayenneRuntimeException("Error getting connection...", ex);
- }
- super.setEntityResolver(node.getEntityResolver());
- super.setQuery(q);
- }
-
- public void dispose() throws SQLException {
- connection.close();
+ public TstQueryAssembler(Query q, DataNode node, Connection connection) throws SQLException {
+ super(q, node, connection);
+ dbRels = new ArrayList<DbRelationship>();
}
@Override
- public void dbRelationshipAdded(
- DbRelationship relationship,
- JoinType joinType,
- String joinSplitAlias) {
+ public void dbRelationshipAdded(DbRelationship relationship, JoinType joinType, String joinSplitAlias) {
dbRels.add(relationship);
}
@@ -79,7 +64,7 @@ public class TstQueryAssembler extends Q
return "SELECT * FROM ARTIST";
}
- public List getAttributes() {
+ public List<DbAttribute> getAttributes() {
return attributes;
}