diff --git a/src/java/com/samskivert/depot/impl/expression/AggregateFun.java b/src/java/com/samskivert/depot/impl/expression/AggregateFun.java index eb55683..6e6278e 100644 --- a/src/java/com/samskivert/depot/impl/expression/AggregateFun.java +++ b/src/java/com/samskivert/depot/impl/expression/AggregateFun.java @@ -22,6 +22,7 @@ package com.samskivert.depot.impl.expression; import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.impl.ExpressionVisitor; +import com.samskivert.depot.impl.expression.Function.OneArgFun; public abstract class AggregateFun extends OneArgFun { @@ -35,6 +36,9 @@ public abstract class AggregateFun extends OneArgFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "average"; + } } public static class Count extends AggregateFun { @@ -47,6 +51,9 @@ public abstract class AggregateFun extends OneArgFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "count"; + } } public static class Every extends AggregateFun { @@ -59,6 +66,9 @@ public abstract class AggregateFun extends OneArgFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "every"; + } } public static class Max extends AggregateFun { @@ -71,6 +81,9 @@ public abstract class AggregateFun extends OneArgFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "max"; + } } public static class Min extends AggregateFun { @@ -83,6 +96,9 @@ public abstract class AggregateFun extends OneArgFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "min"; + } } public static class Sum extends AggregateFun { @@ -95,6 +111,9 @@ public abstract class AggregateFun extends OneArgFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "sum"; + } } public AggregateFun (SQLExpression argument, boolean distinct) @@ -108,6 +127,11 @@ public abstract class AggregateFun extends OneArgFun return _distinct; } + public String toString () + { + return getCanonicalFunctionName() + "(" + (_distinct ? "distinct " : "") + _arg + ")"; + } + protected boolean _distinct; } diff --git a/src/java/com/samskivert/depot/impl/expression/ConditionalFun.java b/src/java/com/samskivert/depot/impl/expression/ConditionalFun.java index 802d2cb..e278b40 100644 --- a/src/java/com/samskivert/depot/impl/expression/ConditionalFun.java +++ b/src/java/com/samskivert/depot/impl/expression/ConditionalFun.java @@ -22,33 +22,43 @@ package com.samskivert.depot.impl.expression; import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.impl.ExpressionVisitor; +import com.samskivert.depot.impl.expression.Function.ManyArgFun; public abstract class ConditionalFun { - public static class Coalesce extends ArgumentExp { + public static class Coalesce extends ManyArgFun { public Coalesce (SQLExpression... args) { super(args); } public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "coalesce"; + } } - public static class Greatest extends ArgumentExp { + public static class Greatest extends ManyArgFun { public Greatest (SQLExpression... args) { super(args); } public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "greatest"; + } } - public static class Least extends ArgumentExp { + public static class Least extends ManyArgFun { public Least (SQLExpression... args) { super(args); } public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "least"; + } } } diff --git a/src/java/com/samskivert/depot/impl/expression/DateFun.java b/src/java/com/samskivert/depot/impl/expression/DateFun.java index 84bae36..6c65283 100644 --- a/src/java/com/samskivert/depot/impl/expression/DateFun.java +++ b/src/java/com/samskivert/depot/impl/expression/DateFun.java @@ -22,6 +22,8 @@ package com.samskivert.depot.impl.expression; import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.impl.ExpressionVisitor; +import com.samskivert.depot.impl.expression.Function.NoArgFun; +import com.samskivert.depot.impl.expression.Function.OneArgFun; public abstract class DateFun { @@ -40,6 +42,9 @@ public abstract class DateFun public Part getPart () { return _part; } + public String getCanonicalFunctionName () { + return "datePart_" + _part; + } protected Part _part; } @@ -65,6 +70,9 @@ public abstract class DateFun public Truncation getTruncation () { return _truncation; } + public String getCanonicalFunctionName () { + return "dateTrunc_" + _truncation; + } protected Truncation _truncation; } @@ -72,5 +80,8 @@ public abstract class DateFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "now"; + } } } diff --git a/src/java/com/samskivert/depot/impl/expression/NoArgFun.java b/src/java/com/samskivert/depot/impl/expression/NoArgFun.java index 0f6b562..e69de29 100644 --- a/src/java/com/samskivert/depot/impl/expression/NoArgFun.java +++ b/src/java/com/samskivert/depot/impl/expression/NoArgFun.java @@ -1,34 +0,0 @@ -// -// $Id: $ -// -// Depot library - a Java relational persistence library -// Copyright (C) 2006-2009 Michael Bayne and Pär Winzell -// -// This library is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License as published -// by the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -package com.samskivert.depot.impl.expression; - -import java.util.Collection; - -import com.samskivert.depot.PersistentRecord; -import com.samskivert.depot.expression.FluentExp; - -public abstract class NoArgFun extends FluentExp -{ - public void addClasses (Collection> classSet) - { - // nothing to add - } -} diff --git a/src/java/com/samskivert/depot/impl/expression/NumericalFun.java b/src/java/com/samskivert/depot/impl/expression/NumericalFun.java index 438da97..6d7a452 100644 --- a/src/java/com/samskivert/depot/impl/expression/NumericalFun.java +++ b/src/java/com/samskivert/depot/impl/expression/NumericalFun.java @@ -22,6 +22,9 @@ package com.samskivert.depot.impl.expression; import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.impl.ExpressionVisitor; +import com.samskivert.depot.impl.expression.Function.NoArgFun; +import com.samskivert.depot.impl.expression.Function.OneArgFun; +import com.samskivert.depot.impl.expression.Function.TwoArgFun; public abstract class NumericalFun { @@ -32,6 +35,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "abs"; + } } public static class Ceil extends OneArgFun { @@ -41,6 +47,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "ceil"; + } } public static class Exp extends OneArgFun { @@ -50,6 +59,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "exp"; + } } public static class Floor extends OneArgFun { @@ -59,6 +71,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "floor"; + } } public static class Ln extends OneArgFun { @@ -68,6 +83,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "ln"; + } } public static class Log10 extends OneArgFun { @@ -77,12 +95,18 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "log10"; + } } public static class Pi extends NoArgFun { public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "pi"; + } } public static class Power extends TwoArgFun { @@ -92,6 +116,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "Power"; + } public SQLExpression getValue () { return _arg1; } @@ -104,6 +131,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "random"; + } } public static class Round extends OneArgFun { @@ -113,6 +143,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "round"; + } } public static class Sign extends OneArgFun { @@ -122,6 +155,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "sign"; + } } public static class Sqrt extends OneArgFun { @@ -131,6 +167,9 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "sqrt"; + } } public static class Trunc extends OneArgFun { @@ -140,5 +179,8 @@ public abstract class NumericalFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "trunc"; + } } } diff --git a/src/java/com/samskivert/depot/impl/expression/OneArgFun.java b/src/java/com/samskivert/depot/impl/expression/OneArgFun.java index 9a0dc7d..e69de29 100644 --- a/src/java/com/samskivert/depot/impl/expression/OneArgFun.java +++ b/src/java/com/samskivert/depot/impl/expression/OneArgFun.java @@ -1,47 +0,0 @@ -// -// $Id: $ -// -// Depot library - a Java relational persistence library -// Copyright (C) 2006-2009 Michael Bayne and Pär Winzell -// -// This library is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License as published -// by the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -package com.samskivert.depot.impl.expression; - -import java.util.Collection; - -import com.samskivert.depot.PersistentRecord; -import com.samskivert.depot.expression.FluentExp; -import com.samskivert.depot.expression.SQLExpression; - -public abstract class OneArgFun extends FluentExp -{ - protected OneArgFun (SQLExpression argument) - { - _argument = argument; - } - - public void addClasses (Collection> classSet) - { - _argument.addClasses(classSet); - } - - public SQLExpression getArg () - { - return _argument; - } - - protected SQLExpression _argument; -} diff --git a/src/java/com/samskivert/depot/impl/expression/StringFun.java b/src/java/com/samskivert/depot/impl/expression/StringFun.java index 1a06265..05c8237 100644 --- a/src/java/com/samskivert/depot/impl/expression/StringFun.java +++ b/src/java/com/samskivert/depot/impl/expression/StringFun.java @@ -22,6 +22,9 @@ package com.samskivert.depot.impl.expression; import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.impl.ExpressionVisitor; +import com.samskivert.depot.impl.expression.Function.ManyArgFun; +import com.samskivert.depot.impl.expression.Function.OneArgFun; +import com.samskivert.depot.impl.expression.Function.TwoArgFun; public abstract class StringFun { @@ -32,6 +35,9 @@ public abstract class StringFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "length"; + } } public static class Lower extends OneArgFun { @@ -41,6 +47,9 @@ public abstract class StringFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "lower"; + } } public static class Position extends TwoArgFun { @@ -50,6 +59,9 @@ public abstract class StringFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "position"; + } public SQLExpression getSubString () { return _arg1; } @@ -58,13 +70,16 @@ public abstract class StringFun } } - public static class Substring extends ArgumentExp { + public static class Substring extends ManyArgFun { public Substring (SQLExpression string, SQLExpression from, SQLExpression count) { super(string, from, count); } public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "substring"; + } } public static class Trim extends OneArgFun { @@ -74,6 +89,9 @@ public abstract class StringFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "trim"; + } } public static class Upper extends OneArgFun { @@ -83,5 +101,8 @@ public abstract class StringFun public Object accept (ExpressionVisitor visitor) { return visitor.visit(this); } + public String getCanonicalFunctionName () { + return "upper"; + } } } diff --git a/src/java/com/samskivert/depot/impl/expression/TwoArgFun.java b/src/java/com/samskivert/depot/impl/expression/TwoArgFun.java index f4a18e5..e69de29 100644 --- a/src/java/com/samskivert/depot/impl/expression/TwoArgFun.java +++ b/src/java/com/samskivert/depot/impl/expression/TwoArgFun.java @@ -1,44 +0,0 @@ -// -// $Id: $ -// -// Depot library - a Java relational persistence library -// Copyright (C) 2006-2009 Michael Bayne and Pär Winzell -// -// This library is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License as published -// by the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -package com.samskivert.depot.impl.expression; - -import java.util.Collection; - -import com.samskivert.depot.PersistentRecord; -import com.samskivert.depot.expression.FluentExp; -import com.samskivert.depot.expression.SQLExpression; - -public abstract class TwoArgFun extends FluentExp -{ - protected TwoArgFun (SQLExpression arg1, SQLExpression arg2) - { - _arg1 = arg1; - _arg2 = arg2; - } - - public void addClasses (Collection> classSet) - { - _arg1.addClasses(classSet); - _arg2.addClasses(classSet); - } - - protected SQLExpression _arg1, _arg2; -}