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}