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}