001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.nodes.oracle.TListSubpartitionDesc; 004import gudusoft.gsqlparser.nodes.oracle.TRangeSubpartitionDesc; 005 006import java.util.ArrayList; 007 008/** 009 * #TODO Need to be merged into {@link TPartitionDefinition} 010 * 011 * 012 */ 013public class TTablePartitionItem extends TParseTreeNode { 014 public enum ETablePartitionItemType { range, hashIndividal,hashByQuantity,list}; 015 016 private ArrayList<TRangeSubpartitionDesc> rangeSubpartitionDescs; 017 private ArrayList<TListSubpartitionDesc> listSubpartitionDescs; 018 019 public void setRangeSubpartitionDescs(ArrayList<TRangeSubpartitionDesc> rangeSubpartitionDescs) { 020 this.rangeSubpartitionDescs = rangeSubpartitionDescs; 021 } 022 023 public void setListSubpartitionDescs(ArrayList<TListSubpartitionDesc> listSubpartitionDescs) { 024 this.listSubpartitionDescs = listSubpartitionDescs; 025 } 026 027 public ArrayList<TRangeSubpartitionDesc> getRangeSubpartitionDescs() { 028 return rangeSubpartitionDescs; 029 } 030 031 public ArrayList<TListSubpartitionDesc> getListSubpartitionDescs() { 032 return listSubpartitionDescs; 033 } 034 035 private TExpression hashPartitionQuantity; 036 037 public TExpression getHashPartitionQuantity() { 038 return hashPartitionQuantity; 039 } 040 041 042 private ETablePartitionItemType tablePartitionItemType ; 043 044 public ETablePartitionItemType getTablePartitionItemType() { 045 return tablePartitionItemType; 046 } 047 048 private TObjectName partitionName; 049 private TRangeValuesClause rangeValuesClause; 050 private TListValuesClause listValuesClause; 051 052 public TListValuesClause getListValuesClause() { 053 return listValuesClause; 054 } 055 056 public TObjectName getPartitionName() { 057 return partitionName; 058 } 059 060 public void init(Object arg1){ 061 tablePartitionItemType = (ETablePartitionItemType)arg1; 062 } 063 064 public void init(Object arg1, Object arg2){ 065 init(arg1); 066 067 switch (tablePartitionItemType){ 068 case hashByQuantity: 069 this.hashPartitionQuantity = (TExpression)arg2; 070 break; 071 } 072 } 073 074 private TObjectNameList storeInTablespaceList; 075 076 public TObjectNameList getStoreInTablespaceList() { 077 return storeInTablespaceList; 078 } 079 080 public void init(Object arg1, Object arg2, Object arg3){ 081 init(arg1); 082 083 switch (tablePartitionItemType){ 084 case range: 085 if (arg2 != null){ 086 this.partitionName = (TObjectName)arg2; 087 } 088 this.rangeValuesClause = (TRangeValuesClause)arg3; 089 break; 090 case hashByQuantity: 091 this.hashPartitionQuantity = (TExpression)arg2; 092 TDummyList options = (TDummyList)arg3; 093 for(int i=0;i<options.size();i++){ 094 TDummy dummy = options.getDummyItem(i); 095 if (dummy.int1 == 1){ 096 // store in ( tablespace list) 097 storeInTablespaceList = ((TDummy)(dummy.node1)).objectNameList; 098 } 099 } 100 break; 101 case list: 102 if (arg2 != null){ 103 this.partitionName = (TObjectName)arg2; 104 } 105 this.listValuesClause = (TListValuesClause)arg3; 106 break; 107 108 } 109 } 110 111 public TRangeValuesClause getRangeValuesClause() { 112 return rangeValuesClause; 113 } 114 115 public void accept(TParseTreeVisitor v){ 116 v.preVisit(this); 117 v.postVisit(this); 118 } 119 120 public void acceptChildren(TParseTreeVisitor v){ 121 v.preVisit(this); 122 v.postVisit(this); 123 } 124 125}