001package gudusoft.gsqlparser.stmt;
002/*
003 * Date: 13-1-23
004 */
005
006import gudusoft.gsqlparser.*;
007import gudusoft.gsqlparser.nodes.TCreateSynonymSqlNode;
008import gudusoft.gsqlparser.nodes.TObjectName;
009import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
010
011public class TCreateSynonymStmt extends TCustomSqlStatement {
012
013    public TCreateSynonymStmt(EDbVendor dbvendor) {
014        super(dbvendor);
015        sqlstatementtype = ESqlStatementType.sstcreatesynonym;
016    }
017
018    private TObjectName synonymName = null;
019    private TObjectName forName = null;
020
021    public TObjectName getForName() {
022        return forName;
023    }
024
025    public TObjectName getSynonymName() {
026        return synonymName;
027    }
028
029    public int doParseStatement(TCustomSqlStatement psql) {
030        if (rootNode == null) return -1;
031        super.doParseStatement(psql);
032        TCreateSynonymSqlNode node = (TCreateSynonymSqlNode)rootNode;
033        this.synonymName = node.getSynonymName();
034        this.synonymName.setDbObjectType(EDbObjectType.synonym);
035        if (getSqlEnv().getDefaultCatalogName() != null){
036            if (synonymName.getDatabaseToken() == null){
037                synonymName.setDatabaseToken(new TSourceToken(getSqlEnv().getDefaultCatalogName()));
038            }
039        }
040        this.forName = node.getForName();
041        this.forName.setDbObjectType(EDbObjectType.synonym);
042        this.isPublic = node.isPublic();
043
044        return 0;
045    }
046
047    private boolean isPublic  = false;
048
049    public boolean isPublic() {
050        return isPublic;
051    }
052
053    public void accept(TParseTreeVisitor v){
054        v.preVisit(this);
055        v.postVisit(this);
056    }
057
058    public void acceptChildren(TParseTreeVisitor v){
059        v.preVisit(this);
060        v.postVisit(this);
061    }
062
063    public void setSynonymName(TObjectName synonymName) {
064        this.synonymName = synonymName;
065    }
066
067    public void setForName(TObjectName forName) {
068        this.forName = forName;
069    }
070
071    public void setPublic(boolean isPublic) {
072        this.isPublic = isPublic;
073    }
074}