001package gudusoft.gsqlparser.stmt;
002/*
003 * Date: 13-8-9
004 */
005
006import gudusoft.gsqlparser.EAlterViewOption;
007import gudusoft.gsqlparser.EDbVendor;
008import gudusoft.gsqlparser.ESqlStatementType;
009import gudusoft.gsqlparser.TCustomSqlStatement;
010import gudusoft.gsqlparser.nodes.*;
011
012import java.util.ArrayList;
013
014public class TAlterViewStatement extends TAlterRelation {
015    private String comment;
016
017    public String getComment() {
018        return comment;
019    }
020    private TObjectName viewName;
021    private EAlterViewOption alterViewOption;
022    private TObjectName newViewName;
023    private ArrayList<TPartitionExtensionClause> partitionSpecs;
024    private TSelectSqlStatement selectSqlStatement;
025    private TObjectName ownerName;
026
027    public void setOwnerName(TObjectName ownerName) {
028        this.ownerName = ownerName;
029    }
030
031    public TObjectName getOwnerName() {
032
033        return ownerName;
034    }
035    //    private TSelectSqlNode selectSqlNode;
036
037    public TAlterViewStatement(EDbVendor dbvendor) {
038        super(dbvendor);
039        sqlstatementtype = ESqlStatementType.sstalterview;
040    }
041
042    public TObjectName getViewName() {
043        return viewName;
044    }
045
046    public EAlterViewOption getAlterViewOption() {
047        return alterViewOption;
048    }
049
050    public TObjectName getNewViewName() {
051        return newViewName;
052    }
053
054    public ArrayList<TPartitionExtensionClause> getPartitionSpecs() {
055        return partitionSpecs;
056    }
057
058    public TSelectSqlStatement getSelectSqlStatement() {
059        return selectSqlStatement;
060    }
061
062
063
064    public int doParseStatement(TCustomSqlStatement psql) {
065        if (rootNode == null) return -1;
066        super.doParseStatement(psql);
067        TAlterViewSqlNode node = (TAlterViewSqlNode)rootNode;
068        alterViewOption  = node.getAlterViewOption();
069        viewName = node.getViewName();
070        newViewName = node.getNewViewName();
071        ownerName = node.getOwnerName();
072        partitionSpecs = node.getPartitionSpecs();
073        this.comment = node.getComment();
074
075        if (node.getSelectSqlNode() != null){
076            selectSqlStatement = new TSelectSqlStatement(EDbVendor.dbvhive);
077            selectSqlStatement.rootNode = node.getSelectSqlNode();
078            selectSqlStatement.setStartToken(node.getSelectSqlNode());
079            selectSqlStatement.setEndToken(node.getSelectSqlNode());
080            selectSqlStatement.doParseStatement(this);
081        }
082        if (alterViewOption == null) return 0;
083
084        switch (alterViewOption){
085            case rename:
086                this.newViewName = node.getNewViewName();
087                break;
088        }
089
090
091        return 0;
092    }
093
094    public void setViewName(TObjectName viewName) {
095        this.viewName = viewName;
096    }
097
098    public void setAlterViewOption(EAlterViewOption alterViewOption) {
099        this.alterViewOption = alterViewOption;
100    }
101
102    public void setNewViewName(TObjectName newViewName) {
103        this.newViewName = newViewName;
104    }
105
106
107    public void setSelectSqlStatement(TSelectSqlStatement selectSqlStatement) {
108        this.selectSqlStatement = selectSqlStatement;
109    }
110
111    public void accept(TParseTreeVisitor v){
112        v.preVisit(this);
113        v.postVisit(this);
114    }
115
116    public void acceptChildren(TParseTreeVisitor v){
117        v.preVisit(this);
118        if (selectSqlStatement != null) selectSqlStatement.accept(v);
119        v.postVisit(this);
120    }
121
122}