package com.chenyang.druid.sql.dialect.postgresql.ast.stmt;

import com.chenyang.druid.sql.ast.SQLExpr;
import com.chenyang.druid.sql.ast.SQLName;
import com.chenyang.druid.sql.ast.SQLStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLUpdateSetItem;
import com.chenyang.druid.sql.dialect.postgresql.visitor.PGASTVisitor;
import com.chenyang.druid.sql.visitor.SQLASTVisitor;
import java.util.ArrayList;
import java.util.List;

public class PGCreateViewStatement extends SQLCreateViewStatement {
   private boolean temp;
   private boolean temporary;
   private boolean recursiveView;
   private boolean asWithRecursive;
   private SQLName viewName;
   private List<SQLExpr> columnList = new ArrayList();
   private boolean withOption;
   private List<SQLUpdateSetItem> withList = new ArrayList();
   private SQLStatement withSubqueryClause;

   public SQLStatement getWithSubqueryClause() {
      return this.withSubqueryClause;
   }

   public void setWithSubqueryClause(SQLStatement withSubqueryClause) {
      this.withSubqueryClause = withSubqueryClause;
   }

   public boolean isTemp() {
      return this.temp;
   }

   public void setTemp(boolean temp) {
      this.temp = temp;
   }

   public boolean isTemporary() {
      return this.temporary;
   }

   public void setTemporary(boolean temporary) {
      this.temporary = temporary;
   }

   public boolean isRecursiveView() {
      return this.recursiveView;
   }

   public void setRecursiveView(boolean recursiveView) {
      this.recursiveView = recursiveView;
   }

   public boolean isAsWithRecursive() {
      return this.asWithRecursive;
   }

   public void setAsWithRecursive(boolean asWithRecursive) {
      this.asWithRecursive = asWithRecursive;
   }

   public List<SQLExpr> getColumnList() {
      return this.columnList;
   }

   public void setColumnList(List<SQLExpr> columnList) {
      this.columnList = columnList;
   }

   public boolean isWithOption() {
      return this.withOption;
   }

   public void setWithOption(boolean withOption) {
      this.withOption = withOption;
   }

   public List<SQLUpdateSetItem> getWithList() {
      return this.withList;
   }

   public void setWithList(List<SQLUpdateSetItem> withList) {
      this.withList = withList;
   }

   public SQLName getViewName() {
      return this.viewName;
   }

   public void setViewName(SQLName viewName) {
      this.viewName = viewName;
   }

   public void accept0(SQLASTVisitor visitor) {
      this.accept0((PGASTVisitor)visitor);
   }

   public void accept0(PGASTVisitor visitor) {
      visitor.visit(this);
   }
}
