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}