use of com.dexels.navajo.document.types.Money in project navajo by Dexels.
the class ASTMulNode method interpret.
private Operand interpret(Operand ao, Operand bo) {
Object a = ao.value;
Object b = bo.value;
if (a instanceof Integer) {
int inta = (Integer) a;
if (b instanceof Integer) {
return Operand.ofInteger(inta * (Integer) b);
} else if (b instanceof Long) {
return Operand.ofLong(inta * (Long) b);
} else if (b instanceof Double) {
return Operand.ofFloat(inta * (Double) b);
}
} else if (a instanceof Long) {
long longa = (Long) a;
if (b instanceof Integer) {
return Operand.ofLong(longa * (Integer) b);
} else if (b instanceof Long) {
return Operand.ofLong(longa * (Long) b);
} else if (b instanceof Double) {
return Operand.ofFloat(longa * (Double) b);
}
} else if (a instanceof Double) {
double doublea = (Double) a;
if (b instanceof Integer) {
return Operand.ofFloat(doublea * (Integer) b);
} else if (b instanceof Long) {
return Operand.ofFloat(doublea * (Long) b);
} else if (b instanceof Double) {
return Operand.ofFloat(doublea * (Double) b);
}
} else if (a instanceof Money || b instanceof Money) {
return Operand.ofMoney(new Money(Utils.getDoubleValue(a) * Utils.getDoubleValue(b)));
} else if (a instanceof Percentage || b instanceof Percentage) {
return Operand.ofPercentage(new Percentage(Utils.getDoubleValue(a) * Utils.getDoubleValue(b)));
} else if ((a instanceof String) || (b instanceof String)) {
throw new TMLExpressionException("Multiplication not defined for String values");
}
return Operand.NULL;
}
use of com.dexels.navajo.document.types.Money in project navajo by Dexels.
the class Utils method add.
/**
* Generic method to add two objects.
*/
public static final Object add(Object a, Object b, String expression) {
if ((a == null) && (b == null)) {
return null;
} else if (a == null) {
return b;
} else if (b == null) {
return a;
}
if ((a instanceof String) || (b instanceof String)) {
String sA = Utils.getStringValue(a);
String sB = Utils.getStringValue(b);
return sA + sB;
} else if ((a instanceof DatePattern || a instanceof Date) && (b instanceof DatePattern || b instanceof Date)) {
DatePattern dp1 = null;
DatePattern dp2 = null;
if (a instanceof Date) {
dp1 = DatePattern.parseDatePattern((Date) a);
} else {
dp1 = (DatePattern) a;
}
if (b instanceof Date) {
dp2 = DatePattern.parseDatePattern((Date) b);
} else {
dp2 = (DatePattern) b;
}
dp1.add(dp2);
return dp1.getDate();
} else if ((a instanceof Money) || (b instanceof Money)) {
if (!(a instanceof Money || a instanceof Integer || a instanceof Long || a instanceof Double))
throw new TMLExpressionException("Invalid argument for operation: " + a.getClass() + ", expression: " + expression);
if (!(b instanceof Money || b instanceof Integer || b instanceof Long || b instanceof Double))
throw new TMLExpressionException("Invalid argument for operation: " + b.getClass() + ", expression: " + expression);
Money arg1 = (a instanceof Money ? (Money) a : new Money(a));
Money arg2 = (b instanceof Money ? (Money) b : new Money(b));
return new Money(arg1.doubleValue() + arg2.doubleValue());
} else if ((a instanceof Percentage) || (b instanceof Percentage)) {
if (!(a instanceof Percentage || a instanceof Integer || a instanceof Long || a instanceof Double))
throw new TMLExpressionException("Invalid argument for operation: " + a.getClass() + ", expression: " + expression);
if (!(b instanceof Percentage || b instanceof Integer || b instanceof Long || b instanceof Double))
throw new TMLExpressionException("Invalid argument for operation: " + b.getClass() + ", expression: " + expression);
Percentage arg1 = (a instanceof Percentage ? (Percentage) a : new Percentage(a));
Percentage arg2 = (b instanceof Percentage ? (Percentage) b : new Percentage(b));
return new Percentage(arg1.doubleValue() + arg2.doubleValue());
} else if ((a instanceof ClockTime && b instanceof DatePattern)) {
DatePattern dp1 = DatePattern.parseDatePattern(((ClockTime) a).dateValue());
DatePattern dp2 = (DatePattern) b;
dp1.add(dp2);
return new ClockTime(dp1.getDate());
} else if ((b instanceof ClockTime && a instanceof DatePattern)) {
DatePattern dp1 = DatePattern.parseDatePattern(((ClockTime) b).dateValue());
DatePattern dp2 = (DatePattern) a;
dp1.add(dp2);
return new ClockTime(dp1.getDate());
} else if ((a instanceof ClockTime && b instanceof ClockTime)) {
DatePattern dp1 = DatePattern.parseDatePattern(((ClockTime) a).dateValue());
DatePattern dp2 = DatePattern.parseDatePattern(((ClockTime) b).dateValue());
dp1.add(dp2);
return new ClockTime(dp1.getDate());
} else if ((a instanceof Boolean && b instanceof Boolean)) {
Boolean ba = (Boolean) a;
Boolean bb = (Boolean) b;
return Integer.valueOf((ba.booleanValue() ? 1 : 0) + (bb.booleanValue() ? 1 : 0));
} else if (a instanceof Integer) {
int inta = (Integer) a;
if (b instanceof Integer) {
return inta + (Integer) b;
} else if (b instanceof Long) {
return inta + (Long) b;
} else if (b instanceof Double) {
return inta + (Double) b;
}
} else if (a instanceof Long) {
long longa = (Long) a;
if (b instanceof Integer) {
return longa + (Integer) b;
} else if (b instanceof Long) {
return longa + (Long) b;
} else if (b instanceof Double) {
return longa + (Double) b;
}
} else if (a instanceof Double) {
double doublea = (Double) a;
if (b instanceof Integer) {
return doublea + (Integer) b;
} else if (b instanceof Long) {
return doublea + (Long) b;
} else if (b instanceof Double) {
return doublea + (Double) b;
}
}
throw new TMLExpressionException("Addition: Unknown type. " + " expression: " + expression);
}
use of com.dexels.navajo.document.types.Money in project navajo by Dexels.
the class TestCompiledMoneyExpression method testAddWithMoney.
@Test
public void testAddWithMoney() {
Operand result;
result = Expression.evaluate("ToMoney(15) + ToMoney(10)", null, null, null);
Assert.assertEquals(new Money(25), result.value);
result = Expression.evaluate("15 + ToMoney(10)", null, null, null);
Assert.assertEquals(new Money(25), result.value);
result = Expression.evaluate("ToMoney(15) + 10", null, null, null);
Assert.assertEquals(new Money(25), result.value);
result = Expression.evaluate("ToLong(15) + ToMoney(10)", null, null, null);
Assert.assertEquals(new Money(25), result.value);
result = Expression.evaluate("ToMoney(15) + ToLong(10)", null, null, null);
Assert.assertEquals(new Money(25), result.value);
result = Expression.evaluate("15.0 + ToMoney(10)", null, null, null);
Assert.assertEquals(new Money(25), result.value);
result = Expression.evaluate("ToMoney(15) + 10.0", null, null, null);
Assert.assertEquals(new Money(25), result.value);
}
use of com.dexels.navajo.document.types.Money in project navajo by Dexels.
the class ExpressionTest method testExpressionMoney.
@Test
public void testExpressionMoney() throws Exception {
boolean eq = Utils.equals(new Money(), null, "<unknown>");
assertTrue(eq);
}
use of com.dexels.navajo.document.types.Money in project navajo by Dexels.
the class UtilsMoneyTest method testSubtractIntegerAndMoney.
@Test
public void testSubtractIntegerAndMoney() {
Integer a = 15;
Money b = new Money(10);
Money result = (Money) Utils.subtract(a, b, "15 - ToMoney(10)");
assertEquals(new Money(5), result);
}
Aggregations