001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.TSourceToken; 004 005/* 006* 007* Date: 2010-2-5 008* Time: 14:44:57 009* 010*/ 011public class TJoinList extends TParseTreeNodeList <TJoin> { 012 013 public TJoinList() 014 { 015 } 016 017 public void addJoin(TJoin join) 018 { 019 //this.setChanged(); 020 addElement(join); 021 } 022 023 public TJoin getJoin(int position) 024 { 025 if (position < size()) 026 { 027 return (TJoin)elementAt(position); 028 }else{ 029 return null; 030 } 031 } 032 033 void addParseTreeNode(Object arg1){ 034 addJoin((TJoin)arg1); 035 } 036 037 public void accept(TParseTreeVisitor v){ 038 v.preVisit(this); 039 v.postVisit(this); 040 } 041// 042// public void acceptChildren(TParseTreeVisitor v){ 043// v.preVisit(this); 044// for(int i=0;i<this.size();i++){ 045// this.getJoin(i).acceptChildren(v); 046// } 047// v.postVisit(this); 048// } 049 050 public void removeJoin(int index){ 051 this.removeItem(index); 052 } 053 054 public TParseTreeNode removeItem(int index){ 055 if (TParseTreeNode.doubleLinkedTokenListToString){ 056 057 }else{ 058 TSourceToken st = null ; 059 if (size() > 1){ 060 if (index != size() - 1){ 061 st = getJoin(index).getEndToken().searchToken(",",1); 062 }else{ 063 st = getJoin(index).getStartToken().searchToken(",",-1); 064 } 065 066 } 067 getJoin(index).removeAllMyTokensFromTokenList(st); 068 069 } 070 071 return super.removeItem(index); 072 } 073 074 public TSourceToken getEndToken(){ 075 if (size() == 0) return null; 076 TJoin lastJoin = getJoin(size()-1); 077 if (lastJoin.getJoinItems().size() > 0){ 078 TJoinItem lastJoinItem = lastJoin.getJoinItems().getJoinItem(lastJoin.getJoinItems().size() -1); 079 return lastJoinItem.getEndToken(); 080 }else 081 return lastJoin.getEndToken(); 082 } 083 084}