You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2009/11/26 02:30:36 UTC

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

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");
+        }
+    };
 }