001package gudusoft.gsqlparser.nodes.oceanbase;
002
003import gudusoft.gsqlparser.nodes.TObjectName;
004import gudusoft.gsqlparser.nodes.TParseTreeNode;
005import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
006
007import java.util.ArrayList;
008
009/**
010 * A single OceanBase tablegroup option inside a {@code CREATE TABLEGROUP}
011 * or {@code ALTER TABLEGROUP SET} option list.
012 *
013 * <p>Documented option names include {@code PRIMARY_ZONE},
014 * {@code LOCALITY}, {@code BINDING}, {@code TABLEGROUP_ID}. The grammar
015 * accepts any identifier on the left so future options work without a
016 * grammar change.
017 *
018 * @since 4.0.1.4
019 */
020public class TOceanbaseTablegroupOption extends TParseTreeNode {
021
022    private String name;
023    private ArrayList<TObjectName> values = new ArrayList<TObjectName>();
024
025    public TOceanbaseTablegroupOption() {
026    }
027
028    public String getName() {
029        return name;
030    }
031
032    public void setName(String name) {
033        this.name = name;
034    }
035
036    public ArrayList<TObjectName> getValues() {
037        return values;
038    }
039
040    public void addValue(TObjectName value) {
041        if (value != null) {
042            this.values.add(value);
043        }
044    }
045
046    public TObjectName getFirstValue() {
047        return values.isEmpty() ? null : values.get(0);
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 (values != null) {
060            for (TObjectName value : values) {
061                if (value != null) {
062                    value.acceptChildren(v);
063                }
064            }
065        }
066        v.postVisit(this);
067    }
068}