You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/11/28 14:33:53 UTC

[groovy] branch master updated: Tweak text of GINQ expressions

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new 967fbfd  Tweak text of GINQ expressions
967fbfd is described below

commit 967fbfd3cda761db0429223d56a54857d78fc103
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Nov 28 22:33:29 2020 +0800

    Tweak text of GINQ expressions
---
 .../groovy/ginq/dsl/expression/FromExpression.java | 10 +++++----
 .../groovy/ginq/dsl/expression/GinqExpression.java | 22 ++++++++++++--------
 .../ginq/dsl/expression/GroupExpression.java       | 11 ++++++----
 .../ginq/dsl/expression/HavingExpression.java      |  9 +++++---
 .../groovy/ginq/dsl/expression/JoinExpression.java | 13 ++++++------
 .../ginq/dsl/expression/LimitExpression.java       |  9 +++++---
 .../groovy/ginq/dsl/expression/OnExpression.java   |  9 +++++---
 .../ginq/dsl/expression/OrderExpression.java       |  9 +++++---
 .../ginq/dsl/expression/SelectExpression.java      |  9 +++++---
 .../ginq/dsl/expression/WhereExpression.java       |  9 +++++---
 .../test/org/apache/groovy/ginq/GinqTest.groovy    | 24 ++++++++++++++++++++--
 11 files changed, 90 insertions(+), 44 deletions(-)

diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/FromExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/FromExpression.java
index 75b976b..e425a90 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/FromExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/FromExpression.java
@@ -47,10 +47,12 @@ public class FromExpression extends DataSourceExpression {
     }
 
     @Override
