001package gudusoft.gsqlparser.stmt.oracle;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.nodes.TObjectName;
005import gudusoft.gsqlparser.nodes.TStatementListSqlNode;
006import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
007import gudusoft.gsqlparser.stmt.TCommonStoredProcedureSqlStatement;
008
009/**
010 * The CREATE TYPE BODY defines or implements the member methods defined in the
011 * object type specification.
012 * You create object types with the CREATE TYPE({@link TPlsqlCreateType}) and the CREATE TYPE BODY({@link TPlsqlCreateTypeBody}) statements.
013*/
014public class TPlsqlCreateTypeBody extends TCommonStoredProcedureSqlStatement {
015    public TPlsqlCreateTypeBody(){
016        this(EDbVendor.dbvoracle);
017    }
018
019     public TPlsqlCreateTypeBody(EDbVendor dbvendor){
020        super(dbvendor);
021        sqlstatementtype = ESqlStatementType.sstplsql_createtypebody ;
022        }
023
024    public TObjectName getStoredProcedureName(){
025        return typeName;
026    }
027    private TObjectName typeName = null;
028
029    public TObjectName getTypeName() {
030        return typeName;
031    }
032
033    private TStatementListSqlNode stmts = null;
034
035    public void init(Object arg1,Object arg2)
036    {
037        typeName = (TObjectName)arg1;
038        //typeName.setObjectType(TObjectName.ttobjTypeName);
039        typeName.setDbObjectType(EDbObjectType.user_defined_type);
040
041        stmts = (TStatementListSqlNode)arg2;
042    }
043
044    public TStatementListSqlNode getStmts() {
045        return stmts;
046    }
047
048    public int doParseStatement(TCustomSqlStatement psql) {
049        if (rootNode == null) return -1;
050        if (super.doParseStatement(psql) != 0) return -1;
051
052        TPlsqlCreateTypeBody typeBody = (TPlsqlCreateTypeBody)rootNode;
053        typeName = typeBody.getTypeName();
054
055        typeBody.getStmts().doParse(this, ESqlClause.unknown);
056
057        for(int i= 0; i<typeBody.getStmts().size();i++){
058          this.getBodyStatements().add(typeBody.getStmts().getStatementSqlNode(i).getStmt());
059        }
060
061        //super.doParseStatement(psql);
062        return 0;
063    }
064
065    public void accept(TParseTreeVisitor v){
066        v.preVisit(this);
067        v.postVisit(this);
068    }
069
070    public void acceptChildren(TParseTreeVisitor v){
071        v.preVisit(this);
072        v.postVisit(this);
073    }
074
075    public void setTypeName(TObjectName typeName) {
076        this.typeName = typeName;
077    }
078
079
080}