001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.stmt.TSelectSqlStatement; 005 006/* 007* Date: 2010-4-15 008* Time: 11:21:00 009*/ 010public class TOpenQuery extends TParseTreeNode { 011 private TObjectName linkedServer; 012 private TSourceToken queryToken; 013 014 private TSelectSqlStatement subquery = null; 015 016 public TSelectSqlStatement getSubquery() { 017 return subquery; 018 } 019 020 public TObjectName getLinkedServer() { 021 return linkedServer; 022 } 023 024 public TSourceToken getQueryToken() { 025 return queryToken; 026 } 027 028 public void init(Object arg1, Object arg2){ 029 linkedServer = (TObjectName)arg1; 030 queryToken = (TSourceToken)arg2; 031 } 032 033 public void doParse(TCustomSqlStatement psql, ESqlClause plocation) { 034 035 TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); 036 sqlParser.sqltext = TBaseType.getStringInsideLiteral(queryToken.toString());//.replaceAll("''","'"); 037 sqlParser.setFrameStack(psql.getFrameStack()); 038 int i = sqlParser.parse(); 039 if (i == 0){ 040 if (sqlParser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect){ 041 subquery = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); 042 } 043 }else{ 044 // System.out.println(sqlParser.getErrormessage()); 045 } 046 return; 047 } 048 049 public void accept(TParseTreeVisitor v){ 050 v.preVisit(this); 051 v.postVisit(this); 052 } 053 054 public void acceptChildren(TParseTreeVisitor v){ 055 v.preVisit(this); 056 v.postVisit(this); 057 } 058}