svn commit: r884359 - in /ofbiz/trunk/framework/sql/src/org/ofbiz/sql: Parser.jj Value.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r884359 - in /ofbiz/trunk/framework/sql/src/org/ofbiz/sql: Parser.jj Value.java

doogie-3
Author: doogie
Date: Thu Nov 26 01:30:35 2009
New Revision: 884359

URL: http://svn.apache.org/viewvc?rev=884359&view=rev
Log:
Implements proper null support, and fix operators that have '=' in them.

Modified:
    ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj
    ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Value.java

Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj?rev=884359&r1=884358&r2=884359&view=diff
==============================================================================
--- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj (original)
+++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj Thu Nov 26 01:30:35 2009
@@ -122,6 +122,9 @@
 | <VALUES: "VALUES">
 | <CREATE: "CREATE">
 | <VIEW: "VIEW">
+| <IS: "IS">
+| <NOT: "NOT">
+| <NULL: "NULL">
 | <START_DQUOTE: "\""> { pushState(IN_DQUOTE); }
 | <START_SQUOTE: "'"> { pushState(IN_SQUOTE); }
 | <INTEGER:
@@ -745,6 +748,10 @@
  <AND>
  v=RightValue() { list.add(v); }
  { v2 = new ListValue(list); op = "between"; }
+ | <IS> (
+ <NULL> { op = "="; v2 = Value.NULL; }
+ | <NOT> <NULL> { op = "!="; v2 = Value.NULL; }
+ )
  | op=ComparisonOperator() (
  v2=RightValue()
  | <OPEN_PAREN>
@@ -759,9 +766,15 @@
 }
 
 private String ComparisonOperator():
-{}
 {
- ( <TEXT> )+ { return getToken(0).image; }
+ StringBuilder sb;
+}
+{
+ (<TEXT>)+ { sb = new StringBuilder(); sb.append(getToken(0).image); }
+ (
+ <EQUALS> { sb.append(getToken(0).image); }
+ ((<TEXT>)+ { sb.append(getToken(0).image); })?
+ )* { return sb.toString(); }
 | <NAME> { return getToken(0).image; }
 | <EQUALS> { return getToken(0).image.toLowerCase(); }
 }

Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Value.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Value.java?rev=884359&r1=884358&r2=884359&view=diff
==============================================================================
--- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Value.java (original)
+++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Value.java Thu Nov 26 01:30:35 2009
@@ -19,4 +19,9 @@
 package org.ofbiz.sql;
 
 public abstract class Value extends Atom {
+    public static final Value NULL = new Value() {
+        public StringBuilder appendTo(StringBuilder sb) {
+            return sb.append("NULL");
+        }
+    };
 }