1 package com.daffodilwoods.daffodildb.utils; 2 3 import com.daffodilwoods.daffodildb.server.sql99.common.StaticClass; 4 import java.util.Comparator ; 5 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.Datatype; 6 import com.daffodilwoods.database.resource.DException; 7 import com.daffodilwoods.daffodildb.utils.comparator.*; 8 import com.daffodilwoods.daffodildb.server.serversystem._ServerSession; 9 import java.text.Collator ; 10 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator.*; 11 import com.daffodilwoods.daffodildb.utils.comparator.CTusjohCzuftDpmmbupsDpnqbsbups; 12 import com.daffodilwoods.daffodildb.utils.comparator.CUjnfTubnqDpnqbsbups; 13 import com.daffodilwoods.daffodildb.utils.comparator.CTusjohTfotjujwfDpnqbsbups; 14 import com.daffodilwoods.daffodildb.utils.comparator.DateComparator; 15 16 public class GetByteComparator implements Datatype, java.io.Serializable { 17 18 public static CCppmfboCppmfboDpnqbsbups oneByteComparator = new CCppmfboCppmfboDpnqbsbups(); 19 public static CTbnfUzqfDpnqbsbups sameComparator = new CTbnfUzqfDpnqbsbups(); 20 public static FTComparator ftComparator = new FTComparator(); 21 public static CTbnfUzqfEfdjnbmDpnqbsbups sameDecimalComparator = new CTbnfUzqfEfdjnbmDpnqbsbups(); 22 public static CCjhEfdjnbmCjhEfdjnbmDpnqbsbups bigDecimalComparator = new CCjhEfdjnbmCjhEfdjnbmDpnqbsbups(); 23 public static CTusjohJoTfotjujwfDpnqbsbups stringComparator = new CTusjohJoTfotjujwfDpnqbsbups(); 24 public static CTusjohTfotjujwfDpnqbsbups sensitiveStringComparator = new CTusjohTfotjujwfDpnqbsbups(); 25 public static CUjnfTubnqDpnqbsbups timeStampComparator = new CUjnfTubnqDpnqbsbups(); 26 public static COpoEfdjnbmOpoEfdjnbmDpnqbsbups nonDecimalNonDecimalComparator = new COpoEfdjnbmOpoEfdjnbmDpnqbsbups(); 27 public static CPckfduDpnqbsbups objectComparator = new CPckfduDpnqbsbups(); 28 public static CGmpbuOpoEfdjnbmDpnqbsbups floatNonDecimalComparator = new CGmpbuOpoEfdjnbmDpnqbsbups(); 29 public static CEpvcmfOpoEfdjnbmDpnqbsbups doubleNonDecimalComparator = new CEpvcmfOpoEfdjnbmDpnqbsbups(); 30 public static CEpvcmfGmpbuDpnqbsbups doubleFloatComparator = new CEpvcmfGmpbuDpnqbsbups(); 31 public static CSfwfstfDpnqbsbups floatDoubleComparator = new CSfwfstfDpnqbsbups(doubleFloatComparator); 32 public static CSfwfstfDpnqbsbups nonDecimalFloatComparator = new CSfwfstfDpnqbsbups(floatNonDecimalComparator); 33 public static CSfwfstfDpnqbsbups nonDecimalDoubleComparator = new CSfwfstfDpnqbsbups(doubleNonDecimalComparator); 34 public static DateComparator dateComparator = new DateComparator(); 35 36 public GetByteComparator() { 37 } 38 39 public static SuperComparator getComparatorForDataSystem(int type , boolean flag, Collator collator) throws DException{ 40 flag = true; 41 switch ( type ) { 42 case BOOLEAN: 43 case BYTE: 44 return oneByteComparator; 45 case INT: 46 case TINYINT: 47 case INTEGER: 48 case LONG: 49 case SHORT: 50 case SMALLINT: 51 case BIGINT: 52 case BINARY: 53 case VARBINARY: 54 case BIT: 55 case BITVARYING: 56 return sameComparator; 57 case FLOAT: 58 case DOUBLE: 59 case DOUBLEPRECISION: 60 case REAL: 61 return sameDecimalComparator; 62 case BIGDECIMAL: 63 case DECIMAL: 64 case DEC: 65 case NUMERIC: 66 return bigDecimalComparator; 67 case VARCHAR: 68 case CHAR: 69 case CHARACTER: 70 case CHARACTERVARYING: 71 case CHARVARYING: if( collator == null ){ 73 if (flag) 74 return stringComparator; 75 else{ 76 return sensitiveStringComparator; 77 } 78 } 79 else{ 80 return new CTusjohCzuftDpmmbupsDpnqbsbups(collator); 81 } 82 case DATE : 83 return dateComparator; 84 case TIME : 85 case TIMESTAMP : 86 return sameComparator; 87 default: 88 throw new DException("DSE515",new Object [] {StaticClass.getDataTypeName(type)}); 89 } 90 91 } 92 93 static public SuperComparator getComparator( int type , boolean flag, Collator collator ) throws DException{ 94 flag = true; 95 switch ( type ) { 96 case BOOLEAN: 97 case BYTE: 98 return oneByteComparator; 99 case INT: 100 case TINYINT: 101 case INTEGER: 102 case LONG: 103 case SHORT: 104 case SMALLINT: 105 case BIGINT: 106 return sameComparator; 107 case FLOAT: 108 case DOUBLE: 109 case DOUBLEPRECISION: 110 case REAL: 111 return sameDecimalComparator; 112 case BIGDECIMAL: 113 case DECIMAL: 114 case DEC: 115 case NUMERIC: 116 return bigDecimalComparator; 117 case VARCHAR: 118 case CHAR: 119 case CHARACTER: 120 case CHARACTERVARYING: 121 case CHARVARYING: if( collator == null ){ 123 if (flag) 124 return stringComparator; 125 else{ 126 return sensitiveStringComparator; 127 } 128 } 129 else{ 130 return new CTusjohDpmmbupsDpnqbsbups(collator); 131 } 132 case DATE : 133 return dateComparator; 134 case TIME : 135 case TIMESTAMP : 136 return sameComparator; 137 default: 138 throw new DException("DSE515",new Object [] {StaticClass.getDataTypeName(type)}); 139 } 140 141 } 142 143 public static SuperComparator getAppropriateComparator(int type1 , int type2 , _ServerSession serverSession , java.text.Collator collator) throws DException{ 144 boolean caseSensitive = false; switch(type1){ 146 case BYTE : case BOOLEAN : case TINYINT : 147 switch(type2){ 148 case BYTE : case BOOLEAN : case TINYINT : 149 return oneByteComparator; 150 case SHORT : case INTEGER :case INT : case LONG : case BIGINT : case SMALLINT : 151 return nonDecimalNonDecimalComparator; 152 case REAL : 153 return nonDecimalFloatComparator; 154 case FLOAT : case DOUBLE : case DOUBLEPRECISION : 155 return nonDecimalDoubleComparator; 156 case BIGDECIMAL : case DECIMAL : case DEC : case NUMERIC : 157 return objectComparator; 158 default : 159 throw new DException("DSE87",new Object []{StaticClass.getDataTypeName(type1), StaticClass.getDataTypeName(type2)}); 160 } 161 case SHORT : case SMALLINT : 162 switch(type2){ 163 case BYTE : case TINYINT : case BOOLEAN : case INTEGER : case LONG : 164 case INT : case BIGINT : 165 return nonDecimalNonDecimalComparator; 166 case SHORT : case SMALLINT : 167 return sameComparator; 168 case REAL : 169 return nonDecimalFloatComparator; 170 case DOUBLE :case FLOAT : case DOUBLEPRECISION : 171 return nonDecimalDoubleComparator; 172 case BIGDECIMAL : case DECIMAL : case DEC : case NUMERIC : 173 return objectComparator; 174 default : 175 throw new DException("DSE87",new Object []{StaticClass.getDataTypeName(type1), StaticClass.getDataTypeName(type2)}); 176 } 177 case INTEGER : case INT : 178 switch(type2){ 179 case BYTE : case TINYINT : case BOOLEAN : case SHORT : case SMALLINT : case LONG : 180 case BIGINT : 181 return nonDecimalNonDecimalComparator; 182 case INTEGER :case INT : 183 return sameComparator; 184 case REAL : 185 return nonDecimalFloatComparator; 186 case DOUBLE :case FLOAT : case DOUBLEPRECISION : 187 return nonDecimalDoubleComparator; 188 case BIGDECIMAL : case DECIMAL : case DEC : case NUMERIC : 189 return objectComparator; 190 default : 191 throw new DException("DSE87",new Object []{StaticClass.getDataTypeName(type1), StaticClass.getDataTypeName(type2)}); 192 } 193 case LONG : case BIGINT : 194 switch(type2){ 195 case BYTE : case BOOLEAN : case SHORT : case INTEGER : case SMALLINT : 196 case TINYINT : case INT : 197 return nonDecimalNonDecimalComparator; 198 case LONG : case BIGINT : 199 return sameComparator; 200 case REAL : 201 return nonDecimalFloatComparator; 202 case DOUBLE :case FLOAT : case DOUBLEPRECISION : 203 return nonDecimalDoubleComparator; 204 case BIGDECIMAL : case DECIMAL : case DEC : case NUMERIC : 205 return objectComparator; 206 default : 207 throw new DException("DSE87",new Object []{StaticClass.getDataTypeName(type1), StaticClass.getDataTypeName(type2)}); 208 } 209 case REAL : 210 switch(type2){ 211 case BYTE : case SHORT :case INTEGER : case INT : case LONG : 212 case BOOLEAN :case SMALLINT :case TINYINT : case BIGINT : 213 return floatNonDecimalComparator; 214 case REAL : 215 return sameDecimalComparator; 216 case DOUBLE :case FLOAT : case DOUBLEPRECISION : 217 return floatDoubleComparator; 218 case NUMERIC : case DEC : case DECIMAL : 219 return objectComparator; 220 default : 221 throw new DException("DSE87",new Object []{StaticClass.getDataTypeName(type1), StaticClass.getDataTypeName(type2)}); 222 } 223 case DOUBLE : case FLOAT : case DOUBLEPRECISION : 224 switch(type2){ 225 case BYTE : case SHORT :case INTEGER : case INT : case LONG : 226 case BOOLEAN :case SMALLINT :case TINYINT : case BIGINT : 227 return doubleNonDecimalComparator; 228 case REAL : 229 return doubleFloatComparator; 230 case DOUBLE :case FLOAT : case DOUBLEPRECISION : 231 return sameDecimalComparator; 232 case NUMERIC : case DEC : case DECIMAL : 233 return objectComparator; 234 default : 235 throw new DException("DSE87",new Object []{StaticClass.getDataTypeName(type1), StaticClass.getDataTypeName(type2)}); 236 } 237 case BIGDECIMAL : case DECIMAL : case DEC : case NUMERIC : 238 switch(type2){ 239 case BIGDECIMAL : case DECIMAL : case DEC : case NUMERIC : 240 return bigDecimalComparator; 241 default : 242 return objectComparator; 243 } 244 case DATE : case TIME : case TIMESTAMP : 245 return objectComparator; 246 case CHARACTER : case VARCHAR : case LONGVARCHAR : case CHAR : case CHARACTERVARYING : case CHARVARYING : 247 switch(type2){ 248 case CHARACTER : case VARCHAR : case LONGVARCHAR : case CHAR : case CHARACTERVARYING : case CHARVARYING : 249 if(collator != null) 250 return new CTusjohDpmmbupsDpnqbsbups(collator); 251 if(caseSensitive) 252 return sensitiveStringComparator; 253 return stringComparator; 254 default : 255 throw new DException("DSE87",new Object []{StaticClass.getDataTypeName(type1), StaticClass.getDataTypeName(type2)}); 256 } 257 default : 258 throw new DException("DSE87",new Object []{StaticClass.getDataTypeName(type1), StaticClass.getDataTypeName(type2)}); 259 } 260 } 261 } 262 | Popular Tags |