001package gudusoft.gsqlparser.stmt.mssql; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TExecuteAsSqlNode; 005import gudusoft.gsqlparser.nodes.TObjectName; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007import gudusoft.gsqlparser.nodes.mssql.TExecuteAsClause; 008 009public class TMssqlExecuteAs extends TCustomSqlStatement { 010 public TMssqlExecuteAs (EDbVendor dbvendor){ 011 super(dbvendor); 012 sqlstatementtype = ESqlStatementType.sstmssqlexecuteas ; 013 } 014 015 void buildsql() { 016 } 017 018 void clear() { 019 } 020 021 String getasprettytext() { 022 return ""; 023 } 024 025 void iterate(TVisitorAbs pvisitor) { 026 } 027 028 private EExecuteAsOption executeAsOption; 029 030 public void setExecuteAsOption(EExecuteAsOption executeAsOption) { 031 this.executeAsOption = executeAsOption; 032 } 033 034 public EExecuteAsOption getExecuteAsOption() { 035 036 return executeAsOption; 037 } 038 039 private boolean noRevert; 040 private String userName; 041 private TObjectName loginName; 042 043 public void setLoginName(TObjectName loginName) { 044 this.loginName = loginName; 045 } 046 047 public TObjectName getLoginName() { 048 049 return loginName; 050 } 051 052 private TObjectName cookie; 053 054 public void setCookie(TObjectName cookie) { 055 this.cookie = cookie; 056 } 057 058 public String getUserName() { 059 if (loginName == null) return null; 060 061 return loginName.toString(); 062 } 063 064 public void setNoRevert(boolean noRevert) { 065 this.noRevert = noRevert; 066 } 067 068 public void setUserName(String userName) { 069 this.userName = userName; 070 } 071 072 public boolean isNoRevert() { 073 074 return noRevert; 075 } 076 077 public TObjectName getCookie() { 078 return cookie; 079 } 080 081 public int doParseStatement(TCustomSqlStatement psql) { 082 if (rootNode == null) return -1; 083 084 TExecuteAsSqlNode sqlNode = (TExecuteAsSqlNode)rootNode; 085 String str = sqlNode.getLoginToken().toString(); 086 if (str.equalsIgnoreCase("USER")){ 087 executeAsOption = EExecuteAsOption.eaoUser; 088 }else if (str.equalsIgnoreCase("CALLER")){ 089 executeAsOption = EExecuteAsOption.eaoCaller; 090 }else if (str.equalsIgnoreCase("LOGIN")){ 091 executeAsOption = EExecuteAsOption.eaoLogin; 092 } 093 094 loginName = sqlNode.getLoginName(); 095 096// if (sqlNode.getNameToken() != null){ 097// userName = sqlNode.getNameToken().toString(); 098// } 099 100 noRevert = sqlNode.isNoRevert(); 101 cookie = sqlNode.getCookie(); 102 103 104 105 super.doParseStatement(psql); 106 return 0; 107 } 108 109 public void accept(TParseTreeVisitor v){ 110 v.preVisit(this); 111 v.postVisit(this); 112 } 113 114 public void acceptChildren(TParseTreeVisitor v){ 115 v.preVisit(this); 116 v.postVisit(this); 117 } 118 119}