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