001package gudusoft.gsqlparser.dlineage.statistics;
002
003import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
004import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
005
006/**
007 * 子查询深度访问者
008 */
009public class SubqueryDepthVisitor extends TParseTreeVisitor {
010    private int maxDepth = 0;
011    private int currentDepth = 0;
012
013    @Override
014    public void preVisit(TSelectSqlStatement node) {
015        currentDepth++;
016        if (currentDepth > maxDepth) {
017            maxDepth = currentDepth;
018        }
019    }
020
021    @Override
022    public void postVisit(TSelectSqlStatement node) {
023        currentDepth--;
024    }
025
026    public int getMaxDepth() {
027        return maxDepth;
028    }
029    
030    public void reset() {
031        maxDepth = 0;
032        currentDepth = 0;
033    }
034}