blob: 0a75747a9cbc20eddd0cf40a79f32d1b855b9603 [file] [log] [blame]
package edu.uci.ics.asterix.aql.expression;
import java.util.List;
import edu.uci.ics.asterix.aql.base.Clause;
import edu.uci.ics.asterix.aql.base.Expression;
import edu.uci.ics.asterix.aql.expression.visitor.IAqlExpressionVisitor;
import edu.uci.ics.asterix.aql.expression.visitor.IAqlPlusExpressionVisitor;
import edu.uci.ics.asterix.aql.expression.visitor.IAqlVisitorWithVoidReturn;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException;
public class JoinClause implements Clause {
public static enum JoinKind {
INNER,
LEFT_OUTER
}
private Expression whereExpr;
private List<Clause> leftClauses, rightClauses;
private final JoinKind kind;
public JoinClause() {
kind = JoinKind.INNER;
}
public JoinClause(JoinKind kind) {
this.kind = kind;
}
@Override
public <R, T> R accept(IAqlExpressionVisitor<R, T> visitor, T arg) throws AsterixException {
return ((IAqlPlusExpressionVisitor<R, T>) visitor).visitJoinClause(this, arg);
}
@Override
public <T> void accept(IAqlVisitorWithVoidReturn<T> visitor, T arg) throws AsterixException {
throw new NotImplementedException();
}
@Override
public ClauseType getClauseType() {
return null;
}
public List<Clause> getLeftClauses() {
return leftClauses;
}
public List<Clause> getRightClauses() {
return rightClauses;
}
public Expression getWhereExpr() {
return whereExpr;
}
public void setLeftClauses(List<Clause> leftClauses) {
this.leftClauses = leftClauses;
}
public void setRightClauses(List<Clause> righClauses) {
this.rightClauses = righClauses;
}
public void setWhereExpr(Expression whereExpr) {
this.whereExpr = whereExpr;
}
public JoinKind getKind() {
return kind;
}
}