+    public String getText() {
+        return "from " + aliasExpr.getText() + " in " + dataSourceExpr.getText();
+    }
+
+    @Override
     public String toString() {
-        return "FromExpression{" +
-                "aliasExpr=" + aliasExpr +
-                ", dataSourceExpr=" + dataSourceExpr +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/GinqExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/GinqExpression.java
index 869e2d8..ac9ba0d 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/GinqExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/GinqExpression.java
@@ -22,6 +22,7 @@ import org.apache.groovy.ginq.dsl.GinqAstVisitor;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Represents GINQ expression, which has the following structure:
@@ -112,15 +113,18 @@ public class GinqExpression extends AbstractGinqExpression {
     }
 
     @Override
+    public String getText() {
+        return fromExpression.getText() + "\n"
+                + joinExpressionList.stream().map(e -> e.getText()).collect(Collectors.joining("\n")) + "\n"
+                + (null == whereExpression ? "" : whereExpression.getText() + "\n")
+                + (null == groupExpression ? "" : groupExpression.getText() + "\n")
+                + (null == orderExpression ? "" : orderExpression.getText() + "\n")
+                + (null == limitExpression ? "" : limitExpression.getText() + "\n")
+                + selectExpression.getText();
+    }
+
+    @Override
     public String toString() {
-        return "GinqExpression{" +
-                "fromExpression=" + fromExpression +
-                ", joinExpressionList=" + joinExpressionList +
-                ", whereExpression=" + whereExpression +
-                ", groupExpression=" + groupExpression +
-                ", orderExpression=" + orderExpression +
-                ", limitExpression=" + limitExpression +
-                ", selectExpression=" + selectExpression +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/GroupExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/GroupExpression.java
index aaae656..9bb4765 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/GroupExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/GroupExpression.java
@@ -52,10 +52,13 @@ public class GroupExpression extends ProcessExpression {
     }
 
     @Override
+    public String getText() {
+        return "groupby " + classifierExpr.getText() +
+                (null == havingExpression ? "" : "\n" + havingExpression.getText());
+    }
+
+    @Override
     public String toString() {
-        return "GroupExpression{" +
-                "classifierExpr=" + classifierExpr +
-                ", havingExpression=" + havingExpression +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/HavingExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/HavingExpression.java
index 9e38aaa..ddbf708 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/HavingExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/HavingExpression.java
@@ -37,9 +37,12 @@ public class HavingExpression extends FilterExpression {
     }
 
     @Override
+    public String getText() {
+        return "having " + filterExpr.getText();
+    }
+
+    @Override
     public String toString() {
-        return "HavingExpression{" +
-                "filterExpr=" + filterExpr +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/JoinExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/JoinExpression.java
index 7a16d22..125558e 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/JoinExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/JoinExpression.java
@@ -77,13 +77,12 @@ public class JoinExpression extends DataSourceExpression implements DataSourceHo
     }
 
     @Override
+    public String getText() {
+        return joinName + " " + aliasExpr.getText() + " in " + dataSourceExpr.getText() + " " + onExpression.getText();
+    }
+
+    @Override
     public String toString() {
-        return "JoinExpression{" +
-                "joinName='" + joinName + '\'' +
-                ", onExpression=" + onExpression +
-                ", dataSourceExpression=" + dataSourceExpression +
-                ", aliasExpr=" + aliasExpr +
-                ", dataSourceExpr=" + dataSourceExpr +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/LimitExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/LimitExpression.java
index c4e0935..2ebc379 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/LimitExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/LimitExpression.java
@@ -43,9 +43,12 @@ public class LimitExpression extends ProcessExpression {
     }
 
     @Override
+    public String getText() {
+        return "limit " + offsetAndSizeExpr.getText();
+    }
+
+    @Override
     public String toString() {
-        return "LimitExpression{" +
-                "offsetAndSizeExpr=" + offsetAndSizeExpr +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/OnExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/OnExpression.java
index 30f4abb..04db8a5 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/OnExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/OnExpression.java
@@ -37,9 +37,12 @@ public class OnExpression extends FilterExpression {
     }
 
     @Override
+    public String getText() {
+        return "on " + filterExpr.getText();
+    }
+
+    @Override
     public String toString() {
-        return "OnExpression{" +
-                "filterExpr=" + filterExpr +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/OrderExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/OrderExpression.java
index 872de1c..ba21fbf 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/OrderExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/OrderExpression.java
@@ -43,9 +43,12 @@ public class OrderExpression extends ProcessExpression {
     }
 
     @Override
+    public String getText() {
+        return "orderby " + ordersExpr.getText();
+    }
+
+    @Override
     public String toString() {
-        return "OrderExpression{" +
-                "ordersExpr=" + ordersExpr +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/SelectExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/SelectExpression.java
index a720ff4..6c03a74 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/SelectExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/SelectExpression.java
@@ -43,9 +43,12 @@ public class SelectExpression extends ProcessExpression {
     }
 
     @Override
+    public String getText() {
+        return "select " + projectionExpr.getText();
+    }
+
+    @Override
     public String toString() {
-        return "SelectExpression{" +
-                "projectionExpr=" + projectionExpr +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/WhereExpression.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/WhereExpression.java
index ba9437a..e43ee95 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/WhereExpression.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/expression/WhereExpression.java
@@ -37,9 +37,12 @@ public class WhereExpression extends FilterExpression {
     }
 
     @Override
+    public String getText() {
+        return "where " + filterExpr.getText();
+    }
+
+    @Override
     public String toString() {
-        return "WhereExpression{" +
-                "filterExpr=" + filterExpr +
-                '}';
+        return getText();
     }
 }
diff --git a/subprojects/groovy-ginq/src/spec/test/org/apache/groovy/ginq/GinqTest.groovy b/subprojects/groovy-ginq/src/spec/test/org/apache/groovy/ginq/GinqTest.groovy
index 78938ee..e14f627 100644
--- a/subprojects/groovy-ginq/src/spec/test/org/apache/groovy/ginq/GinqTest.groovy
+++ b/subprojects/groovy-ginq/src/spec/test/org/apache/groovy/ginq/GinqTest.groovy
@@ -2770,6 +2770,26 @@ class GinqTest {
                     where m == n
                     limit 1
                     select m   
+                ), (
+                    from m in [3, 4, 5]
+                    where m == n
+                    limit 1
+                    select m   
+                )
+            }.toList()
+        '''
+    }
+
+    @Test
+    void "testGinq - subQuery - 7"() {
+        assertScript '''
+            assert [[null, null], [2, null], [3, 3]] == GQ {
+                from n in [1, 2, 3]
+                select (
+                    from m in [2, 3, 4]
+                    where m == n
+                    limit 1
+                    select m   
                 ) as sqr1, (
                     from m in [3, 4, 5]
                     where m == n
@@ -2781,7 +2801,7 @@ class GinqTest {
     }
 
     @Test
-    void "testGinq - subQuery - 7"() {
+    void "testGinq - subQuery - 8"() {
         assertScript '''
             assert [[1, null], [2, 2], [3, 3]] == GQ {
                 from v in (
@@ -2798,7 +2818,7 @@ class GinqTest {
     }
 
     @Test
-    void "testGinq - subQuery - 8"() {
+    void "testGinq - subQuery - 9"() {
         assertScript '''
             assert [9, 7, 4] == GQ {
                 from n in [1, 2, 3]