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 RESOURCE POOL} (Phase 4 Batch 2).
012 *
013 * <p>Grammar shape:
014 * {@code CREATE RESOURCE POOL name [UNIT = 'u', UNIT_NUM = N,
015 * ZONE_LIST = ('z1', 'z2', ...)]}.
016 *
017 * @since 4.0.1.4
018 */
019public class TOceanbaseCreateResourcePoolSqlNode extends TParseTreeNode {
020
021    private TObjectName poolName;
022    private ArrayList<TOceanbaseResourceOption> resourceOptions
023            = new ArrayList<TOceanbaseResourceOption>();
024
025    public TObjectName getPoolName() {
026        return poolName;
027    }
028
029    public void setPoolName(TObjectName poolName) {
030        this.poolName = poolName;
031        if (poolName != null) {
032            poolName.setDbObjectType(EDbObjectType.database);
033        }
034    }
035
036    public ArrayList<TOceanbaseResourceOption> getResourceOptions() {
037        return resourceOptions;
038    }
039
040    public void addResourceOption(TOceanbaseResourceOption option) {
041        if (option != null) {
042            this.resourceOptions.add(option);
043        }
044    }
045
046    @Override
047    public void init(Object arg1) {
048        setPoolName((TObjectName) arg1);
049    }
050
051    @Override
052    public void accept(TParseTreeVisitor v) {
053        v.preVisit(this);
054        v.postVisit(this);
055    }
056
057    @Override
058    public void acceptChildren(TParseTreeVisitor v) {
059        v.preVisit(this);
060        if (poolName != null) {
061            poolName.acceptChildren(v);
062        }
063        if (resourceOptions != null) {
064            for (TOceanbaseResourceOption opt : resourceOptions) {
065                if (opt != null) {
066                    opt.acceptChildren(v);
067                }
068            }
069        }
070        v.postVisit(this);
071    }
072}