001package gudusoft.gsqlparser.nodes;
002
003import gudusoft.gsqlparser.ESqlClause;
004import gudusoft.gsqlparser.TBaseType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.TSourceToken;
007
008/**
009 * Oracle keep dense rank clause used in analytic function.
010 */
011public class TKeepDenseRankClause extends TParseTreeNode {
012    private TOrderBy orderBy;
013    private TSourceToken firstLast;
014    private boolean isFirst  = false;
015    private boolean isLast = false;
016
017    public void setFirst(boolean isFirst) {
018        this.isFirst = isFirst;
019    }
020
021    public void setLast(boolean isLast) {
022        this.isLast = isLast;
023    }
024
025    public TSourceToken getFirstLast() {
026        return firstLast;
027    }
028
029    public void init(Object arg1,Object arg2)
030    {
031       firstLast = (TSourceToken)arg1;
032        if (firstLast.toString().equalsIgnoreCase("first")){
033            isFirst = true;
034        }else{
035            isLast = true;
036        }
037
038        orderBy = (TOrderBy)arg2;
039    }
040
041    public boolean isFirst() {
042        return isFirst;
043    }
044
045    public boolean isLast() {
046        return isLast;
047    }
048
049    public TOrderBy getOrderBy() {
050        return orderBy;
051    }
052
053    public void doParse(TCustomSqlStatement psql, ESqlClause plocation){
054        orderBy.doParse(psql,plocation);
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        orderBy.acceptChildren(v);
065        v.postVisit(this);
066    }
067
068    public void setOrderBy(TOrderBy orderBy) {
069        this.orderBy = orderBy;
070    }
071}