001package gudusoft.gsqlparser.stmt.mssql;
002
003import gudusoft.gsqlparser.nodes.TObjectName;
004import gudusoft.gsqlparser.nodes.TObjectNameList;
005import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
006import gudusoft.gsqlparser.EDbObjectType;
007import gudusoft.gsqlparser.EDbVendor;
008import gudusoft.gsqlparser.ESqlStatementType;
009import gudusoft.gsqlparser.TCustomSqlStatement;
010import gudusoft.gsqlparser.nodes.mssql.TCreatePartitionSchemeSqlNode;
011
012public class TCreatePartitionSchemeSqlStatement extends TCustomSqlStatement {
013    private TObjectName schemeName;
014    private TObjectName functionName;
015    private TObjectNameList fileGroupList;
016
017    public TCreatePartitionSchemeSqlStatement (EDbVendor dbvendor){
018        super(dbvendor);
019        sqlstatementtype = ESqlStatementType.sstmssqlCreatePartitionScheme ;
020    }
021
022    public TObjectName getSchemeName() {
023        return schemeName;
024    }
025
026    public TObjectName getFunctionName() {
027        return functionName;
028    }
029
030    public TObjectNameList getFileGroupList() {
031        return fileGroupList;
032    }
033
034    public int doParseStatement(TCustomSqlStatement psql) {
035        if (rootNode == null) return -1;
036        super.doParseStatement(psql);
037        TCreatePartitionSchemeSqlNode createPartitionSchemeNode = (TCreatePartitionSchemeSqlNode) rootNode;
038        schemeName = createPartitionSchemeNode.getSchemeName();
039        schemeName.setDbObjectType(EDbObjectType.partitionScheme);
040        functionName = createPartitionSchemeNode.getFunctionName();
041        functionName.setDbObjectType(EDbObjectType.partitionFunction);
042        fileGroupList = createPartitionSchemeNode.getFileGroupList();
043        for (int i = 0; i < fileGroupList.size(); i++) {
044            TObjectName filegroupName = fileGroupList.getObjectName(i);
045            filegroupName.setDbObjectType(EDbObjectType.filegroup);
046        }
047        return 0;
048    }
049
050    public void accept(TParseTreeVisitor v) {
051        v.preVisit(this);
052        v.postVisit(this);
053    }
054
055    public void acceptChildren(TParseTreeVisitor v) {
056        v.preVisit(this);
057        v.postVisit(this);
058    }
059}