001package gudusoft.gsqlparser.stmt.teradata;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.nodes.*;
005import gudusoft.gsqlparser.nodes.teradata.TAbortSqlNode;
006import gudusoft.gsqlparser.nodes.teradata.TTeradataGiveSqlNode;
007
008
009public class TTeradataAbort extends TCustomSqlStatement {
010
011    private TFromTableList fromTableList;
012    private TWhereClause whereClause;
013    private String abortMessage;
014
015    public TTeradataAbort(EDbVendor dbvendor) {
016        super(dbvendor);
017        sqlstatementtype = ESqlStatementType.sstteradataabort;
018    }
019
020    public void accept(TParseTreeVisitor v){
021        v.preVisit(this);
022        v.postVisit(this);
023    }
024
025    public void acceptChildren(TParseTreeVisitor v){
026        v.preVisit(this);
027        v.postVisit(this);
028    }
029    public int doParseStatement(TCustomSqlStatement psql) {
030        if (rootNode == null) return -1;
031        super.doParseStatement(psql);
032        TAbortSqlNode abortSqlNode = (TAbortSqlNode)rootNode;
033        abortMessage = abortSqlNode.getAbortMessage();
034        whereClause = abortSqlNode.getWhereClause();
035        whereClause.doParse(this, ESqlClause.unknown);
036
037        if (abortSqlNode.getFromTableList() != null){
038            TFromTable lcFromTable = null;
039            TJoin lcJoin = null;
040
041            for(int i=0; i<abortSqlNode.getFromTableList().size();i++){
042                lcFromTable = abortSqlNode.getFromTableList().getFromTable(i);
043                TTable lcTable = null;
044
045                if (lcFromTable.getFromtableType() != ETableSource.join){
046                    lcJoin = new TJoin();
047                    lcTable = analyzeFromTable(lcFromTable,true);
048                    lcTable.setEffectType(ETableEffectType.tetSelect);
049                    lcJoin.setTable(lcTable);
050                    lcJoin.setStartToken(lcJoin.getTable().getStartToken());
051                    lcJoin.setEndToken(lcJoin.getTable().getEndToken());
052                    lcJoin.setGsqlparser(getGsqlparser());
053                }else{
054                    lcJoin = analyzeJoin(lcFromTable.getJoinExpr(),null,true);
055                    lcJoin.doParse(this, ESqlClause.join);
056                }
057
058                joins.addJoin(lcJoin);
059            }
060        }
061
062        return 0;
063    }
064}