001package gudusoft.gsqlparser.nodes.mssql;
002
003
004import gudusoft.gsqlparser.TSourceToken;
005import gudusoft.gsqlparser.nodes.TExpressionList;
006import gudusoft.gsqlparser.nodes.TObjectName;
007import gudusoft.gsqlparser.nodes.TParseTreeNode;
008import gudusoft.gsqlparser.nodes.TTypeName;
009import gudusoft.gsqlparser.stmt.mssql.TCreatePartitionFunctionStmt;
010import gudusoft.gsqlparser.stmt.mssql.TCreatePartitionFunctionStmt.PartitionRangeType;
011
012public class TCreatePartitionFunctionSqlNode extends TParseTreeNode {
013
014    private TObjectName functionName;
015    private TTypeName dataType;
016    private TCreatePartitionFunctionStmt.PartitionRangeType rangeType;
017    private TExpressionList boundaryValues;
018
019    public TObjectName getFunctionName() {
020        return functionName;
021    }
022
023    public TTypeName getDataType() {
024        return dataType;
025    }
026
027    public PartitionRangeType getRangeType() {
028        return rangeType;
029    }
030
031    public TExpressionList getBoundaryValues() {
032        return boundaryValues;
033    }
034
035
036   
037    public void init(Object arg1, Object arg2, Object arg3, Object arg4) {
038        this.functionName = (TObjectName) arg1;
039        this.dataType = (TTypeName) arg2;
040        this.rangeType = getPartitionRangeType((TSourceToken) arg3);
041        this.boundaryValues = (TExpressionList) arg4;
042    }
043
044    
045    public static PartitionRangeType getPartitionRangeType(TSourceToken token) {
046        if (token == null) {
047            return null;
048        }
049        
050        String tokenText = token.toString().toUpperCase();
051        switch (tokenText) {
052            case "LEFT":
053                return PartitionRangeType.LEFT;
054            case "RIGHT":
055                return PartitionRangeType.RIGHT;
056            default:
057                throw new IllegalArgumentException("Invalid partition range type: " + tokenText);
058        }
059    }
060
061
062}