001package gudusoft.gsqlparser.stmt.oceanbase;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.TObjectName;
007import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
008import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseAlterOutlineSqlNode;
009import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseAlterOutlineSqlNode.EAction;
010
011/**
012 * OceanBase {@code ALTER OUTLINE} statement (Phase 4 Batch 8).
013 *
014 * <p>Tagged {@link ESqlStatementType#sstoraclealteroutline} (reused per
015 * ADR-8).
016 *
017 * @since 4.0.1.4
018 */
019public class TAlterOutlineSqlStatement extends TCustomSqlStatement {
020
021    private TObjectName outlineName;
022    private EAction actionType;
023
024    public TAlterOutlineSqlStatement(EDbVendor dbvendor) {
025        super(dbvendor);
026        this.sqlstatementtype = ESqlStatementType.sstoraclealteroutline;
027    }
028
029    public TObjectName getOutlineName() {
030        return outlineName;
031    }
032
033    public EAction getActionType() {
034        return actionType;
035    }
036
037    public boolean isEnable() {
038        return actionType == EAction.ENABLE;
039    }
040
041    public boolean isDisable() {
042        return actionType == EAction.DISABLE;
043    }
044
045    @Override
046    public int doParseStatement(TCustomSqlStatement psql) {
047        if (rootNode == null) return -1;
048        super.doParseStatement(psql);
049        TOceanbaseAlterOutlineSqlNode node =
050                (TOceanbaseAlterOutlineSqlNode) rootNode;
051        this.outlineName = node.getOutlineName();
052        this.actionType = node.getActionType();
053        return 0;
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}