1 33 package smallsql.database; 34 35 import java.sql.*; 36 37 38 45 46 abstract class ExpressionFunction extends Expression { 47 48 Expression param1; 49 Expression param2; 50 Expression param3; 51 Expression param4; 52 53 ExpressionFunction(){ 54 super(FUNCTION); 55 } 56 57 abstract int getFunction(); 59 60 byte[] getBytes() throws Exception { 61 return ExpressionValue.getBytes(getObject(), getDataType()); 62 } 63 64 void setParams( Expression[] params ){ 65 super.setParams( params ); 66 if(params.length >0) param1 = params[0] ; 67 if(params.length >1) param2 = params[1] ; 68 if(params.length >2) param3 = params[2] ; 69 if(params.length >3) param4 = params[3] ; 70 } 71 72 final void setParamAt( Expression param, int idx){ 73 switch(idx){ 74 case 0: 75 param1 = param; 76 break; 77 case 1: 78 param2 = param; 79 break; 80 case 2: 81 param3 = param; 82 break; 83 case 3: 84 param4 = param; 85 break; 86 } 87 super.setParamAt( param, idx ); 88 } 89 90 91 94 public boolean equals(Object expr){ 95 if(!super.equals(expr)) return false; 96 if(!(expr instanceof ExpressionFunction)) return false; 97 return ((ExpressionFunction)expr).getFunction() == getFunction(); 98 } 99 100 101 105 SQLException createUnspportedDataType( int dataType ){ 106 return Utils.createSQLException("Unsupported data type '" + 107 SQLTokenizer.getKeyWord(dataType) + 108 "' for function " + 109 SQLTokenizer.getKeyWord(getFunction()) ); 110 } 111 112 116 SQLException createUnspportedConversion( int dataType ){ 117 return Utils.createSQLException("Unsupported conversion to data type '" + 118 SQLTokenizer.getKeyWord(dataType) + 119 "' for function " + 120 SQLTokenizer.getKeyWord(getFunction()) ); 121 } 122 123 124 125 } | Popular Tags |