1 package xuml.tools.model.compiler.runtime.query;
2
3 import xuml.tools.model.compiler.runtime.Entity;
4
5 public abstract class NumericExpression<T extends Entity<T>> {
6
7 public NumericExpression<T> plus(NumericExpression<T> e) {
8 return new BinaryNumericExpression<T>(this, BinaryNumericOperator.PLUS, e);
9 }
10
11 public NumericExpression<T> plus(Number e) {
12 return new BinaryNumericExpression<T>(this, BinaryNumericOperator.PLUS,
13 new NumericConstant<T>(e));
14 }
15
16 public NumericExpression<T> minus(NumericExpression<T> e) {
17 return new BinaryNumericExpression<T>(this, BinaryNumericOperator.MINUS, e);
18 }
19
20 public NumericExpression<T> minus(Number e) {
21 return new BinaryNumericExpression<T>(this, BinaryNumericOperator.MINUS,
22 new NumericConstant<T>(e));
23 }
24
25 public NumericExpression<T> times(NumericExpression<T> e) {
26 return new BinaryNumericExpression<T>(this, BinaryNumericOperator.TIMES, e);
27 }
28
29 public NumericExpression<T> times(Number e) {
30 return new BinaryNumericExpression<T>(this, BinaryNumericOperator.TIMES,
31 new NumericConstant<T>(e));
32 }
33
34 public NumericExpression<T> divide(NumericExpression<T> e) {
35 return new BinaryNumericExpression<T>(this, BinaryNumericOperator.DIVIDE, e);
36 }
37
38 public NumericExpression<T> divide(Number e) {
39 return new BinaryNumericExpression<T>(this, BinaryNumericOperator.DIVIDE,
40 new NumericConstant<T>(e));
41 }
42
43 public BooleanExpression<T> eq(NumericExpression<T> e) {
44 return new NumericComparison<T>(this, NumericComparisonOperator.EQ, e);
45 }
46
47 public BooleanExpression<T> eq(Number e) {
48 return new NumericComparison<T>(this, NumericComparisonOperator.EQ,
49 new NumericConstant<T>(e));
50 }
51
52 public BooleanExpression<T> neq(NumericExpression<T> e) {
53 return new NumericComparison<T>(this, NumericComparisonOperator.NEQ, e);
54 }
55
56 public BooleanExpression<T> neq(Number e) {
57 return new NumericComparison<T>(this, NumericComparisonOperator.NEQ,
58 new NumericConstant<T>(e));
59 }
60
61 public BooleanExpression<T> gt(NumericExpression<T> e) {
62 return new NumericComparison<T>(this, NumericComparisonOperator.GT, e);
63 }
64
65 public BooleanExpression<T> gt(Number e) {
66 return new NumericComparison<T>(this, NumericComparisonOperator.GT,
67 new NumericConstant<T>(e));
68 }
69
70 public BooleanExpression<T> gte(NumericExpression<T> e) {
71 return new NumericComparison<T>(this, NumericComparisonOperator.GTE, e);
72 }
73
74 public BooleanExpression<T> gte(Number e) {
75 return new NumericComparison<T>(this, NumericComparisonOperator.GTE,
76 new NumericConstant<T>(e));
77 }
78
79 public BooleanExpression<T> lt(NumericExpression<T> e) {
80 return new NumericComparison<T>(this, NumericComparisonOperator.LT, e);
81 }
82
83 public BooleanExpression<T> lt(Number e) {
84 return new NumericComparison<T>(this, NumericComparisonOperator.LT,
85 new NumericConstant<T>(e));
86 }
87
88 public BooleanExpression<T> lte(NumericExpression<T> e) {
89 return new NumericComparison<T>(this, NumericComparisonOperator.LTE, e);
90 }
91
92 public BooleanExpression<T> lte(Number e) {
93 return new NumericComparison<T>(this, NumericComparisonOperator.LTE,
94 new NumericConstant<T>(e));
95 }
96 }