001package gudusoft.gsqlparser.nodes.mssql;
002
003import gudusoft.gsqlparser.nodes.TDummy;
004import gudusoft.gsqlparser.nodes.TDummyList;
005import gudusoft.gsqlparser.nodes.TParseTreeNode;
006import gudusoft.gsqlparser.nodes.TObjectName;
007import gudusoft.gsqlparser.nodes.TConstant;
008
009import java.util.ArrayList;
010import java.util.List;
011
012
013public class TMssqlBulkInsertSqlNode extends TParseTreeNode {
014    private TObjectName tableName = null;
015    private TConstant datafile = null;
016    private final List<TMssqlBulkInsertOption> options = new ArrayList<TMssqlBulkInsertOption>();
017
018    public TConstant getDatafile() {
019        return datafile;
020    }
021
022    public TObjectName getTableName() {
023        return tableName;
024    }
025
026    /** The {@code WITH (...)} options in the order written; empty without a WITH clause. */
027    public List<TMssqlBulkInsertOption> getOptions() {
028        return options;
029    }
030
031    /**
032     * Called by the grammar with the parsed {@code WITH (...)} list: each item names its option token in
033     * {@code st1}, its value token (when written as {@code NAME = value}) in {@code st2}, and spans the option.
034     */
035    public void setBulkInsertOptions(TDummyList optionList) {
036        options.clear();
037        for (int i = 0; optionList != null && i < optionList.size(); i++) {
038            TDummy item = optionList.getDummyItem(i);
039            if (item == null || item.st1 == null) {
040                continue;
041            }
042            options.add(new TMssqlBulkInsertOption(item.st1, item.st2, item.getEndToken()));
043        }
044    }
045
046    public void init(Object arg1,Object arg2){
047        this.tableName = (TObjectName)arg1;
048        tableName.setObjectType(TObjectName.ttobjTable);
049        this.datafile = (TConstant)arg2;
050    }
051}