001package gudusoft.gsqlparser.nodes.teradata;
002
003import gudusoft.gsqlparser.ESqlClause;
004import gudusoft.gsqlparser.TCustomSqlStatement;
005import gudusoft.gsqlparser.nodes.*;
006
007/**
008 * teradata expand on clause
009 */
010public class TExpandOnClause extends TParseTreeNode {
011    private TExpression expandExpression;
012    private TAliasClause expandColumnAlias;
013    private TExpression byIntervalLiteral;
014    private TObjectName anchorName;
015    private  TConstant timeLiteral;
016    private  TExpression    periodExpression;
017
018    public void init(Object arg1, Object arg2){
019        this.expandExpression = (TExpression)arg1;
020        this.expandColumnAlias = (TAliasClause)arg2;
021    }
022
023    public TExpression getExpandExpression() {
024        return expandExpression;
025    }
026
027    public TAliasClause getExpandColumnAlias() {
028        return expandColumnAlias;
029    }
030
031    public TExpression getByIntervalLiteral() {
032        return byIntervalLiteral;
033    }
034
035    public TObjectName getAnchorName() {
036        return anchorName;
037    }
038
039    public TConstant getTimeLiteral() {
040        return timeLiteral;
041    }
042
043    public TExpression getPeriodExpression() {
044        return periodExpression;
045    }
046
047    public void setPeriodExpression(TExpression periodExpression) {
048        this.periodExpression = periodExpression;
049    }
050
051    public void setByClause(TDummy dummy){
052        if (dummy == null) return;
053        if (dummy.int1 == 1){
054            this.byIntervalLiteral = (TExpression)dummy.node1;
055        }else  if (dummy.int1 == 2){
056            this.anchorName = (TObjectName)dummy.node1;
057            if (dummy.node2 != null){
058                this.periodExpression = (TExpression)dummy.node2;
059            }
060        }
061    }
062
063    public void doParse(TCustomSqlStatement psql, ESqlClause plocation){
064        this.expandExpression.doParse(psql,plocation);
065        if (this.byIntervalLiteral != null){
066            this.byIntervalLiteral.doParse(psql, plocation);
067        }
068        if (this.periodExpression != null){
069            this.periodExpression.doParse(psql,plocation);
070        }
071    }
072
073    public void accept(TParseTreeVisitor v){
074        v.preVisit(this);
075        v.postVisit(this);
076    }
077
078    public void acceptChildren(TParseTreeVisitor v){
079        v.preVisit(this);
080        v.postVisit(this);
081    }
082
083
084    public void setExpandExpression(TExpression expandExpression) {
085        this.expandExpression = expandExpression;
086    }
087
088    public void setExpandColumnAlias(TAliasClause expandColumnAlias) {
089        this.expandColumnAlias = expandColumnAlias;
090    }
091
092    public void setByIntervalLiteral(TExpression byIntervalLiteral) {
093        this.byIntervalLiteral = byIntervalLiteral;
094    }
095
096    public void setAnchorName(TObjectName anchorName) {
097        this.anchorName = anchorName;
098    }
099
100    public void setTimeLiteral(TConstant timeLiteral) {
101        this.timeLiteral = timeLiteral;
102    }
103}