1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.expreval.expr;
22
23 import org.apache.expreval.expr.node.BooleanValue;
24 import org.apache.expreval.expr.node.ByteValue;
25 import org.apache.expreval.expr.node.DateValue;
26 import org.apache.expreval.expr.node.NumberValue;
27 import org.apache.expreval.expr.node.ObjectValue;
28 import org.apache.expreval.expr.node.StringValue;
29
30 public enum ExpressionType {
31
32 BOOLEANCASE(new FunctionTypeSignature(BooleanValue.class)),
33 STRINGCASE(new FunctionTypeSignature(StringValue.class)),
34 DATECASE(new FunctionTypeSignature(DateValue.class)),
35 NUMBERCASE(new FunctionTypeSignature(NumberValue.class)),
36
37 BOOLEANCASEWHEN(new FunctionTypeSignature(BooleanValue.class, BooleanValue.class, BooleanValue.class)),
38 STRINGCASEWHEN(new FunctionTypeSignature(StringValue.class, BooleanValue.class, StringValue.class)),
39 DATECASEWHEN(new FunctionTypeSignature(DateValue.class, BooleanValue.class, DateValue.class)),
40 NUMBERCASEWHEN(new FunctionTypeSignature(NumberValue.class, BooleanValue.class, NumberValue.class)),
41
42 BOOLEANCASEELSE(new FunctionTypeSignature(BooleanValue.class, BooleanValue.class)),
43 STRINGCASEELSE(new FunctionTypeSignature(StringValue.class, StringValue.class)),
44 DATECASEELSE(new FunctionTypeSignature(DateValue.class, BooleanValue.class, DateValue.class)),
45 NUMBERCASEELSE(new FunctionTypeSignature(NumberValue.class, BooleanValue.class, NumberValue.class)),
46
47 BOOLEANIFTHEN(new FunctionTypeSignature(BooleanValue.class, BooleanValue.class, BooleanValue.class, BooleanValue.class)),
48 BYTEIFTHEN(new FunctionTypeSignature(ByteValue.class, BooleanValue.class, ByteValue.class, ByteValue.class)),
49 STRINGIFTHEN(new FunctionTypeSignature(StringValue.class, BooleanValue.class, StringValue.class, StringValue.class)),
50 DATEIFTHEN(new FunctionTypeSignature(DateValue.class, BooleanValue.class, DateValue.class, DateValue.class)),
51 NUMBERIFTHEN(new FunctionTypeSignature(NumberValue.class, BooleanValue.class, NumberValue.class, NumberValue.class)),
52
53 STRINGCALCULATION(new FunctionTypeSignature(StringValue.class, StringValue.class, StringValue.class)),
54 DATECALCULATION(new FunctionTypeSignature(DateValue.class, DateValue.class, DateValue.class)),
55 NUMBERCALCULATION(new FunctionTypeSignature(NumberValue.class, NumberValue.class, NumberValue.class)),
56
57 BYTEBETWEEN(new FunctionTypeSignature(BooleanValue.class, ByteValue.class, ByteValue.class, ByteValue.class)),
58 STRINGBETWEEN(new FunctionTypeSignature(BooleanValue.class, StringValue.class, StringValue.class, StringValue.class)),
59 DATEBETWEEN(new FunctionTypeSignature(BooleanValue.class, DateValue.class, DateValue.class, DateValue.class)),
60 NUMBERBETWEEN(new FunctionTypeSignature(BooleanValue.class, NumberValue.class, NumberValue.class, NumberValue.class)),
61
62 BOOLEANNULL(new FunctionTypeSignature(BooleanValue.class, BooleanValue.class)),
63 BYTENULL(new FunctionTypeSignature(BooleanValue.class, ByteValue.class)),
64 STRINGNULL(new FunctionTypeSignature(BooleanValue.class, StringValue.class)),
65 OBJECTNULL(new FunctionTypeSignature(BooleanValue.class, ObjectValue.class)),
66 DATENULL(new FunctionTypeSignature(BooleanValue.class, DateValue.class)),
67 NUMBERNULL(new FunctionTypeSignature(BooleanValue.class, NumberValue.class)),
68
69 STRINGPATTERN(new FunctionTypeSignature(BooleanValue.class, StringValue.class, StringValue.class)),
70
71
72 INSTMT(new FunctionTypeSignature(BooleanValue.class));
73
74 private final FunctionTypeSignature typeSignature;
75
76 ExpressionType(final FunctionTypeSignature typeSignature) {
77 this.typeSignature = typeSignature;
78 }
79
80 public FunctionTypeSignature getTypeSignature() {
81 return typeSignature;
82 }
83 }