001package gudusoft.gsqlparser.nodes.functions; 002 003 004import gudusoft.gsqlparser.EFunctionType; 005import gudusoft.gsqlparser.ESqlClause; 006import gudusoft.gsqlparser.TCustomSqlStatement; 007import gudusoft.gsqlparser.nodes.TDummy; 008import gudusoft.gsqlparser.nodes.TExpression; 009import gudusoft.gsqlparser.nodes.TFunctionCall; 010import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 011import gudusoft.gsqlparser.nodes.teradata.TRangeNFunctionItem; 012 013import java.util.ArrayList; 014 015 016public class TRangeNFunction extends TFunctionCall { 017 018 public enum ERangeSpec {no_range, no_range_or_unknown, no_range_comma_unknown,unknown, not_specified}; 019 020 private ERangeSpec rangeSpec = ERangeSpec.not_specified; 021 022 public ERangeSpec getRangeSpec() { 023 return rangeSpec; 024 } 025 026 public void setRangeSpecByDummy(TDummy node){ 027 switch (node.int1){ 028 case 1: 029 rangeSpec = ERangeSpec.no_range; 030 break; 031 case 2: 032 rangeSpec = ERangeSpec.no_range_or_unknown; 033 break; 034 case 3: 035 rangeSpec = ERangeSpec.no_range_comma_unknown; 036 break; 037 case 4: 038 rangeSpec = ERangeSpec.unknown; 039 break; 040 } 041 } 042 043 private TExpression betweenExpr = null;//teradata range_n 044 private TExpression rangeSize = null; //teradata range_n 045 046 047 private ArrayList<TRangeNFunctionItem> rangeNFunctionItems; 048 049 public ArrayList<TRangeNFunctionItem> getRangeNFunctionItems() { 050 return rangeNFunctionItems; 051 } 052 public void doParse(TCustomSqlStatement psql, ESqlClause plocation){ 053 this.getExpr1().doParse(psql,plocation); 054 for(TRangeNFunctionItem rangeItem : rangeNFunctionItems){ 055 rangeItem.doParse(psql,plocation); 056 } 057 } 058 059 public void init(Object arg1,Object arg2){ 060 this.setFunctionType(EFunctionType.range_n_t); 061 this.setExpr1((TExpression) arg1); 062 this.rangeNFunctionItems = (ArrayList<TRangeNFunctionItem>)arg2; 063 } 064 065 public void accept(TParseTreeVisitor v){ 066 v.preVisit(this); 067 v.postVisit(this); 068 } 069 070 public void acceptChildren(TParseTreeVisitor v){ 071 v.preVisit(this); 072 this.getExpr1().acceptChildren(v); 073 for(TRangeNFunctionItem item:rangeNFunctionItems){ 074 item.acceptChildren(v); 075 } 076 v.postVisit(this); 077 } 078}