001package gudusoft.gsqlparser.stmt.teradata.utilities; 002 003import gudusoft.gsqlparser.TSourceToken; 004 005import java.util.HashMap; 006import java.util.Map; 007 008public enum BteqCmdType { 009 AUTOKEYRETRIEVE, 010 BRANCHMSG, 011 COMPILE, 012 CONNECTSTRING, 013 DECIMALDIGITS, 014 DEFAULTS, 015 ECHOREQ, 016 ENCRYPTION, 017 ERRORLEVEL, 018 ERRORONDBSWARNING, 019 ERROROUT, 020 EXIT, QUIT, 021 EXITONDELAY, 022 EXPORT_DATA, 023 EXPORT_DDNAME, 024 EXPORT_INDICDATA, 025 EXPORT_REPORT, 026 EXPORT_DIF, 027 EXPORT_FILE, 028 EXPORT_RESET, 029 EXPORTEJECT, 030 FOLDLINE, 031 FOOTING, 032 FORMAT, 033 FORMCHAR, 034 FULLYEAR, 035 GOTO, 036 HANG, 037 HEADING, 038 RTITLE, 039 HELP_BTEQ, 040 HELP, 041 IF, ENDIF, ELSE, ELSEIF, 042 IMPORT_INDICATA, 043 IMPORT_INDICDATA, 044 IMPORT_REPORT, 045 IMPORT_DATA, 046 IMPORT_VARTEXT, 047 IMPORT_RESET, 048 IMPORT_DDNAME, 049 IMPORT_RECORDLENGTH, 050 IMPORT_FILE, 051 INDICATORMODE, 052 INDICDATA, 053 LABEL, 054 LARGEDATAMODE, 055 LOGMECH, 056 LOGDATA, 057 LOGOFF, LOGON, 058 LOGONPROMPT, 059 MAXERROR, 060 MESSAGEOUT, 061 NOTIFY, 062 NULL, 063 OMIT, 064 OS, 065 PACK, 066 PAGEBREAK, 067 PAGELENGTH, 068 QUIET, 069 RECORDLENGTH, 070 RECORDMODE, 071 REMARK, 072 REPEAT, 073 REPEATSTOP, 074 REPORTALIGN, 075 RETCANCEL, 076 RETLIMIT, 077 RETRY, 078 RUN_FILE, RUN_DD, RUN_DDNAME, RUN_QUIT, 079 SEPARATOR, 080 SESSION_CHARSET, 081 SESSION_RESPBUFLEN, 082 SESSION_SQLFLAG, 083 SESSION_TRANSACTION, 084 SESSION_TRANS, 085 SESSION_TWORESPBUFS, 086 SESSIONS, 087 SHOW, 088 SHOW_CONTROLS, SHOW_CONTROL, 089 SHOW_ERRORMAP, 090 SHOW_VERSIONS, SHOW_VERSION, 091 SIDETITLES, 092 SKIPDOUBLE, 093 SKIPLINE, 094 STATEMENTINDEPENDENCE, 095 SUPPRESS, 096 TDP, 097 TIMEMSG, 098 TIMEOUT, 099 TITLEDASHES, 100 TMSMMSG, 101 TRAILINGLINES, 102 TRANSLATECTRLSTOSPACES, 103 TRIMTRAILINGSPACES, 104 TSO, 105 UNDERLINE, 106 COMMENT, // COMMENT IS NOT A REAL COMMAND, IT IS USED TO REPRESENT LINE START WITH * 107 BT, 108 ET, 109 WIDTH 110 ; 111 112 private static final Map<String, BteqCmdType> bteqCmdLookup = new HashMap<>(); 113 114 static { 115 for (BteqCmdType cmd : values()) { 116 String cmdName = cmd.name().replace('_', ' '); 117 if (cmdName.equals("COMMENT")) { 118 continue; // skip this one 119 } 120 bteqCmdLookup.put(cmdName, cmd); 121 // Add SET variant if applicable 122 if (!cmdName.startsWith("SET ") && !cmdName.startsWith("SHOW ") && 123 !cmdName.startsWith("RUN ") && !cmdName.equals("HELP BTEQ") && 124 !cmdName.equals("IF") && !cmdName.equals("ENDIF") && 125 !cmdName.equals("ELSE") && !cmdName.equals("ELSEIF") && 126 !cmdName.equals("EXIT") && !cmdName.equals("QUIT") && 127 !cmdName.equals("LOGOFF") && !cmdName.equals("LOGON") && 128 !cmdName.equals("GOTO") && !cmdName.equals("HANG") && 129 !cmdName.equals("EXPORT") && !cmdName.equals("IMPORT") && 130 !cmdName.equals("LABEL") && !cmdName.equals("OS") && 131 !cmdName.equals("REMARK") && !cmdName.equals("REPEAT") && 132 !cmdName.equals("SHOW") && !cmdName.equals("TSO")) { 133 bteqCmdLookup.put("SET " + cmdName, cmd); 134 } 135 } 136 } 137 138 public static BteqCmdType searchBteqCmd(String str) { 139 return bteqCmdLookup.get(str.toUpperCase()); 140 } 141 142 public static BteqCmdType searchBteqCmd(TSourceToken token) { 143 if (token == null) { 144 return null; 145 } 146 BteqCmdType cmd = searchBteqCmd(token.toString()); 147 if (cmd != null) { 148 return cmd; 149 } 150 TSourceToken nextToken = token.nextSolidToken(); 151 if (nextToken != null) { 152 cmd = searchBteqCmd(token.toString()+" "+nextToken.toString()); 153 //System.out.println("searching: " + token.toString()+" "+nextToken.toString()+" returns: " + cmd); 154 return cmd; 155 }else{ 156 return null; 157 } 158 } 159}