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]