diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAbs.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAbs.java index b9a8a98d1..f327a1383 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAbs.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAbs.java @@ -30,7 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null ? "abs(" + children[0] + ")" : "abs(?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=01d2266f2e2852f0cc30cb38133844d2 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAdd.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAdd.java index 0ebb049ec..a0f5eecb9 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAdd.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAdd.java @@ -30,7 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null ? "(" + children[0] + ") + (" + children[1] + ")" : "? + ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=67440c31da272c3cf98559aaecf49bc2 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAnd.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAnd.java index 76fec75b1..0cccd3a40 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAnd.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpAnd.java @@ -33,9 +33,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? Arrays.stream(children).map(String::valueOf).collect(Collectors.joining(") and (", "(", ")")) - : "? and ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=8fe8825e52daaa8c28bda97ebce7e8ec (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBetween.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBetween.java index bb4fa3b18..1d8141629 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBetween.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBetween.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? children[0] + " between " + children[1] + " and " + children[2] - : "? between ? and ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=c43b74b247f96290e1207f5b0fcef774 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseAnd.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseAnd.java index 08eaace53..5efa4e933 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseAnd.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseAnd.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") & (" + children[1] + ")" - : "? & ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=114e39f3e98a01e9d633fb36f9cdc27e (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseLeftShift.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseLeftShift.java index 501a70c31..6c73d30e0 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseLeftShift.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseLeftShift.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") << (" + children[1] + ")" - : "? << ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=a6ef6adcc35a4fc93a897a3b9a1b6dfd (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseNot.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseNot.java index 369c8d99c..727f62177 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseNot.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseNot.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "~(" + children[0] + ")" - : "~ ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=19c490da33ec6688721f4959812e3984 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseOr.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseOr.java index d097fa831..46e91b934 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseOr.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseOr.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") | (" + children[1] + ")" - : "? | ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=9e655d2e49f2f89cbfc0290e3c55eaaa (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseRightShift.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseRightShift.java index fa0491b27..5abb3af71 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseRightShift.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseRightShift.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") >> (" + children[1] + ")" - : "? >> ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=a94a42dfe873885efa22739e3c810a38 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseXor.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseXor.java index a59e5332d..1aa954bf4 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseXor.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpBitwiseXor.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") ^ (" + children[1] + ")" - : "? ^ ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=9e28b3f45bea0aa6bcbfd7fa8910fd4e (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpConcat.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpConcat.java index 1455c4b4d..52546b1bb 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpConcat.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpConcat.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "concat(" + children[0] + ", " + children[1] + ")" - : "concat(?, ?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=2de2c03e3db046b2f2cdd50df8e4a48e (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentDate.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentDate.java index 08e594216..df70513b8 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentDate.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentDate.java @@ -30,7 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return "currentDate()"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=e13391251cba769cc41551502e16e0ac (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentTime.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentTime.java index 2ccfea343..3becdd6c1 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentTime.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentTime.java @@ -30,7 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return "currentTime()"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=1f84b3754ed74e9ae5b7eca31d84f0ae (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentTimestamp.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentTimestamp.java index a7da6c55a..1661ccde8 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentTimestamp.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpCurrentTimestamp.java @@ -30,7 +30,7 @@ protected ExpCurrentTimestamp shallowCopy() { @Override public String toString() { - return "currentTimestamp()"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=c3ddadaa60478d01d051d9fd5b1f87c7 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpDivide.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpDivide.java index bbb457e2d..27e47d0b6 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpDivide.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpDivide.java @@ -30,9 +30,7 @@ protected ExpDivide shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") / (" + children[1] + ")" - : "? / ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=ff843f7912488202daf5cfaf1517956b (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpEqual.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpEqual.java index b83b881ac..9619af683 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpEqual.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpEqual.java @@ -30,9 +30,7 @@ protected ExpEqual shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") = (" + children[1] + ")" - : "? = ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=5d0a19fd37d62fae2718cc73973efde7 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpExtract.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpExtract.java index ae53d7e2c..9286a7b1b 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpExtract.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpExtract.java @@ -30,9 +30,7 @@ protected ExpExtract shallowCopy() { @Override public String toString() { - return children != null - ? value + "(" + children[0] + ")" - : value + "(?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=58cc7e1d25270e1d515170647eb54773 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpFalse.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpFalse.java index d75c52a0b..9d9e15ff5 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpFalse.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpFalse.java @@ -30,7 +30,7 @@ protected ExpFalse shallowCopy() { @Override public String toString() { - return "false"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=f5ab544d76028320b4b1dbb970751376 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpGreater.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpGreater.java index 4ea87fb92..e0b0ce5a4 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpGreater.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpGreater.java @@ -30,9 +30,7 @@ protected ExpGreater shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") > (" + children[1] + ")" - : "? > ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=ea0ce31b9d9db21857900434d14bd004 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpGreaterOrEqual.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpGreaterOrEqual.java index e641d5509..48d74361b 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpGreaterOrEqual.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpGreaterOrEqual.java @@ -30,9 +30,7 @@ protected ExpGreaterOrEqual shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") >= (" + children[1] + ")" - : "? >= ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=723bcd56cadc1762fd2460f1ab9c988f (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpIn.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpIn.java index b52f58e75..56916ab08 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpIn.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpIn.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? children[0] + " in " + (children[1] instanceof ExpNamedParameter ? children[1] : "(" + children[1] + ")") - : "? in (?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=40738702f4699c9b3a308d49a792f974 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLength.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLength.java index f969932ba..54f26e1a1 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLength.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLength.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "length(" + children[0] + ")" - : "length(?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=f19b92880659daa8634dd190871429c4 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLess.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLess.java index 7b2b6dab9..151fd6c7c 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLess.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLess.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") < (" + children[1] + ")" - : "? < ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=cd3543ed8cbdcb8d8a299d020cc92831 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLessOrEqual.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLessOrEqual.java index fcdc132e2..5a302dfcd 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLessOrEqual.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLessOrEqual.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") <= (" + children[1] + ")" - : "? <= ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=0c80f493512f3c5d984682c830f7d9f1 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLike.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLike.java index c17b9f7c8..1893c1919 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLike.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLike.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? children[0] + " like " + children[1] + (children.length > 2 ? " escape " + children[2] : "") - : "? like ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=3985611ab5ab3bf8b4211521f95869c3 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLikeIgnoreCase.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLikeIgnoreCase.java index c0000a180..fe9d37be5 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLikeIgnoreCase.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLikeIgnoreCase.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? children[0] + " likeIgnoreCase " + children[1] + (children.length > 2 ? " escape " + children[2] : "") - : "? likeIgnoreCase ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=5ac0a75518b771f310fb884e4b827b71 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLocate.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLocate.java index 3a9336c9c..36096145d 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLocate.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLocate.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "locate(" + children[0] + ", " + children[1] + (children.length > 2 ? ", (" + children[2] + ")" : "") + ")" - : "locate(?, ?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=f84e448f9a20bd2e9cfcd100ef030c8a (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLower.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLower.java index 096379a4a..e2193999c 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLower.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpLower.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "lower(" + children[0] + ")" - : "lower(?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=46a8609164b2bd56451f930c7b2db122 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpMod.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpMod.java index 882c6e825..57f7a6b62 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpMod.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpMod.java @@ -32,9 +32,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "mod(" + children[0] + ", " + children[1] + ")" - : "mod(?, ?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=6563b330904d626ec86b2bd306259dd3 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpMultiply.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpMultiply.java index 9304ad039..f80f44a4f 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpMultiply.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpMultiply.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") * (" + children[1] + ")" - : "? * ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=6ca0df20d086adb54be14cd41b93ed59 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNamedParameter.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNamedParameter.java index 615e924a1..0e36390e0 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNamedParameter.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNamedParameter.java @@ -50,10 +50,9 @@ protected SimpleNode shallowCopy() { return copy; } - @Override - public String toString() { - String name = getName(); - return name != null ? "$" + name : "null"; - } + @Override + public String toString() { + return ExpStringConverter.convert(this); + } } /* JavaCC - OriginalChecksum=7b4e7b4225063fe3b24686d5b6a2ada2 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNegate.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNegate.java index 25eb71437..decff17ec 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNegate.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNegate.java @@ -30,9 +30,7 @@ protected SimpleNode shallowCopy() { @Override public String toString() { - return children != null - ? "-(" + children[0] + ")" - : "-?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=100942f12f6576bdafd2b6051325e733 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNot.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNot.java index 2c752e839..a23f72425 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNot.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNot.java @@ -37,9 +37,7 @@ public Exp not() { @Override public String toString() { - return children != null - ? "not (" + children[0] + ")" - : "not ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=0fe2b3f475a020609f2cfa348e9fe03d (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotBetween.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotBetween.java index 3848ad66c..f4ec4f0e5 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotBetween.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotBetween.java @@ -32,9 +32,7 @@ protected ExpNotBetween shallowCopy() { @Override public String toString() { - return children != null - ? children[0] + " not between " + children[1] + " and " + children[2] - : "? not between ? and ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=1af9c63e271dbd73a0ef825dda231d68 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotEqual.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotEqual.java index c83dc3e51..b738c2cf7 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotEqual.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotEqual.java @@ -32,9 +32,7 @@ protected ExpNotEqual shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") != (" + children[1] + ")" - : "? != ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=cd31a8834ec599e6eb06535df7a2b157 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotIn.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotIn.java index 4ed0ce5d5..a7937efbc 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotIn.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotIn.java @@ -32,9 +32,7 @@ protected ExpNotIn shallowCopy() { @Override public String toString() { - return children != null - ? children[0] + " not in " + (children[1].getClass() == ExpNamedParameter.class ? children[1] : "(" + children[1] + ")") - : "? not in (?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=49ec5ffe4a961c9a3e6170dbd0f7ad1f (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotLike.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotLike.java index d851d1da3..a0dd0e0b5 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotLike.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotLike.java @@ -32,9 +32,7 @@ protected ExpNotLike shallowCopy() { @Override public String toString() { - return children != null - ? children[0] + " not like " + children[1] + (children.length > 2 ? " escape " + children[2] : "") - : "? not like ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=9551a6b7ade4165e58bcc54093cfb9dd (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotLikeIgnoreCase.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotLikeIgnoreCase.java index 1b5cef244..674fba14f 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotLikeIgnoreCase.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpNotLikeIgnoreCase.java @@ -32,9 +32,7 @@ protected ExpNotLikeIgnoreCase shallowCopy() { @Override public String toString() { - return children != null - ? children[0] + " not likeIgnoreCase " + children[1] + (children.length > 2 ? " escape " + children[2] : "") - : "? not likeIgnoreCase ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=d8fe9f940e276eee5cebf87aaffb7afb (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpOr.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpOr.java index 3cf38bfc5..da2c7360d 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpOr.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpOr.java @@ -33,9 +33,7 @@ protected ExpOr shallowCopy() { @Override public String toString() { - return children != null - ? Arrays.stream(children).map(String::valueOf).collect(Collectors.joining(") or (", "(", ")")) - : "? or ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=674a058bd6a706248aae7d6f4cb49ef6 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpPath.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpPath.java index e1185a81e..e90939e8f 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpPath.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpPath.java @@ -61,7 +61,7 @@ public int hashCode() { @Override public String toString() { - return String.valueOf(value); + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=ffcf3b869e9e5d281a4b47d7ac3ebd15 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpScalar.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpScalar.java index 2625888ba..9db0c6b35 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpScalar.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpScalar.java @@ -42,11 +42,7 @@ protected ExpScalar shallowCopy() { @Override public String toString() { - if (value instanceof CharSequence) { - return "'" + value + "'"; - } else { - return String.valueOf(value); - } + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=21004db13a44c6b16cc9797a6f36a4af (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpScalarList.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpScalarList.java index 9025df7e1..2344b43ce 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpScalarList.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpScalarList.java @@ -69,11 +69,7 @@ protected ExpScalarList shallowCopy() { @Override public String toString() { - // children can be either an internal collection, or child nodes, so must use "getValue()" - return getValue() - .stream() - .map(v -> v instanceof CharSequence ? "'" + v + "'" : String.valueOf(v)) - .collect(Collectors.joining(", ")); + return ExpStringConverter.convert(this); } private static class ListValueVisitor extends AgExpressionParserDefaultVisitor> { diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSqrt.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSqrt.java index 52b28d38f..1f2c748af 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSqrt.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSqrt.java @@ -31,7 +31,7 @@ protected ExpSqrt shallowCopy() { @Override public String toString() { - return children != null ? "sqrt(" + children[0] + ")" : "sqrt(?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=e749d50dc99d6d7acc161593f5e1b43e (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpStringConverter.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpStringConverter.java new file mode 100644 index 000000000..f637e93b8 --- /dev/null +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpStringConverter.java @@ -0,0 +1,312 @@ +package io.agrest.exp.parser; + +import io.agrest.protocol.Exp; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public final class ExpStringConverter { + + private static final Set> parenthesesUnnecessaryExps = Set.of( + ExpAbs.class, + ExpCurrentDate.class, + ExpCurrentTime.class, + ExpCurrentTimestamp.class, + ExpExtract.class, + ExpFalse.class, + ExpLength.class, + ExpLocate.class, + ExpLower.class, + ExpNamedParameter.class, + ExpPath.class, + ExpScalar.class, + ExpSqrt.class, + ExpSubstring.class, + ExpTrim.class, + ExpTrue.class, + ExpUpper.class + ); + + private ExpStringConverter() { + } + + public static String convert(ExpAbs exp) { + return exp.children != null ? "abs(" + exp.children[0] + ")" : "abs(?)"; + } + + public static String convert(ExpAdd exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " + " + tryParenthesize(exp.children[1]) + : "? + ?"; + } + + public static String convert(ExpAnd exp) { + return exp.children != null + ? Arrays.stream(exp.children) + .map(ExpStringConverter::tryParenthesize) + .collect(Collectors.joining(" and ")) + : "? and ?"; + } + + public static String convert(ExpBetween exp) { + return exp.children != null + ? exp.children[0] + " between " + exp.children[1] + " and " + exp.children[2] + : "? between ? and ?"; + } + + public static String convert(ExpBitwiseAnd exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " & " + tryParenthesize(exp.children[1]) + : "? & ?"; + } + + public static String convert(ExpBitwiseLeftShift exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " << " + tryParenthesize(exp.children[1]) + : "? << ?"; + } + + public static String convert(ExpBitwiseNot exp) { + return exp.children != null + ? "~" + tryParenthesize(exp.children[0]) + : "~ ?"; + } + + public static String convert(ExpBitwiseOr exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " | " + tryParenthesize(exp.children[1]) + : "? | ?"; + } + + public static String convert(ExpBitwiseRightShift exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " >> " + tryParenthesize(exp.children[1]) + : "? >> ?"; + } + + public static String convert(ExpBitwiseXor exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " ^ " + tryParenthesize(exp.children[1]) + : "? ^ ?"; + } + + public static String convert(ExpConcat exp) { + return "concat(" + (exp.children != null ? exp.children[0] + ", " + exp.children[1] : "?, ?") + ")"; + } + + @SuppressWarnings("unused") + public static String convert(ExpCurrentDate exp) { + return "currentDate()"; + } + + @SuppressWarnings("unused") + public static String convert(ExpCurrentTime exp) { + return "currentTime()"; + } + + @SuppressWarnings("unused") + public static String convert(ExpCurrentTimestamp exp) { + return "currentTimestamp()"; + } + + public static String convert(ExpDivide exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " / " + tryParenthesize(exp.children[1]) + : "? / ?"; + } + + public static String convert(ExpEqual exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " = " + tryParenthesize(exp.children[1]) + : "? = ?"; + } + + public static String convert(ExpExtract exp) { + return exp.children != null + ? exp.value + "(" + exp.children[0] + ")" + : exp.value + "(?)"; + } + + @SuppressWarnings("unused") + public static String convert(ExpFalse exp) { + return "false"; + } + + public static String convert(ExpGreater exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " > " + tryParenthesize(exp.children[1]) + : "? > ?"; + } + + public static String convert(ExpGreaterOrEqual exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " >= " + tryParenthesize(exp.children[1]) + : "? >= ?"; + } + + public static String convert(ExpIn exp) { + return exp.children != null + ? exp.children[0] + " in " + (exp.children[1] instanceof ExpNamedParameter ? exp.children[1] : "(" + exp.children[1] + ")") + : "? in (?)"; + } + + public static String convert(ExpLength exp) { + return "length(" + (exp.children != null ? exp.children[0] : "?") + ")"; + } + + public static String convert(ExpLess exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " < " + tryParenthesize(exp.children[1]) + : "? < ?"; + } + + public static String convert(ExpLessOrEqual exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " <= " + tryParenthesize(exp.children[1]) + : "? <= ?"; + } + + public static String convert(ExpLike exp) { + return exp.children != null + ? exp.children[0] + " like " + exp.children[1] + (exp.children.length > 2 ? " escape " + exp.children[2] : "") + : "? like ?"; + } + + public static String convert(ExpLikeIgnoreCase exp) { + return exp.children != null + ? exp.children[0] + " likeIgnoreCase " + exp.children[1] + (exp.children.length > 2 ? " escape " + exp.children[2] : "") + : "? likeIgnoreCase ?"; + } + + public static String convert(ExpLocate exp) { + return "locate(" + (exp.children != null + ? exp.children[0] + ", " + exp.children[1] + (exp.children.length > 2 ? ", (" + exp.children[2] + ")" : "") + : "?, ?" + ) + ")"; + } + + public static String convert(ExpLower exp) { + return "lower(" + (exp.children != null ? exp.children[0] : "?") + ")"; + } + + public static String convert(ExpMod exp) { + return "mod(" + (exp.children != null ? exp.children[0] + ", " + exp.children[1] : "?, ?") + ")"; + } + + public static String convert(ExpMultiply exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " * " + tryParenthesize(exp.children[1]) + : "? * ?"; + } + + public static String convert(ExpNamedParameter exp) { + String name = exp.getName(); + return name != null ? "$" + name : "?"; + } + + public static String convert(ExpNegate exp) { + return exp.children != null + ? "-" + tryParenthesize(exp.children[0]) + : "-?"; + } + + public static String convert(ExpNot exp) { + return "not " + (exp.children != null ? tryParenthesize(exp.children[0]) : "?"); + } + + public static String convert(ExpNotBetween exp) { + return exp.children != null + ? exp.children[0] + " not between " + exp.children[1] + " and " + exp.children[2] + : "? not between ? and ?"; + } + + public static String convert(ExpNotEqual exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " != " + tryParenthesize(exp.children[1]) + : "? != ?"; + } + + public static String convert(ExpNotIn exp) { + return exp.children != null + ? exp.children[0] + " not in " + (exp.children[1].getClass() == ExpNamedParameter.class ? exp.children[1] : "(" + exp.children[1] + ")") + : "? not in (?)"; + } + + public static String convert(ExpNotLike exp) { + return exp.children != null + ? exp.children[0] + " not like " + exp.children[1] + (exp.children.length > 2 ? " escape " + exp.children[2] : "") + : "? not like ?"; + } + + public static String convert(ExpNotLikeIgnoreCase exp) { + return exp.children != null + ? exp.children[0] + " not likeIgnoreCase " + exp.children[1] + (exp.children.length > 2 ? " escape " + exp.children[2] : "") + : "? not likeIgnoreCase ?"; + } + + public static String convert(ExpOr exp) { + return exp.children != null + ? Arrays.stream(exp.children) + .map(ExpStringConverter::tryParenthesize) + .collect(Collectors.joining(" or ")) + : "? or ?"; + } + + public static String convert(ExpPath exp) { + return String.valueOf(exp.value); + } + + public static String convert(ExpScalar exp) { + return exp.value instanceof CharSequence + ? "'" + exp.value + "'" + : String.valueOf(exp.value); + } + + public static String convert(ExpScalarList exp) { + // children can be either an internal collection, or child nodes, so must use "getValue()" + return exp.getValue() + .stream() + .map(v -> v instanceof CharSequence ? "'" + v + "'" : String.valueOf(v)) + .collect(Collectors.joining(", ")); + } + + public static String convert(ExpSqrt exp) { + return exp.children != null ? "sqrt(" + exp.children[0] + ")" : "sqrt(?)"; + } + + public static String convert(ExpSubstring exp) { + return "substring(" + (exp.children != null + ? exp.children[0] + ", " + exp.children[1] + (exp.children.length > 2 ? ", " + exp.children[2] : "") + : "?, ?" + ) + ")"; + } + + public static String convert(ExpSubtract exp) { + return exp.children != null + ? tryParenthesize(exp.children[0]) + " - " + tryParenthesize(exp.children[1]) + : "? - ?"; + } + + public static String convert(ExpTrim exp) { + return "trim(" + (exp.children != null ? exp.children[0] : "?") + ")"; + } + + @SuppressWarnings("unused") + public static String convert(ExpTrue exp) { + return "true"; + } + + public static String convert(ExpUpper exp) { + return "upper(" + (exp.children != null ? exp.children[0] : "?") + ")"; + } + + private static String tryParenthesize(Object object) { + if (parenthesesUnnecessaryExps.contains(object.getClass())) { + return String.valueOf(object); + } + return "(" + object + ")"; + } +} diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSubstring.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSubstring.java index ce42e2b71..5e2cd4d87 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSubstring.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSubstring.java @@ -31,9 +31,7 @@ protected ExpSubstring shallowCopy() { @Override public String toString() { - return children != null - ? "substring(" + children[0] + ", " + children[1] + (children.length > 2 ? ", " + children[2] : "") + ")" - : "substring(?, ?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=b4242b007471c91ebcaa890a9eac531d (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSubtract.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSubtract.java index c1085dd58..243638402 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSubtract.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpSubtract.java @@ -31,9 +31,7 @@ protected ExpSubtract shallowCopy() { @Override public String toString() { - return children != null - ? "(" + children[0] + ") - (" + children[1] + ")" - : "? - ?"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=9461ebb6e8a7eebd514bd15e14ac0623 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpTrim.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpTrim.java index e7611b7cf..8e8ee9862 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpTrim.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpTrim.java @@ -31,9 +31,7 @@ protected ExpTrim shallowCopy() { @Override public String toString() { - return children != null - ? "trim(" + children[0] + ")" - : "trim(?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=ccfdd54aef305779d90fa4c832c4339a (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpTrue.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpTrue.java index 0b978a4b6..624d6e300 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpTrue.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpTrue.java @@ -31,7 +31,7 @@ protected ExpTrue shallowCopy() { @Override public String toString() { - return "true"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=bffdc7c3290d2409a6389b3cea4985d3 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpUpper.java b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpUpper.java index 09a55938a..f8b92f6ba 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/ExpUpper.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/ExpUpper.java @@ -31,9 +31,7 @@ protected ExpUpper shallowCopy() { @Override public String toString() { - return children != null - ? "upper(" + children[0] + ")" - : "upper(?)"; + return ExpStringConverter.convert(this); } } /* JavaCC - OriginalChecksum=579bc67a9a18bf15184b23f2649cc451 (do not edit this line) */ diff --git a/agrest-engine/src/main/java/io/agrest/exp/parser/SimpleNode.java b/agrest-engine/src/main/java/io/agrest/exp/parser/SimpleNode.java index 60fee601e..e0b0a2af3 100644 --- a/agrest-engine/src/main/java/io/agrest/exp/parser/SimpleNode.java +++ b/agrest-engine/src/main/java/io/agrest/exp/parser/SimpleNode.java @@ -280,7 +280,6 @@ public int hashCode() { result = 31 * result + Arrays.hashCode(children); return result; } - } /* JavaCC - OriginalChecksum=5b582160ae0ddf8fccabd52a1f82953e (do not edit this line) */ diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpAddTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpAddTest.java index b25ce6a0c..6777a69f2 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpAddTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpAddTest.java @@ -27,8 +27,8 @@ public void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "1+2|(1) + (2)", - "1 + 2|(1) + (2)" + "1+2|1 + 2", + "1 + 2|1 + 2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpAndTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpAndTest.java index 5af9142e9..13c4d56e2 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpAndTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpAndTest.java @@ -29,10 +29,10 @@ public void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "a and b|(a) and (b)", - "a and b|(a) and (b)", - "a and b and c|(a) and (b) and (c)", - "(a or b) and (c or d)|((a) or (b)) and ((c) or (d))" + "a and b|a and b", + "a and b|a and b", + "a and b and c|a and b and c", + "(a or b) and (c or d)|(a or b) and (c or d)" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseAndTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseAndTest.java index d48c755a1..f01bfe079 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseAndTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseAndTest.java @@ -25,8 +25,8 @@ public void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "1&2|(1) & (2)", - "1 & 2|(1) & (2)" + "1&2|1 & 2", + "1 & 2|1 & 2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseLeftShiftTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseLeftShiftTest.java index 4754f456b..70243e237 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseLeftShiftTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseLeftShiftTest.java @@ -26,8 +26,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "1<<2|(1) << (2)", - "1 << 2|(1) << (2)" + "1<<2|1 << 2", + "1 << 2|1 << 2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseNotTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseNotTest.java index 9b7d4753f..f66f9fefe 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseNotTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseNotTest.java @@ -26,8 +26,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "~2|~(2)", - "~ 2|~(2)" + "~2|~2", + "~ 2|~2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseOrTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseOrTest.java index d3e0eda6e..98db0f82b 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseOrTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseOrTest.java @@ -26,8 +26,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = ':', value = { - "1|2:(1) | (2)", - "1 | 2:(1) | (2)" + "1|2:1 | 2", + "1 | 2:1 | 2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseRightShiftTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseRightShiftTest.java index df2c8c2d9..a6dbd9dd0 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseRightShiftTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseRightShiftTest.java @@ -26,8 +26,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "1>>2|(1) >> (2)", - "1 >> 2|(1) >> (2)" + "1>>2|1 >> 2", + "1 >> 2|1 >> 2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseXorTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseXorTest.java index de3307671..5c98b323e 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseXorTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpBitwiseXorTest.java @@ -26,8 +26,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "1^2|(1) ^ (2)", - "1 ^ 2|(1) ^ (2)" + "1^2|1 ^ 2", + "1 ^ 2|1 ^ 2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpDivideTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpDivideTest.java index 2b5719544..a706c90e8 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpDivideTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpDivideTest.java @@ -27,8 +27,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "1/2|(1) / (2)", - "1 / 2|(1) / (2)" + "1/2|1 / 2", + "1 / 2|1 / 2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpEqualTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpEqualTest.java index 9969bf0c5..50fdda066 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpEqualTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpEqualTest.java @@ -29,8 +29,8 @@ public void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "a=b|(a) = (b)", - "a = b|(a) = (b)" + "a=b|a = b", + "a = b|a = b" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpGreaterOrEqualTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpGreaterOrEqualTest.java index a2d3f6f39..3bb7a8471 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpGreaterOrEqualTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpGreaterOrEqualTest.java @@ -30,8 +30,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "a>=b|(a) >= (b)", - "a >= b|(a) >= (b)" + "a>=b|a >= b", + "a >= b|a >= b" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpGreaterTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpGreaterTest.java index 5cc48e2f4..7a2a5b760 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpGreaterTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpGreaterTest.java @@ -30,8 +30,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "a>b|(a) > (b)", - "a > b|(a) > (b)" + "a>b|a > b", + "a > b|a > b" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpLessOrEqualTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpLessOrEqualTest.java index c4d164b16..0b69d45f8 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpLessOrEqualTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpLessOrEqualTest.java @@ -29,8 +29,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "a<=b|(a) <= (b)", - "a <= b|(a) <= (b)" + "a<=b|a <= b", + "a <= b|a <= b" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpLessTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpLessTest.java index 64019c734..64c209d7b 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpLessTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpLessTest.java @@ -32,8 +32,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "a b|(a) != (b)", - "a != b|(a) != (b)" + "a!=b|a != b", + "a <> b|a != b", + "a != b|a != b" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpNotTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpNotTest.java index d156af9da..1d2ed2a60 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpNotTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpNotTest.java @@ -24,10 +24,10 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "!a|not (a)", - "! a|not (a)", - "not a|not (a)", - "not (a)|not (a)" + "!a|not a", + "! a|not a", + "not a|not a", + "not (a)|not a" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpSubtractTest.java b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpSubtractTest.java index 404049539..ca0d617da 100644 --- a/agrest-engine/src/test/java/io/agrest/exp/parser/ExpSubtractTest.java +++ b/agrest-engine/src/test/java/io/agrest/exp/parser/ExpSubtractTest.java @@ -26,8 +26,8 @@ void parse(String expString) { @ParameterizedTest @CsvSource(delimiter = '|', value = { - "1-2|(1) - (2)", - "1 - 2|(1) - (2)" + "1-2|1 - 2", + "1 - 2|1 - 2" }) public void parsedToString(String expString, String expected) { assertEquals(expected, Exp.parse(expString).toString()); diff --git a/agrest-engine/src/test/java/io/agrest/protocol/ExpTest.java b/agrest-engine/src/test/java/io/agrest/protocol/ExpTest.java index 141dd96c3..55db08c68 100644 --- a/agrest-engine/src/test/java/io/agrest/protocol/ExpTest.java +++ b/agrest-engine/src/test/java/io/agrest/protocol/ExpTest.java @@ -26,7 +26,7 @@ public void namedParams() { params.put("d", 16); assertEquals( - "(((a) = (2)) and ((b) = (4))) or (((c) = (null)) and (not ((d) = (16))))", + "((a = 2) and (b = 4)) or ((c = null) and (not (d = 16)))", exp.namedParams(params).toString()); } @@ -35,15 +35,15 @@ public void namedParams_Pruning() { Exp exp = Exp.parse("a = $a and b = $b or c = $c and not d = $d"); Map params1 = Map.of("a", 2, "b", 4, "c", 8); - assertEquals("(((a) = (2)) and ((b) = (4))) or ((c) = (8))", exp.namedParams(params1).toString()); + assertEquals("((a = 2) and (b = 4)) or (c = 8)", exp.namedParams(params1).toString()); Map params2 = Map.of("c", 8); - assertEquals("(c) = (8)", exp.namedParams(params2).toString()); + assertEquals("c = 8", exp.namedParams(params2).toString()); Map params3 = new HashMap<>(); params3.put("a", null); params3.put("c", 8); - assertEquals("((a) = (null)) or ((c) = (8))", exp.namedParams(params3).toString()); + assertEquals("(a = null) or (c = 8)", exp.namedParams(params3).toString()); } @Test @@ -51,13 +51,13 @@ public void namedParams_NoPruning() { Exp exp = Exp.parse("a = $a and b = $b or c = $c and not d = $d"); Map params1 = Map.of("a", 2, "b", 4, "c", 8); - assertEquals("(((a) = (2)) and ((b) = (4))) or (((c) = (8)) and (not ((d) = ($d))))", + assertEquals("((a = 2) and (b = 4)) or ((c = 8) and (not (d = $d)))", exp.namedParams(params1, false).toString()); Map params2 = new HashMap<>(); params2.put("a", null); params2.put("c", 8); - assertEquals("(((a) = (null)) and ((b) = ($b))) or (((c) = (8)) and (not ((d) = ($d))))", + assertEquals("((a = null) and (b = $b)) or ((c = 8) and (not (d = $d)))", exp.namedParams(params2, false).toString()); } @@ -85,9 +85,9 @@ public void paramsImmutable() { Exp e1 = raw.positionalParams("b"); Exp e2 = raw.namedParams(Map.of("1", "c")); - assertEquals("(a) = ($1)", raw.toString()); - assertEquals("(a) = ('b')", e1.toString()); - assertEquals("(a) = ('c')", e2.toString()); + assertEquals("a = $1", raw.toString()); + assertEquals("a = 'b'", e1.toString()); + assertEquals("a = 'c'", e2.toString()); } @Test @@ -102,11 +102,11 @@ public void andOrImmutable() { assertEquals(5, new ArrayList<>(new HashSet<>(all)).size(), "Some expressions were reused"); - assertEquals("(1) > (2)", e1.toString()); - assertEquals("((1) > (2)) and ((3) < (4))", e2.toString()); - assertEquals("((1) > (2)) or ((5) = (6))", e3.toString()); - assertEquals("(((1) > (2)) and ((3) < (4))) or ((7) > (8))", e4.toString()); - assertEquals("(((1) > (2)) or ((5) = (6))) and ((9) < (10))", e5.toString()); + assertEquals("1 > 2", e1.toString()); + assertEquals("(1 > 2) and (3 < 4)", e2.toString()); + assertEquals("(1 > 2) or (5 = 6)", e3.toString()); + assertEquals("((1 > 2) and (3 < 4)) or (7 > 8)", e4.toString()); + assertEquals("((1 > 2) or (5 = 6)) and (9 < 10)", e5.toString()); } @Test @@ -118,10 +118,10 @@ public void positionalParamsThrowsOnTooFewParams() { public void namedParams_PartialResolution() { Exp p1 = Exp.parse("a = $a").namedParams(Collections.emptyMap(), false); - assertEquals("(a) = ($a)", p1.toString()); + assertEquals("a = $a", p1.toString()); Exp p2 = Exp.parse("a = $a and b = $b").namedParams(Map.of("b", 1), false); - assertEquals("((a) = ($a)) and ((b) = (1))", p2.toString()); + assertEquals("(a = $a) and (b = 1)", p2.toString()); } @Test @@ -146,17 +146,17 @@ public void notBetween() { @Test public void equal() { - assertEquals("(a) = ('b')", Exp.equal("a", "b").toString()); + assertEquals("a = 'b'", Exp.equal("a", "b").toString()); } @Test public void notEqual() { - assertEquals("(a) != ('b')", Exp.notEqual("a", "b").toString()); + assertEquals("a != 'b'", Exp.notEqual("a", "b").toString()); } @Test public void lessOrEqual() { - assertEquals("(a) <= (5)", Exp.lessOrEqual("a", 5).toString()); + assertEquals("a <= 5", Exp.lessOrEqual("a", 5).toString()); } @Test @@ -201,7 +201,7 @@ public void notInCollection() { @Test public void not() { - assertEquals("not ((a) = (5))", Exp.not(Exp.equal("a", 5)).toString()); - assertEquals("(a) = (5)", Exp.not(Exp.not(Exp.equal("a", 5))).toString()); + assertEquals("not (a = 5)", Exp.not(Exp.equal("a", 5)).toString()); + assertEquals("a = 5", Exp.not(Exp.not(Exp.equal("a", 5))).toString()); } } diff --git a/agrest-engine/src/test/java/io/agrest/runtime/protocol/ExpParserTest.java b/agrest-engine/src/test/java/io/agrest/runtime/protocol/ExpParserTest.java index fd12ee2fa..14c527d7e 100644 --- a/agrest-engine/src/test/java/io/agrest/runtime/protocol/ExpParserTest.java +++ b/agrest-engine/src/test/java/io/agrest/runtime/protocol/ExpParserTest.java @@ -21,55 +21,55 @@ public static void beforeAll() { public void fromString_Bare() { Exp exp = parser.fromString("a = 12345 and b = 'John Smith' and c = true"); assertNotNull(exp); - assertEquals("((a) = (12345)) and ((b) = ('John Smith')) and ((c) = (true))", exp.toString()); + assertEquals("(a = 12345) and (b = 'John Smith') and (c = true)", exp.toString()); } @Test public void fromString_Functions_Paths() { Exp exp = parser.fromString("length(b) > 5"); assertNotNull(exp); - assertEquals("(length(b)) > (5)", exp.toString()); + assertEquals("length(b) > 5", exp.toString()); } @Test public void fromString_List() { Exp exp = parser.fromString("[\"a = 12345 and b = 'John Smith' and c = true\"]"); assertNotNull(exp); - assertEquals("((a) = (12345)) and ((b) = ('John Smith')) and ((c) = (true))", exp.toString()); + assertEquals("(a = 12345) and (b = 'John Smith') and (c = true)", exp.toString()); } @Test public void fromString_List_Params_String() { Exp exp = parser.fromString("[\"b=$s\",\"x\"]"); assertNotNull(exp); - assertEquals("(b) = ('x')", exp.toString()); + assertEquals("b = 'x'", exp.toString()); } @Test public void fromString_List_Params_Multiple() { Exp exp = parser.fromString("[\"b=$s or b =$x or b =$s\",\"x\",\"y\"]"); assertNotNull(exp); - assertEquals("((b) = ('x')) or ((b) = ('y')) or ((b) = ('x'))", exp.toString()); + assertEquals("(b = 'x') or (b = 'y') or (b = 'x')", exp.toString()); } @Test public void fromString_Map() { Exp exp = parser.fromString("{\"exp\" : \"a = 12345 and b = 'John Smith' and c = true\"}"); assertNotNull(exp); - assertEquals("((a) = (12345)) and ((b) = ('John Smith')) and ((c) = (true))", exp.toString()); + assertEquals("(a = 12345) and (b = 'John Smith') and (c = true)", exp.toString()); } @Test public void fromString_Map_Params_String() { Exp exp = parser.fromString("{\"exp\" : \"b=$s\", \"params\":{\"s\":\"x\"}}"); assertNotNull(exp); - assertEquals("(b) = ('x')", exp.toString()); + assertEquals("b = 'x'", exp.toString()); } @Test public void fromString_Map_Params_Null() { Exp exp = parser.fromString("{\"exp\" : \"c=$b\", \"params\":{\"b\": null}}"); assertNotNull(exp); - assertEquals("(c) = (null)", exp.toString()); + assertEquals("c = null", exp.toString()); } }