001package gudusoft.gsqlparser.nodes.oceanbase; 002 003import gudusoft.gsqlparser.EDbObjectType; 004import gudusoft.gsqlparser.nodes.TObjectName; 005import gudusoft.gsqlparser.nodes.TParseTreeNode; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007 008import java.util.ArrayList; 009 010/** 011 * AST node for OceanBase {@code CREATE DBLINK} (US-005 Round 3). 012 * 013 * <p>Supports {@code CREATE DBLINK [IF NOT EXISTS] name TENANT = ... HOST = ... 014 * PORT = ... DATABASE = ... USER = ... PASSWORD = ...}. 015 * 016 * @since 4.0.1.4 017 */ 018public class TOceanbaseCreateDblinkSqlNode extends TParseTreeNode { 019 020 private TObjectName dblinkName; 021 private boolean ifNotExists; 022 private ArrayList<TOceanbaseDblinkOption> dblinkOptions 023 = new ArrayList<TOceanbaseDblinkOption>(); 024 025 public TObjectName getDblinkName() { 026 return dblinkName; 027 } 028 029 public void setDblinkName(TObjectName dblinkName) { 030 this.dblinkName = dblinkName; 031 if (dblinkName != null) { 032 dblinkName.setDbObjectType(EDbObjectType.database); 033 } 034 } 035 036 public boolean isIfNotExists() { 037 return ifNotExists; 038 } 039 040 public void setIfNotExists(boolean ifNotExists) { 041 this.ifNotExists = ifNotExists; 042 } 043 044 public ArrayList<TOceanbaseDblinkOption> getDblinkOptions() { 045 return dblinkOptions; 046 } 047 048 public void addDblinkOption(TOceanbaseDblinkOption option) { 049 if (option != null) { 050 this.dblinkOptions.add(option); 051 } 052 } 053 054 @Override 055 public void init(Object arg1) { 056 setDblinkName((TObjectName) arg1); 057 } 058 059 @Override 060 public void accept(TParseTreeVisitor v) { 061 v.preVisit(this); 062 v.postVisit(this); 063 } 064 065 @Override 066 public void acceptChildren(TParseTreeVisitor v) { 067 v.preVisit(this); 068 if (dblinkName != null) { 069 dblinkName.acceptChildren(v); 070 } 071 if (dblinkOptions != null) { 072 for (TOceanbaseDblinkOption opt : dblinkOptions) { 073 if (opt != null) { 074 opt.acceptChildren(v); 075 } 076 } 077 } 078 v.postVisit(this); 079 } 080}