3
public abstract class InternalType {
5
public final static InternalType UNKNOWN = new InternalType(-1) {
6
public Object getArgument(int argIndex, UDFCallback callback) {
7
// I'm thinking that this should throw.
12
public final static InternalType STRING_TYPE = new InternalType(0) {
13
public Object getArgument(int argIndex, UDFCallback callback) {
14
return callback.getStringArgument(argIndex);
18
public final static InternalType REAL_TYPE = new InternalType(1) {
19
public Object getArgument(int argIndex, UDFCallback callback) {
20
return new Double(callback.getDoubleArgument(argIndex));
24
public final static InternalType INTEGER_TYPE = new InternalType(2) {
25
public Object getArgument(int argIndex, UDFCallback callback) {
26
return new Long(callback.getLongArgument(argIndex));
30
public final static InternalType DECIMAL_TYPE = new InternalType(3) {
31
public Object getArgument(int argIndex, UDFCallback callback) {
32
return callback.getBigDecimalArgument(argIndex);
36
public final int typeCode;
38
private InternalType(int typeCode) {
39
this.typeCode = typeCode;
42
public abstract Object getArgument(int argIndex, UDFCallback callback);
44
public static InternalType get(int typeCode) throws UDFException {
45
if (typeCode == UNKNOWN.typeCode)
47
if (typeCode == STRING_TYPE.typeCode)
49
if (typeCode == REAL_TYPE.typeCode)
51
if (typeCode == INTEGER_TYPE.typeCode)
53
if (typeCode == DECIMAL_TYPE.typeCode)
55
throw new UDFException("Bad or illegal typeCode");