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 }