/* ================================================================
* JSQLParser : java based sql parser
* ================================================================
*
* Project Info: http://jsqlparser.sourceforge.net
* Project Lead: Leonardo Francalanci (leoonardoo@yahoo.it);
*
* (C) Copyright 2004, by Leonardo Francalanci
*
* 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 net.sf.jsqlparser.statement.select;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.ExpressionVisitor;
import net.sf.jsqlparser.expression.operators.relational.ItemsList;
import net.sf.jsqlparser.expression.operators.relational.ItemsListVisitor;
/**
* A subselect followed by an optional alias.
*/
public class SubSelect implements FromItem, Expression, ItemsList {
private SelectBody selectBody;
private Alias alias;
private String commentBeginBracket;
private String commentEndBracket;
private boolean replace = false;
@Override
public void accept(FromItemVisitor fromItemVisitor) {
fromItemVisitor.visit(this);
}
public SelectBody getSelectBody() {
return selectBody;
}
public void setSelectBody(SelectBody body) {
selectBody = body;
}
@Override
public void accept(ExpressionVisitor expressionVisitor) {
expressionVisitor.visit(this);
}
@Override
public Alias getAlias() {
return alias;
}
public String getAliasName() {
return alias != null ? alias.getName() : "";
}
@Override
public void setAlias(Alias aValue) {
alias = aValue;
}
@Override
public void accept(ItemsListVisitor itemsListVisitor) {
itemsListVisitor.visit(this);
}
@Override
public String toString() {
return (getCommentBeginBracket() != null ? getCommentBeginBracket() + " " : "") + (isReplace() ? "" : "(") + selectBody + (getCommentEndBracket() != null ? " " + getCommentEndBracket() : "") + (isReplace() ? "" : ")") + (alias != null ? " " + alias : "");
}
/**
* @return the commentBeginBracket
*/
public String getCommentBeginBracket() {
return commentBeginBracket;
}
/**
* @param commentBeginBracket the commentBeginBracket to set
*/
public void setCommentBeginBracket(String commentBeginBracket) {
this.commentBeginBracket = commentBeginBracket;
}
/**
* @return the commentEndBracket
*/
public String getCommentEndBracket() {
return commentEndBracket;
}
/**
* @param commentEndBracket the commentEndBracket to set
*/
public void setCommentEndBracket(String commentEndBracket) {
this.commentEndBracket = commentEndBracket;
}
/**
* @return the replace
*/
public boolean isReplace() {
return replace;
}
/**
* @param replace the replace to set
*/
public void setReplace(boolean replace) {
this.replace = replace;
}
}