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
008/**
009 * AST node for OceanBase {@code DROP TENANT} (Phase 4 Batch 1).
010 *
011 * <p>Supports the two trailing modifiers documented in the OceanBase 4.x
012 * admin guide: {@code FORCE} (skip the recycle bin / immediate drop) and
013 * {@code PURGE} (drop the tenant and purge associated resources).
014 *
015 * @since 4.0.1.4
016 */
017public class TOceanbaseDropTenantSqlNode extends TParseTreeNode {
018
019    private TObjectName tenantName;
020    private boolean force;
021    private boolean purge;
022
023    public TObjectName getTenantName() {
024        return tenantName;
025    }
026
027    public void setTenantName(TObjectName tenantName) {
028        this.tenantName = tenantName;
029        if (tenantName != null) {
030            tenantName.setDbObjectType(EDbObjectType.database);
031        }
032    }
033
034    public boolean isForce() {
035        return force;
036    }
037
038    public void setForce(boolean force) {
039        this.force = force;
040    }
041
042    public boolean isPurge() {
043        return purge;
044    }
045
046    public void setPurge(boolean purge) {
047        this.purge = purge;
048    }
049
050    @Override
051    public void init(Object arg1) {
052        setTenantName((TObjectName) arg1);
053    }
054
055    @Override
056    public void accept(TParseTreeVisitor v) {
057        v.preVisit(this);
058        v.postVisit(this);
059    }
060
061    @Override
062    public void acceptChildren(TParseTreeVisitor v) {
063        v.preVisit(this);
064        if (tenantName != null) {
065            tenantName.acceptChildren(v);
066        }
067        v.postVisit(this);
068    }
069}