We'd accidentally conflated SQL expressions and SQL clauses into the one interface SQLExpressionsf, which would allow statements like 'FooRecord.BAR.add(FooRecord.getKey(1))' to compile erroneously. Let SQLExpressions and QueryClauses both be subclasses of a new type SQLFragment, and let our ExpressionVisitor be a FragmentVisitor.

This commit is contained in:
Par Winzell
2009-10-23 13:59:47 +00:00
parent 8f25455481
commit 4b43b7d099
40 changed files with 154 additions and 144 deletions
+3 -3
View File
@@ -35,7 +35,7 @@ import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.DepotMarshaller; import com.samskivert.depot.impl.DepotMarshaller;
import com.samskivert.depot.impl.DepotUtil; import com.samskivert.depot.impl.DepotUtil;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* A special form of {@link WhereClause} that uniquely specifies a single database row and thus * A special form of {@link WhereClause} that uniquely specifies a single database row and thus
@@ -60,7 +60,7 @@ public class Key<T extends PersistentRecord> extends WhereClause
public Comparable<?>[] getValues () { public Comparable<?>[] getValues () {
return _values; return _values;
} }
public Object accept (ExpressionVisitor<?> builder) { public Object accept (FragmentVisitor<?> builder) {
return builder.visit(this); return builder.visit(this);
} }
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) { public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) {
@@ -205,7 +205,7 @@ public class Key<T extends PersistentRecord> extends WhereClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
+2 -2
View File
@@ -37,7 +37,7 @@ import com.samskivert.depot.clause.WhereClause;
import com.samskivert.depot.expression.ColumnExp; import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.DepotUtil; import com.samskivert.depot.impl.DepotUtil;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.LiteralExp; import com.samskivert.depot.impl.expression.LiteralExp;
import com.samskivert.depot.impl.operator.In; import com.samskivert.depot.impl.operator.In;
@@ -291,7 +291,7 @@ public abstract class KeySet<T extends PersistentRecord> extends WhereClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -0,0 +1,29 @@
package com.samskivert.depot;
import java.util.Collection;
import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.SQLBuilder;
/**
* Represents a fragment of an SQL statement, generally a clause (WHERE, FROM, ...) or an
* expression (1+1, 'foo', "columnName", ...).
*/
public interface SQLFragment
{
/**
* Most uses of this class have been implemented with a visitor pattern. Create your own
* {@link FragmentVisitor} and call this method with it.
*
* @see SQLBuilder
*/
public Object accept (FragmentVisitor<?> visitor);
/**
* Adds all persistent classes that are brought into the SQL context by this clause: FROM
* clauses, JOINs, UPDATEs, anything that could create a new table abbreviation. This method
* should recurse into any subordinate state that may in turn bring in new classes so that
* sub-queries work correctly.
*/
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet);
}
@@ -25,7 +25,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.ColumnExp; import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.LiteralExp; import com.samskivert.depot.impl.expression.LiteralExp;
/** /**
@@ -81,7 +81,7 @@ public class FieldDefinition implements QueryClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> visitor) public Object accept (FragmentVisitor<?> visitor)
{ {
return visitor.visit(this); return visitor.visit(this);
} }
@@ -23,7 +23,7 @@ package com.samskivert.depot.clause;
import java.util.Collection; import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Represents a FOR UPDATE clause. * Represents a FOR UPDATE clause.
@@ -31,7 +31,7 @@ import com.samskivert.depot.impl.ExpressionVisitor;
public class ForUpdate implements QueryClause public class ForUpdate implements QueryClause
{ {
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -27,7 +27,7 @@ import com.google.common.collect.Lists;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.impl.DepotUtil; import com.samskivert.depot.impl.DepotUtil;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Completely overrides the FROM clause, if it exists. * Completely overrides the FROM clause, if it exists.
@@ -63,7 +63,7 @@ public class FromOverride implements QueryClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -24,7 +24,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Represents a GROUP BY clause. * Represents a GROUP BY clause.
@@ -42,7 +42,7 @@ public class GroupBy implements QueryClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -24,7 +24,7 @@ import java.util.Collection;
import java.util.Set; import java.util.Set;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Builds actual SQL given a main persistent type and some {@link QueryClause} objects. * Builds actual SQL given a main persistent type and some {@link QueryClause} objects.
@@ -62,7 +62,7 @@ public class InsertClause implements QueryClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -26,7 +26,7 @@ import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.ColumnExp; import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.DepotUtil; import com.samskivert.depot.impl.DepotUtil;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.operator.Equals; import com.samskivert.depot.impl.operator.Equals;
/** /**
@@ -74,7 +74,7 @@ public class Join implements QueryClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -23,7 +23,7 @@ package com.samskivert.depot.clause;
import java.util.Collection; import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Represents a LIMIT/OFFSET clause, for pagination. * Represents a LIMIT/OFFSET clause, for pagination.
@@ -47,7 +47,7 @@ public class Limit implements QueryClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -25,7 +25,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.util.ArrayUtil; import com.samskivert.util.ArrayUtil;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.LiteralExp; import com.samskivert.depot.impl.expression.LiteralExp;
/** /**
@@ -95,7 +95,7 @@ public class OrderBy implements QueryClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -20,11 +20,11 @@
package com.samskivert.depot.clause; package com.samskivert.depot.clause;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.SQLFragment;
/** /**
* Represents a piece or modifier of an SQL query. * Represents a piece or modifier of an SQL query.
*/ */
public interface QueryClause extends SQLExpression public interface QueryClause extends SQLFragment
{ {
} }
@@ -30,7 +30,7 @@ import com.google.common.collect.Maps;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.ColumnExp; import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Represents a complete select clause. * Represents a complete select clause.
@@ -193,7 +193,7 @@ public class SelectClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -26,7 +26,7 @@ import com.samskivert.depot.Ops;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.ColumnExp; import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.ValueExp; import com.samskivert.depot.impl.expression.ValueExp;
import com.samskivert.depot.impl.operator.Equals; import com.samskivert.depot.impl.operator.Equals;
import com.samskivert.depot.impl.operator.IsNull; import com.samskivert.depot.impl.operator.IsNull;
@@ -73,7 +73,7 @@ public class Where extends WhereClause
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -24,7 +24,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.clause.Join; import com.samskivert.depot.clause.Join;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.operator.In; import com.samskivert.depot.impl.operator.In;
import com.samskivert.depot.impl.operator.IsNull; import com.samskivert.depot.impl.operator.IsNull;
import com.samskivert.depot.impl.operator.Like; import com.samskivert.depot.impl.operator.Like;
@@ -92,7 +92,7 @@ public class ColumnExp extends FluentExp
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -20,16 +20,12 @@
package com.samskivert.depot.expression; package com.samskivert.depot.expression;
import java.util.Collection; import com.samskivert.depot.SQLFragment;
import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.impl.ExpressionVisitor;
import com.samskivert.depot.impl.SQLBuilder;
/** /**
* Represents an SQL expression, e.g. column name, function, or constant. * Represents an SQL expression, e.g. column name, function, or constant.
*/ */
public interface SQLExpression public interface SQLExpression extends SQLFragment
{ {
/** Used internally to represent the lack of a value. */ /** Used internally to represent the lack of a value. */
public static final class NoValue public static final class NoValue
@@ -46,19 +42,4 @@ public interface SQLExpression
protected String _reason; protected String _reason;
} }
/**
* Most uses of this class have been implemented with a visitor pattern. Create your own
* {@link ExpressionVisitor} and call this method with it.
*
* @see SQLBuilder
*/
public Object accept (ExpressionVisitor<?> visitor);
/**
* Adds all persistent classes that are brought into the SQL context by this clause: FROM
* clauses, JOINs, UPDATEs, anything that could create a new table abbreviation. This method
* should recurse into any subordinate state that may in turn bring in new classes so that
* sub-queries work correctly.
*/
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet);
} }
@@ -102,7 +102,7 @@ import com.samskivert.depot.impl.operator.Not;
* Implements the base functionality of the SQL-building pass of {@link SQLBuilder}. Dialectal * Implements the base functionality of the SQL-building pass of {@link SQLBuilder}. Dialectal
* subclasses of this should be created and returned from {@link SQLBuilder#getBuildVisitor()}. * subclasses of this should be created and returned from {@link SQLBuilder#getBuildVisitor()}.
*/ */
public abstract class BuildVisitor implements ExpressionVisitor<Void> public abstract class BuildVisitor implements FragmentVisitor<Void>
{ {
public String getQuery () public String getQuery ()
{ {
@@ -100,7 +100,7 @@ import static com.samskivert.depot.Log.log;
* TODO: that should be written. * TODO: that should be written.
*/ */
public class ExpressionEvaluator public class ExpressionEvaluator
implements ExpressionVisitor<Object> implements FragmentVisitor<Object>
{ {
public <T extends PersistentRecord> ExpressionEvaluator (Class<T> pClass, T pRec) public <T extends PersistentRecord> ExpressionEvaluator (Class<T> pClass, T pRec)
{ {
@@ -85,7 +85,7 @@ import com.samskivert.depot.impl.operator.Not;
/** /**
* Enumerates visitation methods for every possible SQL expression type. * Enumerates visitation methods for every possible SQL expression type.
*/ */
public interface ExpressionVisitor<T> public interface FragmentVisitor<T>
{ {
public T visit (FieldDefinition fieldOverride); public T visit (FieldDefinition fieldOverride);
public T visit (FromOverride fromOverride); public T visit (FromOverride fromOverride);
@@ -39,7 +39,7 @@ import com.samskivert.util.ByteEnum;
import static com.samskivert.depot.Log.log; import static com.samskivert.depot.Log.log;
/** /**
* At the heart of Depot's SQL generation, this object constructs an {@link ExpressionVisitor} * At the heart of Depot's SQL generation, this object constructs an {@link FragmentVisitor}
* object and executes it, constructing SQL and parameter bindings as it recurses. * object and executes it, constructing SQL and parameter bindings as it recurses.
*/ */
public abstract class SQLBuilder public abstract class SQLBuilder
@@ -30,7 +30,7 @@ import com.samskivert.depot.clause.OrderBy.Order;
import com.samskivert.depot.clause.QueryClause; import com.samskivert.depot.clause.QueryClause;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Represents an CREATE INDEX instruction to the database. * Represents an CREATE INDEX instruction to the database.
@@ -71,14 +71,14 @@ public class CreateIndexClause
return _fields; return _fields;
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
classSet.add(_pClass); classSet.add(_pClass);
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -26,7 +26,7 @@ import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.clause.QueryClause; import com.samskivert.depot.clause.QueryClause;
import com.samskivert.depot.clause.WhereClause; import com.samskivert.depot.clause.WhereClause;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Builds actual SQL given a main persistent type and some {@link QueryClause} objects. * Builds actual SQL given a main persistent type and some {@link QueryClause} objects.
@@ -50,14 +50,14 @@ public class DeleteClause
return _where; return _where;
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
classSet.add(_pClass); classSet.add(_pClass);
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -25,7 +25,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.clause.QueryClause; import com.samskivert.depot.clause.QueryClause;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Represents an DROP INDEX instruction to the database. * Represents an DROP INDEX instruction to the database.
@@ -49,14 +49,14 @@ public class DropIndexClause
return _name; return _name;
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
classSet.add(_pClass); classSet.add(_pClass);
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -28,7 +28,7 @@ import com.samskivert.depot.clause.WhereClause;
import com.samskivert.depot.expression.ColumnExp; import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Builds actual SQL given a main persistent type and some {@link QueryClause} objects. * Builds actual SQL given a main persistent type and some {@link QueryClause} objects.
@@ -81,7 +81,7 @@ public class UpdateClause
return _pClass; return _pClass;
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
classSet.add(_pClass); classSet.add(_pClass);
@@ -95,8 +95,8 @@ public class UpdateClause
} }
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -21,7 +21,7 @@
package com.samskivert.depot.impl.expression; package com.samskivert.depot.impl.expression;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.Function.OneArgFun; import com.samskivert.depot.impl.expression.Function.OneArgFun;
public abstract class AggregateFun extends OneArgFun public abstract class AggregateFun extends OneArgFun
@@ -33,7 +33,7 @@ public abstract class AggregateFun extends OneArgFun
public Average (SQLExpression argument, boolean distinct) { public Average (SQLExpression argument, boolean distinct) {
super(argument, distinct); super(argument, distinct);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -48,7 +48,7 @@ public abstract class AggregateFun extends OneArgFun
public Count (SQLExpression argument, boolean distinct) { public Count (SQLExpression argument, boolean distinct) {
super(argument, distinct); super(argument, distinct);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -63,7 +63,7 @@ public abstract class AggregateFun extends OneArgFun
public Every (SQLExpression argument, boolean distinct) { public Every (SQLExpression argument, boolean distinct) {
super(argument, distinct); super(argument, distinct);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -78,7 +78,7 @@ public abstract class AggregateFun extends OneArgFun
public Max (SQLExpression argument, boolean distinct) { public Max (SQLExpression argument, boolean distinct) {
super(argument, distinct); super(argument, distinct);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -93,7 +93,7 @@ public abstract class AggregateFun extends OneArgFun
public Min (SQLExpression argument, boolean distinct) { public Min (SQLExpression argument, boolean distinct) {
super(argument, distinct); super(argument, distinct);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -108,7 +108,7 @@ public abstract class AggregateFun extends OneArgFun
public Sum (SQLExpression argument, boolean distinct) { public Sum (SQLExpression argument, boolean distinct) {
super(argument, distinct); super(argument, distinct);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -21,7 +21,7 @@
package com.samskivert.depot.impl.expression; package com.samskivert.depot.impl.expression;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.Function.ManyArgFun; import com.samskivert.depot.impl.expression.Function.ManyArgFun;
public abstract class ConditionalFun public abstract class ConditionalFun
@@ -30,7 +30,7 @@ public abstract class ConditionalFun
public Coalesce (SQLExpression... args) { public Coalesce (SQLExpression... args) {
super(args); super(args);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -42,7 +42,7 @@ public abstract class ConditionalFun
public Greatest (SQLExpression... args) { public Greatest (SQLExpression... args) {
super(args); super(args);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -54,7 +54,7 @@ public abstract class ConditionalFun
public Least (SQLExpression... args) { public Least (SQLExpression... args) {
super(args); super(args);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -21,7 +21,7 @@
package com.samskivert.depot.impl.expression; package com.samskivert.depot.impl.expression;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.Function.NoArgFun; import com.samskivert.depot.impl.expression.Function.NoArgFun;
import com.samskivert.depot.impl.expression.Function.OneArgFun; import com.samskivert.depot.impl.expression.Function.OneArgFun;
@@ -36,7 +36,7 @@ public abstract class DateFun
super(date); super(date);
_part = part; _part = part;
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public Part getPart () { public Part getPart () {
@@ -64,7 +64,7 @@ public abstract class DateFun
super(date); super(date);
_truncation= truncation; _truncation= truncation;
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public Truncation getTruncation () { public Truncation getTruncation () {
@@ -77,7 +77,7 @@ public abstract class DateFun
} }
public static class Now extends NoArgFun { public static class Now extends NoArgFun {
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -24,7 +24,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* A code for representing a date interval. * A code for representing a date interval.
@@ -47,13 +47,13 @@ public class IntervalExp
this.amount = amount; this.amount = amount;
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
} }
@@ -24,7 +24,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* An expression for things we don't support natively, e.g. COUNT(*). * An expression for things we don't support natively, e.g. COUNT(*).
@@ -38,13 +38,13 @@ public class LiteralExp
_text = text; _text = text;
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
} }
@@ -21,7 +21,7 @@
package com.samskivert.depot.impl.expression; package com.samskivert.depot.impl.expression;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.Function.NoArgFun; import com.samskivert.depot.impl.expression.Function.NoArgFun;
import com.samskivert.depot.impl.expression.Function.OneArgFun; import com.samskivert.depot.impl.expression.Function.OneArgFun;
import com.samskivert.depot.impl.expression.Function.TwoArgFun; import com.samskivert.depot.impl.expression.Function.TwoArgFun;
@@ -32,7 +32,7 @@ public abstract class NumericalFun
public Abs (SQLExpression argument) { public Abs (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -44,7 +44,7 @@ public abstract class NumericalFun
public Ceil (SQLExpression argument) { public Ceil (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -56,7 +56,7 @@ public abstract class NumericalFun
public Exp (SQLExpression argument) { public Exp (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -68,7 +68,7 @@ public abstract class NumericalFun
public Floor (SQLExpression argument) { public Floor (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -80,7 +80,7 @@ public abstract class NumericalFun
public Ln (SQLExpression argument) { public Ln (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -92,7 +92,7 @@ public abstract class NumericalFun
public Log10 (SQLExpression value) { public Log10 (SQLExpression value) {
super(value); super(value);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -101,7 +101,7 @@ public abstract class NumericalFun
} }
public static class Pi extends NoArgFun { public static class Pi extends NoArgFun {
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -113,7 +113,7 @@ public abstract class NumericalFun
public Power (SQLExpression value, SQLExpression power) { public Power (SQLExpression value, SQLExpression power) {
super(value, power); super(value, power);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -128,7 +128,7 @@ public abstract class NumericalFun
} }
public static class Random extends NoArgFun { public static class Random extends NoArgFun {
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -140,7 +140,7 @@ public abstract class NumericalFun
public Round (SQLExpression argument) { public Round (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -152,7 +152,7 @@ public abstract class NumericalFun
public Sign (SQLExpression argument) { public Sign (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -164,7 +164,7 @@ public abstract class NumericalFun
public Sqrt (SQLExpression argument) { public Sqrt (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -176,7 +176,7 @@ public abstract class NumericalFun
public Trunc (SQLExpression argument) { public Trunc (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -21,7 +21,7 @@
package com.samskivert.depot.impl.expression; package com.samskivert.depot.impl.expression;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.Function.ManyArgFun; import com.samskivert.depot.impl.expression.Function.ManyArgFun;
import com.samskivert.depot.impl.expression.Function.OneArgFun; import com.samskivert.depot.impl.expression.Function.OneArgFun;
import com.samskivert.depot.impl.expression.Function.TwoArgFun; import com.samskivert.depot.impl.expression.Function.TwoArgFun;
@@ -32,7 +32,7 @@ public abstract class StringFun
public Length (SQLExpression argument) { public Length (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -44,7 +44,7 @@ public abstract class StringFun
public Lower (SQLExpression argument) { public Lower (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -56,7 +56,7 @@ public abstract class StringFun
public Position (SQLExpression substring, SQLExpression string) { public Position (SQLExpression substring, SQLExpression string) {
super(substring, string); super(substring, string);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -74,7 +74,7 @@ public abstract class StringFun
public Substring (SQLExpression string, SQLExpression from, SQLExpression count) { public Substring (SQLExpression string, SQLExpression from, SQLExpression count) {
super(string, from, count); super(string, from, count);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -86,7 +86,7 @@ public abstract class StringFun
public Trim (SQLExpression argument) { public Trim (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -98,7 +98,7 @@ public abstract class StringFun
public Upper (SQLExpression argument) { public Upper (SQLExpression argument) {
super(argument); super(argument);
} }
public Object accept (ExpressionVisitor<?> visitor) { public Object accept (FragmentVisitor<?> visitor) {
return visitor.visit(this); return visitor.visit(this);
} }
public String getCanonicalFunctionName () { public String getCanonicalFunctionName () {
@@ -24,7 +24,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.FluentExp; import com.samskivert.depot.expression.FluentExp;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* A Java value that is bound as a parameter to the query, e.g. 1 or 'abc'. * A Java value that is bound as a parameter to the query, e.g. 1 or 'abc'.
@@ -36,13 +36,13 @@ public class ValueExp extends FluentExp
_value = value; _value = value;
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
} }
@@ -4,7 +4,7 @@
package com.samskivert.depot.impl.operator; package com.samskivert.depot.impl.operator;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.ValueExp; import com.samskivert.depot.impl.expression.ValueExp;
/** /**
@@ -32,8 +32,8 @@ public abstract class BinaryOperator extends BaseOperator
*/ */
public abstract Object evaluate (Object left, Object right); public abstract Object evaluate (Object left, Object right);
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -25,7 +25,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.clause.SelectClause; import com.samskivert.depot.clause.SelectClause;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* The SQL 'exists' operator. * The SQL 'exists' operator.
@@ -38,7 +38,7 @@ public class Exists
_clause = clause; _clause = clause;
} }
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -25,7 +25,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.ColumnExp; import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* The SQL 'in (...)' operator. * The SQL 'in (...)' operator.
@@ -57,13 +57,13 @@ public class In
return _values; return _values;
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
_column.addClasses(classSet); _column.addClasses(classSet);
@@ -25,7 +25,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.ColumnExp; import com.samskivert.depot.expression.ColumnExp;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* The SQL 'is null' operator. * The SQL 'is null' operator.
@@ -43,13 +43,13 @@ public class IsNull
return _column; return _column;
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
} }
@@ -7,7 +7,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Represents an operator with any number of operands. * Represents an operator with any number of operands.
@@ -29,13 +29,13 @@ public abstract class MultiOperator extends BaseOperator
*/ */
public abstract Object evaluate (Object[] values); public abstract Object evaluate (Object[] values);
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@Override // from SQLExpression @Override // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
for (SQLExpression operand : _args) { for (SQLExpression operand : _args) {
@@ -24,7 +24,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* Represents the truth negation of another conditon. * Represents the truth negation of another conditon.
@@ -42,13 +42,13 @@ public class Not
return _condition; return _condition;
} }
// from SQLExpression // from SQLFragment
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
// from SQLExpression // from SQLFragment
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) public void addClasses (Collection<Class<? extends PersistentRecord>> classSet)
{ {
_condition.addClasses(classSet); _condition.addClasses(classSet);
@@ -27,7 +27,7 @@ import com.google.common.collect.Lists;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.SQLExpression; import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.util.Tuple; import com.samskivert.util.Tuple;
/** /**
@@ -57,7 +57,7 @@ public class Case
} }
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -24,7 +24,7 @@ import java.util.Collection;
import com.samskivert.depot.PersistentRecord; import com.samskivert.depot.PersistentRecord;
import com.samskivert.depot.expression.FluentExp; import com.samskivert.depot.expression.FluentExp;
import com.samskivert.depot.impl.ExpressionVisitor; import com.samskivert.depot.impl.FragmentVisitor;
/** /**
* An attempt at a dialect-agnostic full-text search condition, such as MySQL's MATCH() and * An attempt at a dialect-agnostic full-text search condition, such as MySQL's MATCH() and
@@ -35,7 +35,7 @@ public class FullText
public class Rank extends FluentExp public class Rank extends FluentExp
{ {
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }
@@ -60,7 +60,7 @@ public class FullText
public class Match extends FluentExp public class Match extends FluentExp
{ {
// from SQLExpression // from SQLExpression
public Object accept (ExpressionVisitor<?> builder) public Object accept (FragmentVisitor<?> builder)
{ {
return builder.visit(this); return builder.visit(this);
} }