001package gudusoft.gsqlparser.stmt.mssql; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TBaseType; 006import gudusoft.gsqlparser.TCustomSqlStatement; 007import gudusoft.gsqlparser.nodes.TColumnDefinitionList; 008import gudusoft.gsqlparser.nodes.TConstant; 009import gudusoft.gsqlparser.nodes.TObjectName; 010import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 011import gudusoft.gsqlparser.nodes.mssql.TCopyIntoSqlNode; 012 013import java.util.ArrayList; 014import java.util.List; 015 016public class TMssqlCopyIntoStmt extends TCustomSqlStatement { 017 public TMssqlCopyIntoStmt (EDbVendor dbvendor){ 018 super(dbvendor); 019 sqlstatementtype = ESqlStatementType.sstCopyInto ; 020 } 021 022 private TObjectName tablename; 023 private TColumnDefinitionList columnList; 024 private ArrayList<TConstant> fromList; 025 026 private List<String> optionList = null; 027 public List<String> getOptionNames(){ 028 return TBaseType.getOptionNames(optionList); 029 } 030 public String getOption(String optionName){ 031 String str = TBaseType.getOption(optionList,optionName); 032 // in public static List<String> getArrayListBetweenTokens(TSourceToken startToken, TSourceToken endToken, boolean includeNonSolidToken){ 033 // we change , to ; and change = to ?, so here we change it back. 034 035 return str.replace(';',',').replace('?','='); 036 } 037 038 public TObjectName getTablename() { 039 return tablename; 040 } 041 042 public TColumnDefinitionList getColumnList() { 043 return columnList; 044 } 045 046 public ArrayList<TConstant> getFromList() { 047 return fromList; 048 } 049 050 public int doParseStatement(TCustomSqlStatement psql) { 051 if (rootNode == null) return -1; 052 super.doParseStatement(psql); 053 054 TCopyIntoSqlNode copyIntoSqlNode = (TCopyIntoSqlNode)rootNode; 055 this.tablename = copyIntoSqlNode.getTablename(); 056 this.columnList = copyIntoSqlNode.getColumnList(); 057 this.fromList = copyIntoSqlNode.getFromList(); 058 optionList = TBaseType.getArrayListBetweenTokens(copyIntoSqlNode.getOptionStartParenthesis(),copyIntoSqlNode.getOptionEndParenthesis(),false); 059 060 return 0; 061 } 062 063 public void accept(TParseTreeVisitor v){ 064 v.preVisit(this); 065 v.postVisit(this); 066 } 067 068 public void acceptChildren(TParseTreeVisitor v){ 069 v.preVisit(this); 070 v.postVisit(this); 071 } 072 073}