svn commit: r981624 - in /ofbiz/trunk/framework/sql/src/org/ofbiz/sql: Parser.jj Relation.java test/GoodParseAll.sql

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

svn commit: r981624 - in /ofbiz/trunk/framework/sql/src/org/ofbiz/sql: Parser.jj Relation.java test/GoodParseAll.sql

doogie-3
Author: doogie
Date: Mon Aug  2 17:42:39 2010
New Revision: 981624

URL: http://svn.apache.org/viewvc?rev=981624&view=rev
Log:
No longer use ON in relation settings; instead, use MAP, which makes the
sql a little bit simpler.

Modified:
    ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj
    ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Relation.java
    ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql

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=981624&r1=981623&r2=981624&view=diff
==============================================================================
--- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj (original)
+++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj Mon Aug  2 17:42:39 2010
@@ -133,6 +133,7 @@ TOKEN: {
     | <IS: "IS">
     | <NOT: "NOT">
     | <NULL: "NULL">
+    | <MAP: "MAP">
     | <START_DQUOTE: "\""> { pushState(IN_DQUOTE); }
     | <START_SQUOTE: "'"> { pushState(IN_SQUOTE); }
     | <INTEGER:
@@ -309,12 +310,16 @@ private SQLSelect Select(): {
 
 private void Relation(Map<String, Relation> relations): {
     String type = null, title = null, entityName;
-    List<KeyMap> keyMaps;
+    KeyMap keyMap;
+    List<KeyMap> keyMaps = FastList.newInstance();
 } {
     ( <TYPE> type=NamePart() )?
     ( <TITLE> title=NamePart() )?
     <NAME> { entityName = getToken(0).image; }
-    keyMaps=KeyMaps("cur", "other")
+    <MAP> keyMap=PlainKeyMap() { keyMaps.add(keyMap); } (
+        <COMMA>
+        keyMap=PlainKeyMap() { keyMaps.add(keyMap); }
+    )*
     {
         Relation relation = new Relation(type, title, entityName, keyMaps);
         if (relations.containsKey(relation.getName())) throw new ParseException("Duplicate relation: " + relation);
@@ -322,6 +327,15 @@ private void Relation(Map<String, Relati
     }
 }
 
+private KeyMap PlainKeyMap(): {
+    String left, right;
+} {
+    left=NamePart() (
+          <EQUALS> right=NamePart() { return new KeyMap(left, right); }
+        | { return new KeyMap(left, left); }
+    )
+}
+
 private SQLUpdate Update(): {
     TableName tableName;
     List<Table> tableList = null;

Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Relation.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Relation.java?rev=981624&r1=981623&r2=981624&view=diff
==============================================================================
--- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Relation.java (original)
+++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Relation.java Mon Aug  2 17:42:39 2010
@@ -74,12 +74,12 @@ public final class Relation extends Atom
             sb.append(" TITLE ").append(title);
         }
         sb.append(' ').append(entityName);
-        sb.append(" ON");
+        sb.append(" MAP");
         for (int i = 0; i < keyMaps.size(); i++) {
             KeyMap keyMap = keyMaps.get(i);
             if (i != 0) sb.append(" AND ");
-            sb.append(" cur.").append(keyMap.getLeftFieldName());
-            sb.append(" = other.").append(keyMap.getRightFieldName());
+            sb.append(' ').append(keyMap.getLeftFieldName());
+            sb.append(" = ").append(keyMap.getRightFieldName());
         }
         return sb;
     }

Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql?rev=981624&r1=981623&r2=981624&view=diff
==============================================================================
--- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql (original)
+++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql Mon Aug  2 17:42:39 2010
@@ -33,10 +33,10 @@ FROM
     Party a LEFT JOIN Person b USING partyId
     LEFT JOIN PartyGroup c ON b.partyId = c.partyId
     JOIN PartyRole d ON c.partyId = d.partyId AND c.partyId = d.partyId
-RELATION TYPE one TITLE MainA Person USING partyId
-RELATION TITLE MainB Person USING partyId
-RELATION TYPE one Person USING partyId
-RELATION PartyGroup USING partyId
+RELATION TYPE one TITLE MainA Person MAP partyId
+RELATION TITLE MainB Person MAP partyId
+RELATION TYPE one Person MAP partyId
+RELATION PartyGroup MAP partyId
 WHERE
     a.partyTypeId = 'PERSON'
     AND