001package gudusoft.gsqlparser.stmt;
002/*
003 * Date: 13-7-29
004 */
005
006import gudusoft.gsqlparser.EDbVendor;
007import gudusoft.gsqlparser.ESqlStatementType;
008import gudusoft.gsqlparser.TCustomSqlStatement;
009import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
010import gudusoft.gsqlparser.nodes.TTable;
011import gudusoft.gsqlparser.ELockMode;
012import gudusoft.gsqlparser.nodes.TLockSqlNode;
013
014import java.util.ArrayList;
015
016public class TLockTableStmt extends TCustomSqlStatement {
017
018    private ELockMode lockMode;
019    private TTable talbe;
020    private ArrayList<TTable> tableList = new ArrayList<TTable>();
021
022    public ArrayList<TTable> getTableList() {
023        return tableList;
024    }
025
026    public TLockTableStmt(EDbVendor dbvendor) {
027        super(dbvendor);
028        sqlstatementtype = ESqlStatementType.sstlocktable;
029    }
030
031    public ELockMode getLockMode() {
032        return lockMode;
033    }
034
035    public TTable getTalbe() {
036        return talbe;
037    }
038
039    public int doParseStatement(TCustomSqlStatement psql) {
040        if (rootNode == null) return -1;
041        super.doParseStatement(psql);
042
043        TLockSqlNode node = (TLockSqlNode)rootNode;
044        lockMode = node.getLockMode();
045       if (node.getFromTable() != null){
046           talbe = this.analyzeFromTable(node.getFromTable(),true);
047           tableList.add(talbe);
048       }else if (node.getFromTables() != null){
049              for (int i = 0; i < node.getFromTables().size(); i++){
050                tableList.add(this.analyzeFromTable(node.getFromTables().getFromTable(i),true));
051              }
052       }
053
054
055        return 0;
056    }
057
058    public void accept(TParseTreeVisitor v){
059        v.preVisit(this);
060        v.postVisit(this);
061    }
062
063    public void acceptChildren(TParseTreeVisitor v){
064        v.preVisit(this);
065        v.postVisit(this);
066    }
067
068    public void setLockMode(ELockMode lockMode) {
069        this.lockMode = lockMode;
070    }
071
072    public void setTalbe(TTable talbe) {
073        this.talbe = talbe;
074    }
075}