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}