1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.batch.sample.domain.order.internal.valang;
18
19 import java.math.BigDecimal;
20 import java.util.List;
21
22 import org.springframework.batch.sample.domain.order.LineItem;
23 import org.springmodules.validation.valang.functions.AbstractFunction;
24 import org.springmodules.validation.valang.functions.Function;
25
26
27
28
29
30
31 public class ValidateShippingPricesFunction extends AbstractFunction {
32 private static final BigDecimal BD_MIN = new BigDecimal(0.0);
33 private static final BigDecimal BD_MAX = new BigDecimal(99999999.99);
34
35 public ValidateShippingPricesFunction(Function[] arguments, int line, int column) {
36 super(arguments, line, column);
37 definedExactNumberOfArguments(1);
38 }
39
40
41
42
43 @SuppressWarnings("unchecked")
44 protected Object doGetResult(Object target) throws Exception {
45 List<LineItem> lineItems = (List<LineItem>) getArguments()[0].getResult(target);
46
47 for (LineItem item : lineItems) {
48
49 if ((BD_MIN.compareTo(item.getShippingPrice()) > 0)
50 || (BD_MAX.compareTo(item.getShippingPrice()) < 0)) {
51 return Boolean.FALSE;
52 }
53 }
54
55 return Boolean.TRUE;
56 }
57 }