001package gudusoft.gsqlparser.nodes.powerquery; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.nodes.TParseTreeNode; 005import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 006 007import java.util.ArrayList; 008import java.util.List; 009 010/** 011 * A connector call that roots a Power Query source chain. 012 * 013 * <p>Examples: 014 * <pre> 015 * Snowflake.Databases("acct.snowflakecomputing.com", "WH") 016 * Sql.Database("server", "db") 017 * Oracle.Database("host:port/service") 018 * GoogleBigQuery.Database(...) 019 * </pre> 020 * 021 * <p>The connector function name is resolved through 022 * {@link gudusoft.gsqlparser.powerquery.ConnectorCatalog} to a 023 * {@link EDbVendor}, which drives downstream SQL parsing for sibling 024 * {@link TPowerQueryNativeQuery} steps. 025 */ 026public class TPowerQueryConnectorCall extends TParseTreeNode { 027 028 private String connectorFunction; 029 private EDbVendor resolvedVendor; 030 private final List<String> rawArguments = new ArrayList<>(); 031 032 public String getConnectorFunction() { 033 return connectorFunction; 034 } 035 036 public void setConnectorFunction(String connectorFunction) { 037 this.connectorFunction = connectorFunction; 038 } 039 040 public EDbVendor getResolvedVendor() { 041 return resolvedVendor; 042 } 043 044 public void setResolvedVendor(EDbVendor resolvedVendor) { 045 this.resolvedVendor = resolvedVendor; 046 } 047 048 public List<String> getRawArguments() { 049 return rawArguments; 050 } 051 052 public void addRawArgument(String arg) { 053 if (arg != null) rawArguments.add(arg); 054 } 055 056 @Override 057 public void accept(TParseTreeVisitor v) { 058 v.preVisit(this); 059 v.postVisit(this); 060 } 061 062 @Override 063 public void acceptChildren(TParseTreeVisitor v) { 064 v.preVisit(this); 065 v.postVisit(this); 066 } 067}