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/06/12 22:33:46 UTC

svn commit: r546625 - in /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src: main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java

Author: aadamchik
Date: Tue Jun 12 13:33:45 2007
New Revision: 546625

URL: http://svn.apache.org/viewvc?view=rev&rev=546625
Log:
CAY-803: EJBQL Parameters support
(named parameters)

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
    cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java?view=diff&rev=546625&r1=546624&r2=546625
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java Tue Jun 12 13:33:45 2007
@@ -81,6 +81,12 @@
 
         return true;
     }
+    
+    public boolean visitNamedInputParameter(EJBQLExpression expression) {
+        String parameter = context.bindNamedParameter(expression.getText());
+        context.append('$').append(parameter);
+        return true;
+    }
 
     public boolean visitNot(EJBQLExpression expression) {
         context.append(" NOT");
@@ -195,18 +201,6 @@
         }
     }
 
-    public boolean visitStringLiteral(EJBQLExpression expression) {
-        if (expression.getText() == null) {
-            context.append("null");
-        }
-        else {
-            // note that String Literal text is already wrapped in single quotes, with
-            // quotes that are part of the string escaped.
-            context.append(expression.getText()).append(" 'VARCHAR'");
-        }
-        return true;
-    }
-
     public boolean visitIntegerLiteral(EJBQLExpression expression) {
         if (expression.getText() == null) {
             context.append("null");
@@ -256,6 +250,18 @@
 
         String parameter = context.bindPositionalParameter(expression.getPosition());
         context.append('$').append(parameter);
+        return true;
+    }
+
+    public boolean visitStringLiteral(EJBQLExpression expression) {
+        if (expression.getText() == null) {
+            context.append("null");
+        }
+        else {
+            // note that String Literal text is already wrapped in single quotes, with
+            // quotes that are part of the string escaped.
+            context.append(expression.getText()).append(" 'VARCHAR'");
+        }
         return true;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java?view=diff&rev=546625&r1=546624&r2=546625
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryTest.java Tue Jun 12 13:33:45 2007
@@ -191,4 +191,15 @@
         List ps = createDataContext().performQuery(query);
         assertEquals(2, ps.size());
     }
+    
+    public void testSelectFromWhereDecimalNumberNamed() throws Exception {
+        createTestData("prepare");
+
+        String ejbql = "select P from Painting P WHERE p.estimatedPrice <= :param";
+        EJBQLQuery query = new EJBQLQuery(ejbql);
+        query.setParameter("param", new BigDecimal(5000.00));
+
+        List ps = createDataContext().performQuery(query);
+        assertEquals(2, ps.size());
+    }
 }