001package gudusoft.gsqlparser.analyzer.v2.callgraph; 002 003import gudusoft.gsqlparser.ir.bound.ERoutineKind; 004import gudusoft.gsqlparser.ir.common.SourceAnchor; 005 006import java.util.ArrayList; 007import java.util.Collections; 008import java.util.List; 009 010/** 011 * A node in the call graph representing a single routine (procedure, function, trigger, etc.). 012 */ 013public class CallGraphNode { 014 015 private final String routineId; 016 private final String routineName; 017 private final String packageName; 018 private final ERoutineKind routineKind; 019 private final SourceAnchor declarationAnchor; 020 private final List<TableAccess> tableAccesses; 021 022 public CallGraphNode(String routineId, String routineName, String packageName, 023 ERoutineKind routineKind, SourceAnchor declarationAnchor) { 024 this.routineId = routineId; 025 this.routineName = routineName; 026 this.packageName = packageName; 027 this.routineKind = routineKind; 028 this.declarationAnchor = declarationAnchor; 029 this.tableAccesses = new ArrayList<TableAccess>(); 030 } 031 032 public String getRoutineId() { return routineId; } 033 public String getRoutineName() { return routineName; } 034 public String getPackageName() { return packageName; } 035 public ERoutineKind getRoutineKind() { return routineKind; } 036 public SourceAnchor getDeclarationAnchor() { return declarationAnchor; } 037 038 public List<TableAccess> getTableAccesses() { 039 return Collections.unmodifiableList(tableAccesses); 040 } 041 042 public void addTableAccess(TableAccess access) { 043 tableAccesses.add(access); 044 } 045 046 @Override 047 public String toString() { 048 return "CallGraphNode{" + routineId + ", tables=" + tableAccesses.size() + "}"; 049 } 050}