/* Generated By:JJTree: Do not edit this line. DerivedColumn.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.symbol;
import org.teiid.designer.query.sql.symbol.IDerivedColumn;
import org.teiid.designer.runtime.version.spi.ITeiidServerVersion;
import org.teiid.query.parser.LanguageVisitor;
import org.teiid.query.sql.lang.SimpleNode;
/**
*
*/
public class DerivedColumn extends SimpleNode implements IDerivedColumn<LanguageVisitor> {
private String alias;
private Expression expression;
private boolean propagateName = true;
/**
* @param p
* @param id
*/
public DerivedColumn(ITeiidServerVersion p, int id) {
super(p, id);
}
/**
* @return propogate name flag
*/
public boolean isPropagateName() {
return propagateName;
}
/**
* @param propagateName
*/
public void setPropagateName(boolean propagateName) {
this.propagateName = propagateName;
}
/**
* @return alias
*/
public String getAlias() {
return alias;
}
/**
* @return expression
*/
public Expression getExpression() {
return expression;
}
/**
* @param name
*/
public void setAlias(String name) {
this.alias = name;
}
/**
* @param expression
*/
public void setExpression(Expression expression) {
this.expression = expression;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((this.alias == null) ? 0 : this.alias.hashCode());
result = prime * result + ((this.expression == null) ? 0 : this.expression.hashCode());
result = prime * result + (this.propagateName ? 1231 : 1237);
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;
DerivedColumn other = (DerivedColumn)obj;
if (this.alias == null) {
if (other.alias != null) return false;
} else if (!this.alias.equals(other.alias)) return false;
if (this.expression == null) {
if (other.expression != null) return false;
} else if (!this.expression.equals(other.expression)) return false;
if (this.propagateName != other.propagateName) return false;
return true;
}
/** Accept the visitor. **/
@Override
public void acceptVisitor(LanguageVisitor visitor) {
visitor.visit(this);
}
@Override
public DerivedColumn clone() {
DerivedColumn clone = new DerivedColumn(getTeiidVersion(), this.id);
if(getExpression() != null)
clone.setExpression(getExpression().clone());
clone.setPropagateName(isPropagateName());
if(getAlias() != null)
clone.setAlias(getAlias());
return clone;
}
}
/* JavaCC - OriginalChecksum=b8c0cc1023777a56f0a24e4cb9eb6b4a (do not edit this line) */