001package gudusoft.gsqlparser.nodes;
002
003import gudusoft.gsqlparser.ESqlClause;
004import gudusoft.gsqlparser.TCustomSqlStatement;
005
006/**
007 * SAP hana case join when item.
008 */
009public class TCaseJoinItem extends TParseTreeNode{
010    private TExpression whenCondition;
011    private TObjectNameList columnList;
012    private TFromTable joinTable;
013
014    private TExpression joinCondition;
015
016    public TExpression getJoinCondition() {
017        return joinCondition;
018    }
019
020    public TObjectNameList getColumnList() {
021        return columnList;
022    }
023
024    public TExpression getWhenCondition() {
025        return whenCondition;
026    }
027
028    public void setWhenCondition(TExpression whenCondition) {
029        this.whenCondition = whenCondition;
030    }
031
032    public void init( Object arg1,Object arg2,Object arg3){
033        this.columnList = (TObjectNameList) arg1;
034        this.joinTable = (TFromTable) arg2;
035        this.joinCondition = (TExpression) arg3;
036    }
037
038    public void init(Object arg1,Object arg2,Object arg3,Object arg4){
039        this.whenCondition = (TExpression) arg1;
040        init(arg2,arg3,arg4);
041    }
042
043    public TTable getTableReference() {
044        return tableReference;
045    }
046
047    private TTable tableReference;
048
049    public void doParse(TCustomSqlStatement psql, ESqlClause plocation){
050        tableReference = psql.analyzeFromTable(joinTable,false, plocation);
051        joinCondition.doParse(psql,plocation);
052        if (whenCondition != null){
053            whenCondition.doParse(psql,plocation);
054        }
055    }
056
057    public void accept(TParseTreeVisitor v){
058        v.preVisit(this);
059        v.postVisit(this);
060    }
061
062    public void acceptChildren(TParseTreeVisitor v){
063        v.preVisit(this);
064        if (whenCondition != null)
065            whenCondition.accept(v);
066        columnList.accept(v);
067        joinCondition.accept(v);
068
069        v.postVisit(this);
070    }
071}