001package gudusoft.gsqlparser.nodes.hive;
002/*
003 * Date: 13-8-9
004 */
005
006import gudusoft.gsqlparser.TBaseType;
007import gudusoft.gsqlparser.TSourceToken;
008import gudusoft.gsqlparser.nodes.TObjectName;
009import gudusoft.gsqlparser.nodes.TParseTreeNode;
010
011public class THiveDescribeSqlNode extends TParseTreeNode {
012    private EHiveDescribleType describleType;
013    private TObjectName functionName;
014    private TObjectName dbName;
015    private TObjectName connectorName;
016    private TObjectName columnName;
017    private THiveDescTablePartition tablePartition;
018    private EHiveDescOption descOption;
019
020    public void setDescOption(TSourceToken token) {
021        if (token == null) return;
022        if (token.tokencode == TBaseType.rrw_formatted){
023            this.descOption = EHiveDescOption.doFormatted;
024        }else if (token.tokencode == TBaseType.rrw_extended){
025            this.descOption = EHiveDescOption.doExtended;
026        }else if (token.tokencode == TBaseType.rrw_pretty){
027            this.descOption = EHiveDescOption.doPretty;
028        }
029    }
030
031    public EHiveDescOption getDescOption() {
032
033        return descOption;
034    }
035
036    public TObjectName getColumnName() {
037        return columnName;
038    }
039
040    public void setColumnName(TObjectName columnName) {
041        this.columnName = columnName;
042    }
043
044    public void setColumnPath(TParseTreeNode columnPath) {
045        // For backward compatibility: if the column path is a simple identifier,
046        // also set columnName so that getColumnName() still works
047        if (columnPath != null && columnPath.getStartToken() != null
048            && columnPath.getStartToken() == columnPath.getEndToken()) {
049            // Simple identifier - single token column path
050            this.columnName = new TObjectName();
051            this.columnName.setStartToken(columnPath.getStartToken());
052            this.columnName.setEndToken(columnPath.getEndToken());
053        }
054    }
055
056    public TObjectName getConnectorName() {
057        return connectorName;
058    }
059
060    public TObjectName getDbName() {
061        return dbName;
062    }
063
064    public EHiveDescribleType getDescribleType() {
065        return describleType;
066    }
067
068    public TObjectName getFunctionName() {
069        return functionName;
070    }
071
072    public THiveDescTablePartition getTablePartition() {
073        return tablePartition;
074    }
075
076    public void init(Object arg1, Object arg2){
077        describleType =  (EHiveDescribleType)arg1;
078        switch (describleType){
079            case dtTablePartition:
080                tablePartition = (THiveDescTablePartition)arg2;
081                break;
082            case dtFunction:
083                functionName = (TObjectName)arg2;
084                break;
085            case dtDatabase:
086                dbName = (TObjectName)arg2;
087                break;
088            case dtConnector:
089                connectorName = (TObjectName)arg2;
090                break;
091        }
092    }
093
094}