001package gudusoft.gsqlparser.nodes;
002/*
003 * Date: 13-3-26
004 */
005
006import gudusoft.gsqlparser.EDbObjectType;
007import gudusoft.gsqlparser.TSourceToken;
008
009public class TDescribeSqlNode extends TParseTreeNode {
010
011    private TObjectName databaseName;
012
013    public TObjectName getDatabaseName() {
014        return databaseName;
015    }
016
017    private  TObjectName tableName;
018    private TObjectName columnName;
019    private TSourceToken descToken;
020    private TObjectName dbObjectName;
021    private EDbObjectType dbObjectType;
022
023    public TObjectName getDbObjectName() {
024        return dbObjectName;
025    }
026
027    public EDbObjectType getDbObjectType() {
028        return dbObjectType;
029    }
030
031    public TObjectName getColumnName() {
032        return columnName;
033    }
034
035    public TSourceToken getDescToken() {
036        return descToken;
037    }
038
039    public TObjectName getTableName() {
040        return tableName;
041    }
042
043//    public void init(Object arg1, Object arg2){
044//
045//        descToken = (TSourceToken)arg1;
046//        tableName = (TObjectName)arg2;
047//    }
048//
049//    public void init(Object arg1, Object arg2, Object arg3){
050//        init(arg1,arg2);
051//        columnName = (TObjectName)arg3;
052//    }
053
054
055    public void setTableName(TObjectName tableName) {
056        this.tableName = tableName;
057    }
058
059    public void setColumnName(TObjectName columnName) {
060        this.columnName = columnName;
061    }
062
063    public void setDescToken(TSourceToken descToken) {
064        this.descToken = descToken;
065    }
066
067    private TSourceToken asJsonToken;
068
069    /**
070     * The {@code JSON} token of a trailing {@code AS JSON} clause
071     * (Databricks / Spark {@code DESCRIBE TABLE EXTENDED t AS JSON}).
072     *
073     * @return the {@code JSON} token, or {@code null} when the clause is absent
074     */
075    public TSourceToken getAsJsonToken() {
076        return asJsonToken;
077    }
078
079    public void setAsJsonToken(TSourceToken asJsonToken) {
080        this.asJsonToken = asJsonToken;
081    }
082
083    public  void  init(Object arg1,Object arg2){
084        dbObjectType = (EDbObjectType)arg1;
085
086        switch (dbObjectType){
087            case table:
088                dbObjectName = (TObjectName)arg2;
089                tableName = dbObjectName;
090                tableName.setDbObjectType(dbObjectType);
091                break;
092            case column:
093                dbObjectName = (TObjectName)arg2;
094                columnName = dbObjectName;
095                break;
096            case database:
097                dbObjectName = (TObjectName)arg2;
098                databaseName = dbObjectName;
099                break;
100            case query:
101                queryNode = (TSelectSqlNode) arg2;
102                break;
103            default:
104                dbObjectName = (TObjectName)arg2;
105                break;
106        }
107    }
108
109    private TSelectSqlNode queryNode;
110
111    public TSelectSqlNode getQueryNode() {
112        return queryNode;
113    }
114}