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}