content: package com.alibaba.druid.sql.dialect.hive.ast;
  
  import com.alibaba.druid.DbType;
  import com.alibaba.druid.sql.ast.SQLCommentHint;
  import com.alibaba.druid.sql.ast.SQLStatement;
  import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
  import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
  import com.alibaba.druid.sql.dialect.hive.visitor.HiveASTVisitor;
  import com.alibaba.druid.sql.dialect.odps.visitor.OdpsASTVisitor;
  import com.alibaba.druid.sql.visitor.SQLASTVisitor;
  
  import java.util.ArrayList;
  import java.util.List;
  
  public class HiveInsertStatement extends SQLInsertStatement implements SQLStatement {
      private boolean ifNotExists;
  
      public HiveInsertStatement() {
          dbType = DbType.hive;
          partitions = new ArrayList<SQLAssignItem>();
      }
  
      public HiveInsertStatement clone() {
          HiveInsertStatement x = new HiveInsertStatement();
          super.cloneTo(x);
          return x;
      }
  
      @Override
      protected void accept0(SQLASTVisitor visitor) {
          if (visitor instanceof OdpsASTVisitor) {
              accept0((OdpsASTVisitor) visitor);
          } else if (visitor instanceof HiveASTVisitor) {
              accept0((HiveASTVisitor) visitor);
          } else {
              super.accept0(visitor);
          }
      }
  
      protected void accept0(HiveASTVisitor visitor) {
          if (visitor.visit(this)) {
              acceptChild(visitor, with);
              acceptChild(visitor, tableSource);
              acceptChild(visitor, partitions);
              acceptChild(visitor, valuesList);
              acceptChild(visitor, query);
          }
          visitor.endVisit(this);
      }
  
      protected void accept0(OdpsASTVisitor visitor) {
          if (visitor.visit(this)) {
              acceptChild(visitor, with);
              acceptChild(visitor, tableSource);
              acceptChild(visitor, partitions);
              acceptChild(visitor, valuesList);
              acceptChild(visitor, query);
          }
          visitor.endVisit(this);
      }
  
      @Override
      public List<SQLCommentHint> getHeadHintsDirect() {
          return null;
      }
  
      public boolean isIfNotExists() {
          return ifNotExists;
      }
  
      public void setIfNotExists(boolean ifNotExists) {
          this.ifNotExists = ifNotExists;
      }
  }
  