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}