001package gudusoft.gsqlparser.resolver; 002 003 004import gudusoft.gsqlparser.ETableSource; 005import gudusoft.gsqlparser.TBaseType; 006import gudusoft.gsqlparser.compiler.TContext; 007import gudusoft.gsqlparser.nodes.*; 008import gudusoft.gsqlparser.stmt.TSelectSqlStatement; 009 010import java.util.ArrayList; 011 012public class TRelationValidator extends TParseTreeVisitor { 013 014 int nestedQuery = 0, nestedJoin =0; 015 TContext context; 016 017 public TRelationValidator(TContext context){ 018 super(); 019 this.context = context; 020 } 021 022 public void preVisit(TSelectSqlStatement node) { 023 System.out.println("Validate select !"); 024 } 025 026 public void preVisit(TTable node) { 027 if (node.getTableType() == ETableSource.objectname){ 028 System.out.println(TBaseType.numberOfSpace(nestedJoin,'\t')+"Validate table:"+node.toString()+"<----"); 029 ArrayList<TObjectName> columns = node.getColumnsFromSQLEnv(context.getSqlEnv()); 030 if ( columns != null){ 031 System.out.println(TBaseType.numberOfSpace(nestedJoin,'\t')+"Columns in this table:"); 032 for(TObjectName column: columns){ 033 System.out.println(TBaseType.numberOfSpace(nestedJoin*2,'\t')+column.toString()); 034 } 035 } 036 037 nestedJoin++; 038 } 039 } 040 041 public void postVisit(TTable node) { 042 if (node.getTableType() == ETableSource.objectname) { 043 nestedJoin--; 044 } 045 } 046 047 public void preVisit(TFromTable node) { 048 System.out.println(TBaseType.numberOfSpace(nestedJoin,'\t')+"Validate from table:"+node.toString()); 049 } 050 051 public void preVisit(TJoinExpr node) { 052 System.out.println(TBaseType.numberOfSpace(nestedJoin,'\t')+"Validate join expr, join type is: "+node.getJointype()); 053 nestedJoin++; 054 } 055 056 public void postVisit(TJoinExpr node) { 057 nestedJoin--; 058 } 059}