@Test public void testAdd() { assertEquals(BigDecimal.valueOf(10.0), NumberFieldActions.add(new Add(), Arrays.asList(new BigDecimal[] { BigDecimal.valueOf(1), BigDecimal.valueOf(2), BigDecimal.valueOf(3), BigDecimal.valueOf(4) }))); assertEquals(10.0, NumberFieldActions.add(new Add(), Arrays.asList(1.0, 2.0, 3.0, 4.0))); assertEquals(10L, NumberFieldActions.add(new Add(), Arrays.asList(1, 2, 3, 4))); assertEquals(0, NumberFieldActions.add(new Add(), null)); assertEquals(10L, NumberFieldActions.add(new Add(), Arrays.asList(null, 1, 2, 3, null, 4, null))); }
@AtlasActionProcessor public static Number add(Add action, List<Number> inputs) { if (inputs == null) { return 0; } Number sum = 0L; for (Object entry : inputs) { if (entry instanceof Number) { if (sum instanceof BigDecimal) { sum = ((BigDecimal) sum).add(BigDecimal.valueOf(((Number) entry).doubleValue())); } else if (entry instanceof BigDecimal) { sum = BigDecimal.valueOf(sum.doubleValue()).add((BigDecimal) entry); } else if (requiresDoubleResult(sum) || requiresDoubleResult(entry)) { sum = sum.doubleValue() + ((Number) entry).doubleValue(); } else { sum = sum.longValue() + ((Number) entry).longValue(); } } else { warnIgnoringValue("Add", entry); } } return sum; }
NumberFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static Number add(Add action, List<Number> inputs) { if (inputs == null) { return 0; } Number sum = 0L; for (Object entry : inputs) { if (entry instanceof Number) { if (sum instanceof BigDecimal) { sum = ((BigDecimal) sum).add(BigDecimal.valueOf(((Number) entry).doubleValue())); } else if (entry instanceof BigDecimal) { sum = BigDecimal.valueOf(sum.doubleValue()).add((BigDecimal) entry); } else if (requiresDoubleResult(sum) || requiresDoubleResult(entry)) { sum = sum.doubleValue() + ((Number) entry).doubleValue(); } else { sum = sum.longValue() + ((Number) entry).longValue(); } } else { warnIgnoringValue("Add", entry); } } return sum; } }
NumberFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static Number add(Add action, List<Number> inputs) { if (inputs == null) { return 0; } Number sum = 0L; for (Object entry : inputs) { if (entry instanceof Number) { if (sum instanceof BigDecimal) { sum = ((BigDecimal) sum).add(BigDecimal.valueOf(((Number) entry).doubleValue())); } else if (entry instanceof BigDecimal) { sum = BigDecimal.valueOf(sum.doubleValue()).add((BigDecimal) entry); } else if (requiresDoubleResult(sum) || requiresDoubleResult(entry)) { sum = sum.doubleValue() + ((Number) entry).doubleValue(); } else { sum = sum.longValue() + ((Number) entry).longValue(); } } else { warnIgnoringValue("Add", entry); } } return sum; }  }
NumberFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static Number add(Add action, List<Number> inputs) { if (inputs == null) { return 0; } Number sum = 0L; for (Object entry : inputs) { if (entry instanceof Number) { if (sum instanceof BigDecimal) { sum = ((BigDecimal) sum).add(BigDecimal.valueOf(((Number) entry).doubleValue())); } else if (entry instanceof BigDecimal) { sum = BigDecimal.valueOf(sum.doubleValue()).add((BigDecimal) entry); } else if (requiresDoubleResult(sum) || requiresDoubleResult(entry)) { sum = sum.doubleValue() + ((Number) entry).doubleValue(); } else { sum = sum.longValue() + ((Number) entry).longValue(); } } else { warnIgnoringValue("Add", entry); } } return sum; }  @AtlasActionProcessor static Number absoluteValue(AbsoluteValue action, Number input); @AtlasActionProcessor static Number add(Add action, List<Number> inputs); @AtlasActionProcessor static Number average(Average action, List<Number> inputs); @AtlasActionProcessor static Number ceiling(Ceiling action, Number input); @AtlasActionProcessor static Number convertMassUnit(ConvertMassUnit convertMassUnit, Number input); @AtlasActionProcessor static Number convertDistanceUnit(ConvertDistanceUnit convertDistanceUnit, Number input); @AtlasActionProcessor static Number convertAreaUnit(ConvertAreaUnit convertAreaUnit, Number input); @AtlasActionProcessor static Number convertVolumeUnit(ConvertVolumeUnit convertVolumeUnit, Number input); @AtlasActionProcessor static Number divide(Divide divide, List<Number> inputs); @AtlasActionProcessor static Number floor(Floor floor, Number input); @AtlasActionProcessor static Number maximum(Maximum maximum, List<Number> inputs); @AtlasActionProcessor static Number minimum(Minimum minimum, List<Number> inputs); @AtlasActionProcessor static Number multiply(Multiply multiply, List<Number> inputs); @AtlasActionProcessor static Number round(Round action, Number input); @AtlasActionProcessor static Number subtract(Subtract subtract, List<Number> inputs); }
NumberFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static Number add(Add action, List<Number> inputs) { if (inputs == null) { return 0; } Number sum = 0L; for (Object entry : inputs) { if (entry instanceof Number) { if (sum instanceof BigDecimal) { sum = ((BigDecimal) sum).add(BigDecimal.valueOf(((Number) entry).doubleValue())); } else if (entry instanceof BigDecimal) { sum = BigDecimal.valueOf(sum.doubleValue()).add((BigDecimal) entry); } else if (requiresDoubleResult(sum) || requiresDoubleResult(entry)) { sum = sum.doubleValue() + ((Number) entry).doubleValue(); } else { sum = sum.longValue() + ((Number) entry).longValue(); } } else { warnIgnoringValue("Add", entry); } } return sum; }  @AtlasActionProcessor static Number absoluteValue(AbsoluteValue action, Number input); @AtlasActionProcessor static Number add(Add action, List<Number> inputs); @AtlasActionProcessor static Number average(Average action, List<Number> inputs); @AtlasActionProcessor static Number ceiling(Ceiling action, Number input); @AtlasActionProcessor static Number convertMassUnit(ConvertMassUnit convertMassUnit, Number input); @AtlasActionProcessor static Number convertDistanceUnit(ConvertDistanceUnit convertDistanceUnit, Number input); @AtlasActionProcessor static Number convertAreaUnit(ConvertAreaUnit convertAreaUnit, Number input); @AtlasActionProcessor static Number convertVolumeUnit(ConvertVolumeUnit convertVolumeUnit, Number input); @AtlasActionProcessor static Number divide(Divide divide, List<Number> inputs); @AtlasActionProcessor static Number floor(Floor floor, Number input); @AtlasActionProcessor static Number maximum(Maximum maximum, List<Number> inputs); @AtlasActionProcessor static Number minimum(Minimum minimum, List<Number> inputs); @AtlasActionProcessor static Number multiply(Multiply multiply, List<Number> inputs); @AtlasActionProcessor static Number round(Round action, Number input); @AtlasActionProcessor static Number subtract(Subtract subtract, List<Number> inputs);  }