001
002package gudusoft.gsqlparser.dlineage.dataflow.model;
003
004import gudusoft.gsqlparser.nodes.TResultColumnList;
005import gudusoft.gsqlparser.stmt.TCursorDeclStmt;
006import gudusoft.gsqlparser.stmt.TForStmt;
007import gudusoft.gsqlparser.stmt.TLoopStmt;
008import gudusoft.gsqlparser.stmt.TOpenforStmt;
009import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
010import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare;
011
012public class Cursor extends Variable {
013
014        private TMssqlDeclare mssqlCursorStmt;
015        private TCursorDeclStmt cursorStmt;
016        private TOpenforStmt openforStmt;
017        private TLoopStmt loopStmt;
018        private TForStmt forStmt;
019
020        public Cursor(TMssqlDeclare select) {
021                super(select, select.getCursorName());
022                setView(false);
023                this.mssqlCursorStmt = select;
024        }
025        
026        public Cursor(TCursorDeclStmt select) {
027                super(select, select.getCursorName());
028                setView(false);
029                this.cursorStmt = select;
030        }
031
032        public Cursor(TOpenforStmt select) {
033                super(select, select.getCursorVariableName());
034                setView(false);
035                this.openforStmt = select;
036        }
037        
038        public Cursor(TForStmt select) {
039                super(select, select.getLoopName());
040                setView(false);
041                this.forStmt = select;
042        }
043        
044        public Cursor(TLoopStmt select) {
045                super(select, select.getRecordName());
046                setView(false);
047                this.loopStmt = select;
048        }
049
050        public TResultColumnList getResultColumnObject() {
051                if (cursorStmt != null) {
052                        return cursorStmt.getSubquery().getResultColumnList();
053                }
054                if (openforStmt != null) {
055                        return openforStmt.getSubquery().getResultColumnList();
056                }
057                if (forStmt != null) {
058                        return forStmt.getSubquery().getResultColumnList();
059                }
060                if (loopStmt != null) {
061                        return loopStmt.getSubquery().getResultColumnList();
062                }
063                if (mssqlCursorStmt != null) {
064                        return mssqlCursorStmt.getSubquery().getResultColumnList();
065                }
066                return null;
067        }
068
069        public TSelectSqlStatement getSelectStmt() {
070                if (cursorStmt != null) {
071                        return cursorStmt.getSubquery();
072                }
073                if (openforStmt != null) {
074                        return openforStmt.getSubquery();
075                }
076                if (forStmt != null) {
077                        return forStmt.getSubquery();
078                }
079                if (loopStmt != null) {
080                        return loopStmt.getSubquery();
081                }
082                if (mssqlCursorStmt != null) {
083                        return mssqlCursorStmt.getSubquery();
084                }
085                return null;
086        }
087
088        public TCursorDeclStmt getCursorStmt() {
089                return cursorStmt;
090        }
091        
092        public TOpenforStmt getOpenforStmt() {
093                return openforStmt;
094        }
095        
096        public TForStmt getForStmt() {
097                return forStmt;
098        }
099        
100        public TLoopStmt getLoopStmt() {
101                return loopStmt;
102        }
103
104        public TMssqlDeclare getMssqlCursorStmt() {
105                return mssqlCursorStmt;
106        }
107
108}