001package gudusoft.gsqlparser.stmt.snowflake;
002
003
004import gudusoft.gsqlparser.*;
005import gudusoft.gsqlparser.nodes.TDummy;
006import gudusoft.gsqlparser.nodes.TFileFormatSqlNode;
007import gudusoft.gsqlparser.nodes.TObjectName;
008import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
009
010public class TCreateFileFormatStmt extends TCustomSqlStatement {
011
012    public String getTypeName(){
013        String ret = "";
014        if (formatOptions == null){
015            ret =  "";
016        }else{
017            if (formatOptions.getStartToken() == null){
018                ret = "";
019            }else{
020                TSourceToken st = formatOptions.getStartToken();
021                TSourceToken typenameToken =  st.nextSolidToken();// st.searchToken(TBaseType.ident,2);
022                if (typenameToken != null){
023                    typenameToken = typenameToken.nextSolidToken();
024                }
025                if (typenameToken != null){
026                    ret =  typenameToken.toString();
027                }
028            }
029        }
030        return ret;
031    }
032    private String dataCompression;
033
034    public String getDataCompression() {
035        return dataCompression;
036    }
037
038    private TDummy formatOptions;
039
040    public TDummy getFormatOptions() {
041        return formatOptions;
042    }
043
044    private TObjectName fileFormatName;
045
046    public void setFileFormatName(TObjectName fileFormatName) {
047        this.fileFormatName = fileFormatName;
048    }
049
050    public TObjectName getFileFormatName() {
051
052        return fileFormatName;
053    }
054
055    public TCreateFileFormatStmt(EDbVendor dbvendor) {
056        super(dbvendor);
057        sqlstatementtype = ESqlStatementType.sstCreateFileFormat;
058    }
059
060    private EFileFormat fileFormat = EFileFormat.unknown;
061
062    public EFileFormat getFileFormat() {
063        return fileFormat;
064    }
065
066    public int doParseStatement(TCustomSqlStatement psql) {
067        if (rootNode == null) return -1;
068        super.doParseStatement(psql);
069        switch (dbvendor){
070            case dbvmssql:
071            case dbvazuresql:
072                TFileFormatSqlNode formatSqlNode = (TFileFormatSqlNode)rootNode;
073                fileFormatName  = formatSqlNode.getFileFormatName();
074                fileFormat = formatSqlNode.getFileFormat();
075                dataCompression = formatSqlNode.getDataCompression();
076                break;
077            default:
078                TDummy node = (TDummy)rootNode;
079                fileFormatName = (TObjectName)(node.node1);
080                formatOptions = (TDummy)(node.node2);
081        }
082
083        return 0;
084    }
085
086    public void accept(TParseTreeVisitor v){
087        v.preVisit(this);
088        v.postVisit(this);
089    }
090
091    public void acceptChildren(TParseTreeVisitor v){
092        v.preVisit(this);
093        fileFormatName.acceptChildren(v);
094        v.postVisit(this);
095    }
096
097}