/* Generated By:JJTree: Do not edit this line. From.java Version 4.3 */
/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=true,VISITOR=true,TRACK_TOKENS=false,NODE_PREFIX=,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
package org.teiid.query.sql.lang;
import java.util.ArrayList;
import java.util.List;
import org.teiid.designer.query.sql.lang.IFrom;
import org.teiid.query.parser.LanguageVisitor;
import org.teiid.query.parser.TeiidNodeFactory.ASTNodes;
import org.teiid.designer.runtime.version.spi.ITeiidServerVersion;
import org.teiid.query.sql.symbol.GroupSymbol;
/**
*
*/
public class From extends SimpleNode
implements IFrom<FromClause, GroupSymbol, LanguageVisitor> {
private List<FromClause> clauses;
/**
* @param p
* @param id
*/
public From(ITeiidServerVersion p, int id) {
super(p, id);
}
/**
* Get all the clauses in FROM
* @return List of {@link FromClause}
*/
@Override
public List<FromClause> getClauses() {
return this.clauses;
}
/**
* Set all the clauses
* @param clauses List of {@link FromClause}
*/
@Override
public void setClauses(List<? extends FromClause> clauses) {
if (clauses == null) {
this.clauses = null;
return;
}
this.clauses = new ArrayList<FromClause>( clauses );
}
/**
* Add a from clause to this {@link From}
* @param clause
*/
@Override
public void addClause(FromClause clause) {
if (this.clauses == null)
this.clauses = new ArrayList<FromClause>();
this.clauses.add(clause);
}
/**
* Adds a new group to the list (it will be wrapped in a UnaryFromClause)
* @param group Group to add
*/
@Override
public void addGroup( GroupSymbol group ) {
if( group == null )
return;
UnaryFromClause unaryFromClause = createASTNode(ASTNodes.UNARY_FROM_CLAUSE);
unaryFromClause.setGroup(group);
addClause(unaryFromClause);
}
@Override
public List<GroupSymbol> getGroups() {
List<GroupSymbol> groups = new ArrayList<GroupSymbol>();
if(clauses != null) {
for(int i=0; i<clauses.size(); i++) {
FromClause clause = clauses.get(i);
clause.collectGroups(groups);
}
}
return groups;
}
@Override
public boolean containsGroup(GroupSymbol group) {
return getGroups().contains(group);
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((this.clauses == null) ? 0 : this.clauses.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!super.equals(obj)) return false;
if (getClass() != obj.getClass()) return false;
From other = (From)obj;
if (this.clauses == null) {
if (other.clauses != null) return false;
} else if (!this.clauses.equals(other.clauses)) return false;
return true;
}
/** Accept the visitor. **/
@Override
public void acceptVisitor(LanguageVisitor visitor) {
visitor.visit(this);
}
@Override
public From clone() {
From clone = new From(getTeiidVersion(), this.id);
if(getClauses() != null)
clone.setClauses(cloneList(getClauses()));
return clone;
}
}
/* JavaCC - OriginalChecksum=ae9ea7eb99f07c1bca94932f9265c796 (do not edit this line) */